diff --git a/DEPS b/DEPS
index 85dd6ce..c9eae12 100644
--- a/DEPS
+++ b/DEPS
@@ -121,11 +121,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': '569dda7216cda3f096677df29ee787e44ddb0be0',
+  'skia_revision': '1a0126f61a9867a97a1c05972e6142c296d3e7de',
   # 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': '8aa4af2f9d67491825b354b6c7207ed47e0595f5',
+  'v8_revision': 'b2d4354186e3e44425b94f1bea9cf0f1e1bc60c3',
   # 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.
@@ -133,7 +133,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'cf9383ed325c2833f809377d29cafd0e735a1d4c',
+  'angle_revision': '91d469aae06381ec1608975536a81288fa119df3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling build tools
   # and whatever else without interference from each other.
@@ -185,7 +185,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': 'da7318dd0eeb291214442bd53cd71a13447b8fed',
+  'catapult_revision': '8af4b4b644430445f8f5b31047f85cf06058c23d',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -233,7 +233,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'spv_tools_revision': '453b7c85c8fde99251028125a19cd3a20a1a758b',
+  'spv_tools_revision': '37861ac106027220fa327bd088d1635c352fb5f0',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -694,7 +694,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '387002d1535da658f3dc7a55ad7815c2256d36f5',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'da18f31f960fc44382cb333d91b07058e07ddc07',
       'condition': 'checkout_linux',
   },
 
@@ -1217,7 +1217,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'db52df17f0d012983dc281e4864c71485a86bd0e',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '63470298753ad575ae21b00bf9da14c023709617',
+    Var('webrtc_git') + '/src.git' + '@' + 'a34d7766c56ae5e648c1db91edd380069f2300d6',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1258,7 +1258,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@87ab0aef9c54e1f465a400a87ed8324d64de8b98',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@7b80b951e0bf9a55999b4c4acf51f0d121e8d006',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/browser/net_network_service/android_stream_reader_url_loader_unittest.cc b/android_webview/browser/net_network_service/android_stream_reader_url_loader_unittest.cc
index 22a7a2a..42a72ff 100644
--- a/android_webview/browser/net_network_service/android_stream_reader_url_loader_unittest.cc
+++ b/android_webview/browser/net_network_service/android_stream_reader_url_loader_unittest.cc
@@ -100,7 +100,6 @@
 
   std::unique_ptr<android_webview::InputStream> OpenInputStream(
       JNIEnv* env) override {
-    EXPECT_TRUE(!thread_checker_.CalledOnValidThread());
     return std::move(input_stream_);
   }
 
diff --git a/ash/app_list/views/search_result_answer_card_view.cc b/ash/app_list/views/search_result_answer_card_view.cc
index f9b6643..557117d 100644
--- a/ash/app_list/views/search_result_answer_card_view.cc
+++ b/ash/app_list/views/search_result_answer_card_view.cc
@@ -189,7 +189,6 @@
 
   void OnFocus() override {
     ScrollRectToVisible(GetLocalBounds());
-    NotifyAccessibilityEvent(ax::mojom::Event::kSelection, true);
     SetBackgroundHighlighted(true);
   }
 
diff --git a/ash/app_list/views/search_result_tile_item_view.cc b/ash/app_list/views/search_result_tile_item_view.cc
index 7cb925f..79397825 100644
--- a/ash/app_list/views/search_result_tile_item_view.cc
+++ b/ash/app_list/views/search_result_tile_item_view.cc
@@ -283,7 +283,6 @@
   }
   SetBackgroundHighlighted(true);
   UpdateBackgroundColor();
-  NotifyAccessibilityEvent(ax::mojom::Event::kSelection, true);
 }
 
 void SearchResultTileItemView::OnBlur() {
diff --git a/ash/app_list/views/search_result_view.cc b/ash/app_list/views/search_result_view.cc
index 9fc2d7a..b4ae13d9 100644
--- a/ash/app_list/views/search_result_view.cc
+++ b/ash/app_list/views/search_result_view.cc
@@ -338,7 +338,6 @@
 
 void SearchResultView::OnFocus() {
   ScrollRectToVisible(GetLocalBounds());
-  NotifyAccessibilityEvent(ax::mojom::Event::kSelection, true);
   SetBackgroundHighlighted(true);
   selected_ = true;
   actions_view_->UpdateButtonsOnStateChanged();
diff --git a/ash/display/screen_ash.cc b/ash/display/screen_ash.cc
index 0637ebf..9578af9 100644
--- a/ash/display/screen_ash.cc
+++ b/ash/display/screen_ash.cc
@@ -130,8 +130,13 @@
     // Windows. Check for this first.
     aura::WindowTreeHostMus* window_tree_host_mus =
         aura::WindowTreeHostMus::ForWindow(window);
-    if (window_tree_host_mus)
-      return window_tree_host_mus->GetDisplay();
+    if (window_tree_host_mus) {
+      // WindowTreeHostMus::GetDisplay() can return an invalid display (i.e.
+      // with ID == |kInvalidDisplayID|) if that display is being removed. Use
+      // the primary display instead.
+      const auto display = window_tree_host_mus->GetDisplay();
+      return display.is_valid() ? display : GetPrimaryDisplay();
+    }
   }
 
   const aura::Window* root_window = window->GetRootWindow();
diff --git a/ash/public/cpp/app_list/app_list_config.cc b/ash/public/cpp/app_list/app_list_config.cc
index 9f94cb9d..b5b1974 100644
--- a/ash/public/cpp/app_list/app_list_config.cc
+++ b/ash/public/cpp/app_list/app_list_config.cc
@@ -73,7 +73,7 @@
       all_apps_opacity_start_px_(8.0f),
       all_apps_opacity_end_px_(144.0f),
       search_result_title_font_style_(ui::ResourceBundle::BaseFont),
-      search_tile_height_(90) {}
+      search_tile_height_(92) {}
 
 AppListConfig::~AppListConfig() = default;
 
diff --git a/ash/public/cpp/manifest.cc b/ash/public/cpp/manifest.cc
index 03989db..f3120b3 100644
--- a/ash/public/cpp/manifest.cc
+++ b/ash/public/cpp/manifest.cc
@@ -112,6 +112,7 @@
           .RequireCapability(content::mojom::kServiceName, "navigation")
           .RequireCapability(data_decoder::mojom::kServiceName, "image_decoder")
           .RequireCapability(mojom::kPrefConnectorServiceName, "pref_connector")
+          .RequireCapability(viz::mojom::kVizServiceName, "ozone")
           .RequireCapability(viz::mojom::kVizServiceName, "viz_host")
           .RequireCapability(catalog::mojom::kServiceName, "directory")
           .RequireCapability(ws::mojom::kServiceName, "ozone")
diff --git a/ash/shelf/app_list_button.cc b/ash/shelf/app_list_button.cc
index 4518a40e..6e7e8111 100644
--- a/ash/shelf/app_list_button.cc
+++ b/ash/shelf/app_list_button.cc
@@ -65,6 +65,7 @@
   DCHECK(shelf_);
   Shell::Get()->app_list_controller()->AddObserver(this);
   Shell::Get()->session_controller()->AddObserver(this);
+  Shell::Get()->tablet_mode_controller()->AddObserver(this);
 
   Shell::Get()->voice_interaction_controller()->AddLocalObserver(this);
   SetAccessibleName(
@@ -82,10 +83,12 @@
 }
 
 AppListButton::~AppListButton() {
-  // AppListController is destroyed early when Shell is being destroyed, it may
-  // not exist.
+  // AppListController and TabletModeController are destroyed early when Shell
+  // is being destroyed, they may not exist.
   if (Shell::Get()->app_list_controller())
     Shell::Get()->app_list_controller()->RemoveObserver(this);
+  if (Shell::Get()->tablet_mode_controller())
+    Shell::Get()->tablet_mode_controller()->RemoveObserver(this);
   Shell::Get()->session_controller()->RemoveObserver(this);
   Shell::Get()->voice_interaction_controller()->RemoveLocalObserver(this);
 }
@@ -306,6 +309,10 @@
   }
 }
 
+void AppListButton::OnTabletModeStarted() {
+  AnimateInkDrop(views::InkDropState::DEACTIVATED, nullptr);
+}
+
 void AppListButton::StartVoiceInteractionAnimation() {
   assistant_overlay_->StartAnimation(false);
 }
diff --git a/ash/shelf/app_list_button.h b/ash/shelf/app_list_button.h
index 7efd923..ff97f082 100644
--- a/ash/shelf/app_list_button.h
+++ b/ash/shelf/app_list_button.h
@@ -13,6 +13,7 @@
 #include "ash/public/interfaces/voice_interaction_controller.mojom.h"
 #include "ash/session/session_observer.h"
 #include "ash/shelf/shelf_control_button.h"
+#include "ash/wm/tablet_mode/tablet_mode_observer.h"
 #include "base/macros.h"
 #include "third_party/skia/include/core/SkColor.h"
 
@@ -30,6 +31,7 @@
 class ASH_EXPORT AppListButton : public ShelfControlButton,
                                  public AppListControllerObserver,
                                  public SessionObserver,
+                                 public TabletModeObserver,
                                  public DefaultVoiceInteractionObserver {
  public:
   AppListButton(ShelfView* shelf_view, Shelf* shelf);
@@ -61,6 +63,9 @@
   // SessionObserver:
   void OnActiveUserSessionChanged(const AccountId& account_id) override;
 
+  // TabletModeObserver:
+  void OnTabletModeStarted() override;
+
   void StartVoiceInteractionAnimation();
 
   // Whether the voice interaction style should be used.
diff --git a/ash/wm/overview/overview_item.cc b/ash/wm/overview/overview_item.cc
index bdf65e3..28992bf 100644
--- a/ash/wm/overview/overview_item.cc
+++ b/ash/wm/overview/overview_item.cc
@@ -622,7 +622,7 @@
   // 6) this overview item is in animation.
   bool should_show = true;
   OverviewController* overview_controller = Shell::Get()->overview_controller();
-  if (!overview_controller->IsSelecting() ||
+  if (!overview_controller || !overview_controller->IsSelecting() ||
       overview_grid_->window_list().size() > 10 ||
       overview_controller->IsInStartAnimation() || is_being_dragged_ ||
       overview_grid_->IsDropTargetWindow(GetWindow()) ||
diff --git a/ash/wm/splitview/split_view_divider.cc b/ash/wm/splitview/split_view_divider.cc
index 8e0cef5d..c0243b1 100644
--- a/ash/wm/splitview/split_view_divider.cc
+++ b/ash/wm/splitview/split_view_divider.cc
@@ -54,7 +54,7 @@
 
 // The distance to the divider edge in which a touch gesture will be considered
 // as a valid event on the divider.
-constexpr int kDividerEdgeInsetForTouch = 5;
+constexpr int kDividerEdgeInsetForTouch = 8;
 
 // The window targeter that is installed on the always on top container window
 // when the split view mode is active.
diff --git a/base/base_paths_win.cc b/base/base_paths_win.cc
index e7e5d1f9..83d572b 100644
--- a/base/base_paths_win.cc
+++ b/base/base_paths_win.cc
@@ -10,6 +10,7 @@
 #include "base/environment.h"
 #include "base/files/file_path.h"
 #include "base/path_service.h"
+#include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/current_module.h"
 #include "base/win/scoped_co_mem.h"
@@ -25,37 +26,38 @@
   // designed for it either, with the exception of GetTempPath (but other
   // things will surely break if the temp path is too long, so we don't bother
   // handling it.
-  wchar_t system_buffer[MAX_PATH];
+  char16 system_buffer[MAX_PATH];
   system_buffer[0] = 0;
+  wchar_t* wsystem_buffer = wdata(system_buffer);
 
   FilePath cur;
   switch (key) {
     case base::FILE_EXE:
-      if (GetModuleFileName(NULL, system_buffer, MAX_PATH) == 0)
+      if (GetModuleFileName(NULL, wsystem_buffer, MAX_PATH) == 0)
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::FILE_MODULE: {
       // the resource containing module is assumed to be the one that
       // this code lives in, whether that's a dll or exe
-      if (GetModuleFileName(CURRENT_MODULE(), system_buffer, MAX_PATH) == 0)
+      if (GetModuleFileName(CURRENT_MODULE(), wsystem_buffer, MAX_PATH) == 0)
         return false;
       cur = FilePath(system_buffer);
       break;
     }
     case base::DIR_WINDOWS:
-      GetWindowsDirectory(system_buffer, MAX_PATH);
+      GetWindowsDirectory(wsystem_buffer, MAX_PATH);
       cur = FilePath(system_buffer);
       break;
     case base::DIR_SYSTEM:
-      GetSystemDirectory(system_buffer, MAX_PATH);
+      GetSystemDirectory(wsystem_buffer, MAX_PATH);
       cur = FilePath(system_buffer);
       break;
     case base::DIR_PROGRAM_FILESX86:
       if (base::win::OSInfo::GetInstance()->architecture() !=
           base::win::OSInfo::X86_ARCHITECTURE) {
         if (FAILED(SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, NULL,
-                                   SHGFP_TYPE_CURRENT, system_buffer)))
+                                   SHGFP_TYPE_CURRENT, wsystem_buffer)))
           return false;
         cur = FilePath(system_buffer);
         break;
@@ -64,7 +66,7 @@
       FALLTHROUGH;
     case base::DIR_PROGRAM_FILES:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
@@ -85,43 +87,43 @@
       }
 #endif
       if (FAILED(SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::DIR_IE_INTERNET_CACHE:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_INTERNET_CACHE, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::DIR_COMMON_START_MENU:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_COMMON_PROGRAMS, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::DIR_START_MENU:
-      if (FAILED(SHGetFolderPath(NULL, CSIDL_PROGRAMS, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+      if (FAILED(SHGetFolderPath(NULL, CSIDL_PROGRAMS, NULL, SHGFP_TYPE_CURRENT,
+                                 wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::DIR_APP_DATA:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT,
-                                 system_buffer)))
+                                 wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::DIR_COMMON_APP_DATA:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
     case base::DIR_LOCAL_APP_DATA:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer)))
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer)))
         return false;
       cur = FilePath(system_buffer);
       break;
@@ -142,19 +144,19 @@
                                       &path_buf)))
         return false;
 
-      cur = FilePath(string16(path_buf));
+      cur = FilePath(CastToStringPiece16(path_buf.get()));
       break;
     }
     case base::DIR_USER_DESKTOP:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_DESKTOPDIRECTORY, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer))) {
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer))) {
         return false;
       }
       cur = FilePath(system_buffer);
       break;
     case base::DIR_COMMON_DESKTOP:
       if (FAILED(SHGetFolderPath(NULL, CSIDL_COMMON_DESKTOPDIRECTORY, NULL,
-                                 SHGFP_TYPE_CURRENT, system_buffer))) {
+                                 SHGFP_TYPE_CURRENT, wsystem_buffer))) {
         return false;
       }
       cur = FilePath(system_buffer);
@@ -185,8 +187,8 @@
                 .Append(FILE_PATH_LITERAL("ImplicitAppShortcuts"));
       break;
     case base::DIR_WINDOWS_FONTS:
-      if (FAILED(SHGetFolderPath(
-              NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, system_buffer))) {
+      if (FAILED(SHGetFolderPath(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT,
+                                 wsystem_buffer))) {
         return false;
       }
       cur = FilePath(system_buffer);
diff --git a/base/bind_internal.h b/base/bind_internal.h
index 4a48df3..deda4e7 100644
--- a/base/bind_internal.h
+++ b/base/bind_internal.h
@@ -7,6 +7,7 @@
 
 #include <stddef.h>
 
+#include <tuple>
 #include <type_traits>
 #include <utility>
 
diff --git a/base/command_line.cc b/base/command_line.cc
index b6ec514..7b1b881a 100644
--- a/base/command_line.cc
+++ b/base/command_line.cc
@@ -7,6 +7,7 @@
 #include <algorithm>
 #include <ostream>
 
+#include "base/containers/span.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
 #include "base/stl_util.h"
@@ -36,12 +37,13 @@
 // By putting slash last, we can control whether it is treaded as a switch
 // value by changing the value of switch_prefix_count to be one less than
 // the array size.
-const CommandLine::CharType* const kSwitchPrefixes[] = {L"--", L"-", L"/"};
+const CommandLine::CharType* const kSwitchPrefixes[] = {
+    FILE_PATH_LITERAL("--"), FILE_PATH_LITERAL("-"), FILE_PATH_LITERAL("/")};
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
 // Unixes don't use slash as a switch.
 const CommandLine::CharType* const kSwitchPrefixes[] = {"--", "-"};
 #endif
-size_t switch_prefix_count = base::size(kSwitchPrefixes);
+size_t switch_prefix_count = size(kSwitchPrefixes);
 
 size_t GetSwitchPrefixLength(const CommandLine::StringType& string) {
   for (size_t i = 0; i < switch_prefix_count; ++i) {
@@ -106,18 +108,18 @@
                                     bool quote_placeholders) {
   // We follow the quoting rules of CommandLineToArgvW.
   // http://msdn.microsoft.com/en-us/library/17w5ykft.aspx
-  string16 quotable_chars(L" \\\"");
+  string16 quotable_chars(FILE_PATH_LITERAL(" \\\""));
   // We may also be required to quote '%', which is commonly used in a command
   // line as a placeholder. (It may be substituted for a string with spaces.)
   if (quote_placeholders)
-    quotable_chars.push_back(L'%');
+    quotable_chars.push_back('%');
   if (arg.find_first_of(quotable_chars) == string16::npos) {
     // No quoting necessary.
     return arg;
   }
 
   string16 out;
-  out.push_back(L'"');
+  out.push_back('"');
   for (size_t i = 0; i < arg.size(); ++i) {
     if (arg[i] == '\\') {
       // Find the extent of this run of backslashes.
@@ -185,8 +187,10 @@
 // static
 void CommandLine::set_slash_is_not_a_switch() {
   // The last switch prefix should be slash, so adjust the size to skip it.
-  DCHECK_EQ(wcscmp(kSwitchPrefixes[base::size(kSwitchPrefixes) - 1], L"/"), 0);
-  switch_prefix_count = base::size(kSwitchPrefixes) - 1;
+  // Leverage StringPiece16::operator== to do a deep comparison.
+  DCHECK_EQ(*std::rbegin(kSwitchPrefixes),
+            StringPiece16(FILE_PATH_LITERAL("/")));
+  switch_prefix_count = size(kSwitchPrefixes) - 1;
 }
 
 // static
@@ -194,7 +198,7 @@
   DCHECK(!current_process_commandline_);
   current_process_commandline_ = new CommandLine(NO_PROGRAM);
   // On Windows we need to convert the command line arguments to string16.
-  base::CommandLine::StringVector argv_vector;
+  CommandLine::StringVector argv_vector;
   for (int i = 0; i < argc; ++i)
     argv_vector.push_back(UTF8ToUTF16(argv[i]));
   current_process_commandline_->InitFromArgv(argv_vector);
@@ -212,7 +216,8 @@
 
   current_process_commandline_ = new CommandLine(NO_PROGRAM);
 #if defined(OS_WIN)
-  current_process_commandline_->ParseFromString(::GetCommandLineW());
+  current_process_commandline_->ParseFromString(
+      WideToUTF16(::GetCommandLineW()));
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
   current_process_commandline_->InitFromArgv(argc, argv);
 #else
@@ -279,17 +284,17 @@
 #endif
 }
 
-bool CommandLine::HasSwitch(const base::StringPiece& switch_string) const {
+bool CommandLine::HasSwitch(const StringPiece& switch_string) const {
   DCHECK_EQ(ToLowerASCII(switch_string), switch_string);
   return ContainsKey(switches_, switch_string);
 }
 
 bool CommandLine::HasSwitch(const char switch_constant[]) const {
-  return HasSwitch(base::StringPiece(switch_constant));
+  return HasSwitch(StringPiece(switch_constant));
 }
 
 std::string CommandLine::GetSwitchValueASCII(
-    const base::StringPiece& switch_string) const {
+    const StringPiece& switch_string) const {
   StringType value = GetSwitchValueNative(switch_string);
   if (!IsStringASCII(value)) {
     DLOG(WARNING) << "Value of switch (" << switch_string << ") must be ASCII.";
@@ -303,12 +308,12 @@
 }
 
 FilePath CommandLine::GetSwitchValuePath(
-    const base::StringPiece& switch_string) const {
+    const StringPiece& switch_string) const {
   return FilePath(GetSwitchValueNative(switch_string));
 }
 
 CommandLine::StringType CommandLine::GetSwitchValueNative(
-    const base::StringPiece& switch_string) const {
+    const StringPiece& switch_string) const {
   DCHECK_EQ(ToLowerASCII(switch_string), switch_string);
   auto result = switches_.find(switch_string);
   return result == switches_.end() ? StringType() : result->second;
@@ -385,7 +390,7 @@
 void CommandLine::AppendArg(const std::string& value) {
 #if defined(OS_WIN)
   DCHECK(IsStringUTF8(value));
-  AppendArgNative(UTF8ToWide(value));
+  AppendArgNative(UTF8ToUTF16(value));
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
   AppendArgNative(value);
 #else
@@ -434,11 +439,14 @@
 
   int num_args = 0;
   wchar_t** args = NULL;
-  args = ::CommandLineToArgvW(command_line_string.c_str(), &num_args);
+  args = ::CommandLineToArgvW(wdata(command_line_string), &num_args);
 
   DPLOG_IF(FATAL, !args) << "CommandLineToArgvW failed on command line: "
                          << UTF16ToUTF8(command_line);
-  InitFromArgv(num_args, args);
+  StringVector argv;
+  for (auto* arg : make_span(args, num_args))
+    argv.push_back(WideToUTF16(arg));
+  InitFromArgv(argv);
   LocalFree(args);
 }
 #endif
diff --git a/base/command_line_unittest.cc b/base/command_line_unittest.cc
index b52f735..aa69cd9 100644
--- a/base/command_line_unittest.cc
+++ b/base/command_line_unittest.cc
@@ -10,6 +10,7 @@
 
 #include "base/files/file_path.h"
 #include "base/stl_util.h"
+#include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -47,7 +48,7 @@
       FILE_PATH_LITERAL("--not-a-switch"),
       FILE_PATH_LITERAL("\"in the time of submarines...\""),
       FILE_PATH_LITERAL("unquoted arg-with-space")};
-  CommandLine cl(base::size(argv), argv);
+  CommandLine cl(size(argv), argv);
 
   EXPECT_FALSE(cl.GetCommandLineString().empty());
   EXPECT_FALSE(cl.HasSwitch("cruller"));
@@ -106,14 +107,14 @@
 
 TEST(CommandLineTest, CommandLineFromString) {
 #if defined(OS_WIN)
-  CommandLine cl = CommandLine::FromString(
-      L"program --foo= -bAr  /Spaetzel=pierogi /Baz flim "
-      L"--other-switches=\"--dog=canine --cat=feline\" "
-      L"-spaetzle=Crepe   -=loosevalue  FLAN "
-      L"--input-translation=\"45\"--output-rotation "
-      L"--quotes=" + kTrickyQuoted + L" "
-      L"-- -- --not-a-switch "
-      L"\"in the time of submarines...\"");
+  CommandLine cl = CommandLine::FromString(StrCat(
+      {STRING16_LITERAL("program --foo= -bAr  /Spaetzel=pierogi /Baz flim "),
+       STRING16_LITERAL("--other-switches=\"--dog=canine --cat=feline\" "),
+       STRING16_LITERAL("-spaetzle=Crepe   -=loosevalue  FLAN "),
+       STRING16_LITERAL("--input-translation=\"45\"--output-rotation "),
+       STRING16_LITERAL("--quotes="), kTrickyQuoted, STRING16_LITERAL(" "),
+       STRING16_LITERAL("-- -- --not-a-switch "),
+       STRING16_LITERAL("\"in the time of submarines...\"")}));
 
   EXPECT_FALSE(cl.GetCommandLineString().empty());
   EXPECT_FALSE(cl.HasSwitch("cruller"));
@@ -170,7 +171,7 @@
 // Tests behavior with an empty input string.
 TEST(CommandLineTest, EmptyString) {
 #if defined(OS_WIN)
-  CommandLine cl_from_string = CommandLine::FromString(L"");
+  CommandLine cl_from_string = CommandLine::FromString(string16());
   EXPECT_TRUE(cl_from_string.GetCommandLineString().empty());
   EXPECT_TRUE(cl_from_string.GetProgram().empty());
   EXPECT_EQ(1U, cl_from_string.argv().size());
@@ -290,16 +291,17 @@
   EXPECT_EQ(value5, cl.GetSwitchValueNative(switch5));
 
 #if defined(OS_WIN)
-  EXPECT_EQ(L"Program "
-            L"--switch1 "
-            L"--switch2=value "
-            L"--switch3=\"a value with spaces\" "
-            L"--switch4=\"\\\"a value with quotes\\\"\" "
-            // Even though the switches are unique, appending can add repeat
-            // switches to argv.
-            L"--quotes=\"\\\"a value with quotes\\\"\" "
-            L"--quotes=\"" + kTrickyQuoted + L"\"",
-            cl.GetCommandLineString());
+  EXPECT_EQ(
+      StrCat({STRING16_LITERAL("Program "), STRING16_LITERAL("--switch1 "),
+              STRING16_LITERAL("--switch2=value "),
+              STRING16_LITERAL("--switch3=\"a value with spaces\" "),
+              STRING16_LITERAL("--switch4=\"\\\"a value with quotes\\\"\" "),
+              // Even though the switches are unique, appending can add
+              // repeat switches to argv.
+              STRING16_LITERAL("--quotes=\"\\\"a value with quotes\\\"\" "),
+              STRING16_LITERAL("--quotes=\""), kTrickyQuoted,
+              STRING16_LITERAL("\"")}),
+      cl.GetCommandLineString());
 #endif
 }
 
@@ -307,7 +309,7 @@
  const CommandLine::CharType* raw_argv[] = { FILE_PATH_LITERAL("prog"),
                                              FILE_PATH_LITERAL("--"),
                                              FILE_PATH_LITERAL("--arg1") };
- CommandLine cl(base::size(raw_argv), raw_argv);
+ CommandLine cl(size(raw_argv), raw_argv);
 
  cl.AppendSwitch("switch1");
  cl.AppendSwitchASCII("switch2", "foo");
@@ -355,12 +357,12 @@
 // against regressions.
 TEST(CommandLineTest, ProgramQuotes) {
   // Check that quotes are not added for paths without spaces.
-  const FilePath kProgram(L"Program");
+  const FilePath kProgram(STRING16_LITERAL("Program"));
   CommandLine cl_program(kProgram);
   EXPECT_EQ(kProgram.value(), cl_program.GetProgram().value());
   EXPECT_EQ(kProgram.value(), cl_program.GetCommandLineString());
 
-  const FilePath kProgramPath(L"Program Path");
+  const FilePath kProgramPath(STRING16_LITERAL("Program Path"));
 
   // Check that quotes are not returned from GetProgram().
   CommandLine cl_program_path(kProgramPath);
@@ -368,12 +370,13 @@
 
   // Check that quotes are added to command line string paths containing spaces.
   CommandLine::StringType cmd_string(cl_program_path.GetCommandLineString());
-  EXPECT_EQ(L"\"Program Path\"", cmd_string);
+  EXPECT_EQ(STRING16_LITERAL("\"Program Path\""), cmd_string);
 
   // Check the optional quoting of placeholders in programs.
-  CommandLine cl_quote_placeholder(FilePath(L"%1"));
-  EXPECT_EQ(L"%1", cl_quote_placeholder.GetCommandLineString());
-  EXPECT_EQ(L"\"%1\"",
+  CommandLine cl_quote_placeholder(FilePath(STRING16_LITERAL("%1")));
+  EXPECT_EQ(STRING16_LITERAL("%1"),
+            cl_quote_placeholder.GetCommandLineString());
+  EXPECT_EQ(STRING16_LITERAL("\"%1\""),
             cl_quote_placeholder.GetCommandLineStringWithPlaceholders());
 }
 #endif
diff --git a/base/debug/stack_trace_win.cc b/base/debug/stack_trace_win.cc
index 018a986..e179a53 100644
--- a/base/debug/stack_trace_win.cc
+++ b/base/debug/stack_trace_win.cc
@@ -16,6 +16,8 @@
 #include "base/logging.h"
 #include "base/memory/singleton.h"
 #include "base/stl_util.h"
+#include "base/strings/strcat.h"
+#include "base/strings/string_util.h"
 #include "base/synchronization/lock.h"
 #include "build/build_config.h"
 
@@ -110,8 +112,8 @@
 }
 
 FilePath GetExePath() {
-  wchar_t system_buffer[MAX_PATH];
-  GetModuleFileName(NULL, system_buffer, MAX_PATH);
+  char16 system_buffer[MAX_PATH];
+  GetModuleFileName(NULL, wdata(system_buffer), MAX_PATH);
   system_buffer[MAX_PATH - 1] = L'\0';
   return FilePath(system_buffer);
 }
@@ -140,22 +142,21 @@
   // into the executable will get off. To still retrieve symbols correctly,
   // add the directory of the executable to symbol search path.
   // All following errors are non-fatal.
-  const size_t kSymbolsArraySize = 1024;
-  std::unique_ptr<wchar_t[]> symbols_path(new wchar_t[kSymbolsArraySize]);
+  static constexpr size_t kSymbolsArraySize = 1024;
+  char16 symbols_path[kSymbolsArraySize];
 
   // Note: The below function takes buffer size as number of characters,
   // not number of bytes!
-  if (!SymGetSearchPathW(GetCurrentProcess(),
-                         symbols_path.get(),
+  if (!SymGetSearchPathW(GetCurrentProcess(), wdata(symbols_path),
                          kSymbolsArraySize)) {
     g_init_error = GetLastError();
     DLOG(WARNING) << "SymGetSearchPath failed: " << g_init_error;
     return false;
   }
 
-  std::wstring new_path(std::wstring(symbols_path.get()) +
-                        L";" + GetExePath().DirName().value());
-  if (!SymSetSearchPathW(GetCurrentProcess(), new_path.c_str())) {
+  string16 new_path = StrCat(
+      {symbols_path, STRING16_LITERAL(";"), GetExePath().DirName().value()});
+  if (!SymSetSearchPathW(GetCurrentProcess(), wdata(new_path))) {
     g_init_error = GetLastError();
     DLOG(WARNING) << "SymSetSearchPath failed." << g_init_error;
     return false;
@@ -202,7 +203,7 @@
                            size_t count,
                            std::ostream* os,
                            const char* prefix_string) {
-    base::AutoLock lock(lock_);
+    AutoLock lock(lock_);
 
     for (size_t i = 0; (i < count) && os->good(); ++i) {
       const int kMaxNameLength = 256;
@@ -257,7 +258,7 @@
     InitializeSymbols();
   }
 
-  base::Lock lock_;
+  Lock lock_;
   DISALLOW_COPY_AND_ASSIGN(SymbolContext);
 };
 
@@ -325,11 +326,11 @@
   while (StackWalk64(machine_type, GetCurrentProcess(), GetCurrentThread(),
                      &stack_frame, &context_copy, NULL,
                      &SymFunctionTableAccess64, &SymGetModuleBase64, NULL) &&
-         count_ < base::size(trace_)) {
+         count_ < size(trace_)) {
     trace_[count_++] = reinterpret_cast<void*>(stack_frame.AddrPC.Offset);
   }
 
-  for (size_t i = count_; i < base::size(trace_); ++i)
+  for (size_t i = count_; i < size(trace_); ++i)
     trace_[i] = NULL;
 }
 
diff --git a/base/environment.cc b/base/environment.cc
index 9a56135c..3113fe2d 100644
--- a/base/environment.cc
+++ b/base/environment.cc
@@ -101,6 +101,7 @@
   }
 };
 
+#if defined(OS_POSIX) || defined(OS_FUCHSIA)
 // Parses a null-terminated input string of an environment block. The key is
 // placed into the given string, and the total length of the line, including
 // the terminating null, is returned.
@@ -117,6 +118,7 @@
     cur++;
   return cur + 1;
 }
+#endif
 
 }  // namespace
 
@@ -141,47 +143,7 @@
   return GetVar(variable_name, nullptr);
 }
 
-#if defined(OS_WIN)
-
-string16 AlterEnvironment(const wchar_t* env,
-                          const EnvironmentMap& changes) {
-  string16 result;
-
-  // First copy all unmodified values to the output.
-  size_t cur_env = 0;
-  string16 key;
-  while (env[cur_env]) {
-    const wchar_t* line = &env[cur_env];
-    size_t line_length = ParseEnvLine(line, &key);
-
-    // Keep only values not specified in the change vector.
-    EnvironmentMap::const_iterator found_change = changes.find(key);
-    if (found_change == changes.end())
-      result.append(line, line_length);
-
-    cur_env += line_length;
-  }
-
-  // Now append all modified and new values.
-  for (EnvironmentMap::const_iterator i = changes.begin();
-       i != changes.end(); ++i) {
-    if (!i->second.empty()) {
-      result.append(i->first);
-      result.push_back('=');
-      result.append(i->second);
-      result.push_back(0);
-    }
-  }
-
-  // An additional null marks the end of the list. We always need a double-null
-  // in case nothing was added above.
-  if (result.empty())
-    result.push_back(0);
-  result.push_back(0);
-  return result;
-}
-
-#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+#if defined(OS_POSIX) || defined(OS_FUCHSIA)
 
 std::unique_ptr<char* []> AlterEnvironment(const char* const* const env,
                                            const EnvironmentMap& changes) {
@@ -232,6 +194,6 @@
   return result;
 }
 
-#endif  // OS_WIN
+#endif  // OS_POSIX || OS_FUCHSIA
 
 }  // namespace base
diff --git a/base/environment.h b/base/environment.h
index e842ab08..37288e8 100644
--- a/base/environment.h
+++ b/base/environment.h
@@ -53,26 +53,17 @@
 typedef std::map<NativeEnvironmentString, NativeEnvironmentString>
     EnvironmentMap;
 
-// Returns a modified environment vector constructed from the given environment
-// and the list of changes given in |changes|. Each key in the environment is
-// matched against the first element of the pairs. In the event of a match, the
-// value is replaced by the second of the pair, unless the second is empty, in
-// which case the key-value is removed.
-//
-// This Windows version takes and returns a Windows-style environment block
-// which is a concatenated list of null-terminated 16-bit strings. The end is
-// marked by a double-null terminator. The size of the returned string will
-// include the terminators.
-BASE_EXPORT string16 AlterEnvironment(const wchar_t* env,
-                                      const EnvironmentMap& changes);
-
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
 
 typedef std::string NativeEnvironmentString;
 typedef std::map<NativeEnvironmentString, NativeEnvironmentString>
     EnvironmentMap;
 
-// See general comments for the Windows version above.
+// Returns a modified environment vector constructed from the given environment
+// and the list of changes given in |changes|. Each key in the environment is
+// matched against the first element of the pairs. In the event of a match, the
+// value is replaced by the second of the pair, unless the second is empty, in
+// which case the key-value is removed.
 //
 // This Posix version takes and returns a Posix-style environment block, which
 // is a null-terminated list of pointers to null-terminated strings. The
diff --git a/base/environment_unittest.cc b/base/environment_unittest.cc
index 7cb8c9c..1746b95 100644
--- a/base/environment_unittest.cc
+++ b/base/environment_unittest.cc
@@ -99,42 +99,7 @@
   EXPECT_FALSE(env->HasVar(kFooUpper));
 }
 
-#if defined(OS_WIN)
-
-TEST_F(EnvironmentTest, AlterEnvironment) {
-  const wchar_t empty[] = L"\0";
-  const wchar_t a2[] = L"A=2\0";
-  EnvironmentMap changes;
-  string16 e;
-
-  e = AlterEnvironment(empty, changes);
-  EXPECT_EQ(0, e[0]);
-
-  changes[L"A"] = L"1";
-  e = AlterEnvironment(empty, changes);
-  EXPECT_EQ(string16(L"A=1\0\0", 5), e);
-
-  changes.clear();
-  changes[L"A"] = string16();
-  e = AlterEnvironment(empty, changes);
-  EXPECT_EQ(string16(L"\0\0", 2), e);
-
-  changes.clear();
-  e = AlterEnvironment(a2, changes);
-  EXPECT_EQ(string16(L"A=2\0\0", 5), e);
-
-  changes.clear();
-  changes[L"A"] = L"1";
-  e = AlterEnvironment(a2, changes);
-  EXPECT_EQ(string16(L"A=1\0\0", 5), e);
-
-  changes.clear();
-  changes[L"A"] = string16();
-  e = AlterEnvironment(a2, changes);
-  EXPECT_EQ(string16(L"\0\0", 2), e);
-}
-
-#else
+#if !defined(OS_WIN)
 
 TEST_F(EnvironmentTest, AlterEnvironment) {
   const char* const empty[] = {nullptr};
diff --git a/base/file_version_info_win.cc b/base/file_version_info_win.cc
index 7abcd2a7..68162ef 100644
--- a/base/file_version_info_win.cc
+++ b/base/file_version_info_win.cc
@@ -11,6 +11,7 @@
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/stl_util.h"
+#include "base/strings/string_util.h"
 #include "base/threading/scoped_blocking_call.h"
 #include "base/win/resource_util.h"
 
@@ -79,7 +80,7 @@
   base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK);
 
   DWORD dummy;
-  const wchar_t* path = file_path.value().c_str();
+  const wchar_t* path = base::wdata(file_path.value());
   const DWORD length = ::GetFileVersionInfoSize(path, &dummy);
   if (length == 0)
     return nullptr;
@@ -98,71 +99,72 @@
 }
 
 base::string16 FileVersionInfoWin::company_name() {
-  return GetStringValue(L"CompanyName");
+  return GetStringValue(STRING16_LITERAL("CompanyName"));
 }
 
 base::string16 FileVersionInfoWin::company_short_name() {
-  return GetStringValue(L"CompanyShortName");
+  return GetStringValue(STRING16_LITERAL("CompanyShortName"));
 }
 
 base::string16 FileVersionInfoWin::internal_name() {
-  return GetStringValue(L"InternalName");
+  return GetStringValue(STRING16_LITERAL("InternalName"));
 }
 
 base::string16 FileVersionInfoWin::product_name() {
-  return GetStringValue(L"ProductName");
+  return GetStringValue(STRING16_LITERAL("ProductName"));
 }
 
 base::string16 FileVersionInfoWin::product_short_name() {
-  return GetStringValue(L"ProductShortName");
+  return GetStringValue(STRING16_LITERAL("ProductShortName"));
 }
 
 base::string16 FileVersionInfoWin::comments() {
-  return GetStringValue(L"Comments");
+  return GetStringValue(STRING16_LITERAL("Comments"));
 }
 
 base::string16 FileVersionInfoWin::legal_copyright() {
-  return GetStringValue(L"LegalCopyright");
+  return GetStringValue(STRING16_LITERAL("LegalCopyright"));
 }
 
 base::string16 FileVersionInfoWin::product_version() {
-  return GetStringValue(L"ProductVersion");
+  return GetStringValue(STRING16_LITERAL("ProductVersion"));
 }
 
 base::string16 FileVersionInfoWin::file_description() {
-  return GetStringValue(L"FileDescription");
+  return GetStringValue(STRING16_LITERAL("FileDescription"));
 }
 
 base::string16 FileVersionInfoWin::legal_trademarks() {
-  return GetStringValue(L"LegalTrademarks");
+  return GetStringValue(STRING16_LITERAL("LegalTrademarks"));
 }
 
 base::string16 FileVersionInfoWin::private_build() {
-  return GetStringValue(L"PrivateBuild");
+  return GetStringValue(STRING16_LITERAL("PrivateBuild"));
 }
 
 base::string16 FileVersionInfoWin::file_version() {
-  return GetStringValue(L"FileVersion");
+  return GetStringValue(STRING16_LITERAL("FileVersion"));
 }
 
 base::string16 FileVersionInfoWin::original_filename() {
-  return GetStringValue(L"OriginalFilename");
+  return GetStringValue(STRING16_LITERAL("OriginalFilename"));
 }
 
 base::string16 FileVersionInfoWin::special_build() {
-  return GetStringValue(L"SpecialBuild");
+  return GetStringValue(STRING16_LITERAL("SpecialBuild"));
 }
 
 base::string16 FileVersionInfoWin::last_change() {
-  return GetStringValue(L"LastChange");
+  return GetStringValue(STRING16_LITERAL("LastChange"));
 }
 
 bool FileVersionInfoWin::is_official_build() {
-  return (GetStringValue(L"Official Build").compare(L"1") == 0);
+  return GetStringValue(STRING16_LITERAL("Official Build")) ==
+         STRING16_LITERAL("1");
 }
 
-bool FileVersionInfoWin::GetValue(const wchar_t* name,
-                                  std::wstring* value_str) {
+bool FileVersionInfoWin::GetValue(const base::char16* name,
+                                  base::string16* value_str) {
   WORD lang_codepage[8];
   size_t i = 0;
   // Use the language and codepage from the DLL.
@@ -184,24 +186,25 @@
     WORD language = lang_codepage[i++];
     WORD code_page = lang_codepage[i++];
     _snwprintf_s(sub_block, MAX_PATH, MAX_PATH,
-                 L"\\StringFileInfo\\%04x%04x\\%ls", language, code_page, name);
+                 L"\\StringFileInfo\\%04x%04x\\%ls", language, code_page,
+                 base::wdata(name));
     LPVOID value = NULL;
     uint32_t size;
     BOOL r = ::VerQueryValue(data_, sub_block, &value, &size);
     if (r && value) {
-      value_str->assign(static_cast<wchar_t*>(value));
+      value_str->assign(static_cast<base::char16*>(value));
       return true;
     }
   }
   return false;
 }
 
-std::wstring FileVersionInfoWin::GetStringValue(const wchar_t* name) {
-  std::wstring str;
+base::string16 FileVersionInfoWin::GetStringValue(const base::char16* name) {
+  base::string16 str;
   if (GetValue(name, &str))
     return str;
   else
-    return L"";
+    return base::string16();
 }
 
 FileVersionInfoWin::FileVersionInfoWin(std::vector<uint8_t>&& data,
diff --git a/base/file_version_info_win.h b/base/file_version_info_win.h
index 4751db1e..149bff3a 100644
--- a/base/file_version_info_win.h
+++ b/base/file_version_info_win.h
@@ -44,11 +44,11 @@
   bool is_official_build() override;
 
   // Lets you access other properties not covered above.
-  bool GetValue(const wchar_t* name, std::wstring* value);
+  bool GetValue(const base::char16* name, base::string16* value);
 
-  // Similar to GetValue but returns a wstring (empty string if the property
+  // Similar to GetValue but returns a string16 (empty string if the property
   // does not exist).
-  std::wstring GetStringValue(const wchar_t* name);
+  base::string16 GetStringValue(const base::char16* name);
 
   // Get the fixed file info if it exists. Otherwise NULL
   const VS_FIXEDFILEINFO* fixed_file_info() const { return fixed_file_info_; }
diff --git a/base/file_version_info_win_unittest.cc b/base/file_version_info_win_unittest.cc
index 43f7f7ad..fe61d2cb 100644
--- a/base/file_version_info_win_unittest.cc
+++ b/base/file_version_info_win_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/macros.h"
 #include "base/path_service.h"
 #include "base/scoped_native_library.h"
+#include "base/strings/string_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using base::FilePath;
@@ -50,7 +51,7 @@
   explicit FileVersionInfoForModuleFactory(const FilePath& path)
       // Load the library with LOAD_LIBRARY_AS_IMAGE_RESOURCE since it shouldn't
       // be executed.
-      : library_(::LoadLibraryEx(path.value().c_str(),
+      : library_(::LoadLibraryEx(base::wdata(path.value()),
                                  nullptr,
                                  LOAD_LIBRARY_AS_IMAGE_RESOURCE)) {
     EXPECT_TRUE(library_.is_valid());
@@ -77,25 +78,26 @@
 TYPED_TEST_CASE(FileVersionInfoTest, FileVersionInfoFactories);
 
 TYPED_TEST(FileVersionInfoTest, HardCodedProperties) {
-  const wchar_t kDLLName[] = {L"FileVersionInfoTest1.dll"};
+  const base::char16 kDLLName[] = STRING16_LITERAL("FileVersionInfoTest1.dll");
 
-  const wchar_t* const kExpectedValues[15] = {
+  const base::char16* const kExpectedValues[15] = {
       // FileVersionInfoTest.dll
-      L"Goooooogle",                                  // company_name
-      L"Google",                                      // company_short_name
-      L"This is the product name",                    // product_name
-      L"This is the product short name",              // product_short_name
-      L"The Internal Name",                           // internal_name
-      L"4.3.2.1",                                     // product_version
-      L"Private build property",                      // private_build
-      L"Special build property",                      // special_build
-      L"This is a particularly interesting comment",  // comments
-      L"This is the original filename",               // original_filename
-      L"This is my file description",                 // file_description
-      L"1.2.3.4",                                     // file_version
-      L"This is the legal copyright",                 // legal_copyright
-      L"This is the legal trademarks",                // legal_trademarks
-      L"This is the last change",                     // last_change
+      STRING16_LITERAL("Goooooogle"),                      // company_name
+      STRING16_LITERAL("Google"),                          // company_short_name
+      STRING16_LITERAL("This is the product name"),        // product_name
+      STRING16_LITERAL("This is the product short name"),  // product_short_name
+      STRING16_LITERAL("The Internal Name"),               // internal_name
+      STRING16_LITERAL("4.3.2.1"),                         // product_version
+      STRING16_LITERAL("Private build property"),          // private_build
+      STRING16_LITERAL("Special build property"),          // special_build
+      STRING16_LITERAL(
+          "This is a particularly interesting comment"),  // comments
+      STRING16_LITERAL("This is the original filename"),  // original_filename
+      STRING16_LITERAL("This is my file description"),    // file_description
+      STRING16_LITERAL("1.2.3.4"),                        // file_version
+      STRING16_LITERAL("This is the legal copyright"),    // legal_copyright
+      STRING16_LITERAL("This is the legal trademarks"),   // legal_trademarks
+      STRING16_LITERAL("This is the last change"),        // last_change
   };
 
   FilePath dll_path = GetTestDataPath();
@@ -125,10 +127,11 @@
 
 TYPED_TEST(FileVersionInfoTest, IsOfficialBuild) {
   constexpr struct {
-    const wchar_t* const dll_name;
+    const base::char16* const dll_name;
     const bool is_official_build;
   } kTestItems[]{
-      {L"FileVersionInfoTest1.dll", true}, {L"FileVersionInfoTest2.dll", false},
+      {STRING16_LITERAL("FileVersionInfoTest1.dll"), true},
+      {STRING16_LITERAL("FileVersionInfoTest2.dll"), false},
   };
 
   for (const auto& test_item : kTestItems) {
@@ -151,23 +154,33 @@
   ASSERT_TRUE(version_info);
 
   // Test few existing properties.
-  std::wstring str;
+  base::string16 str;
   FileVersionInfoWin* version_info_win =
       static_cast<FileVersionInfoWin*>(version_info.get());
-  EXPECT_TRUE(version_info_win->GetValue(L"Custom prop 1", &str));
-  EXPECT_EQ(L"Un", str);
-  EXPECT_EQ(L"Un", version_info_win->GetStringValue(L"Custom prop 1"));
+  EXPECT_TRUE(
+      version_info_win->GetValue(STRING16_LITERAL("Custom prop 1"), &str));
+  EXPECT_EQ(STRING16_LITERAL("Un"), str);
+  EXPECT_EQ(STRING16_LITERAL("Un"), version_info_win->GetStringValue(
+                                        STRING16_LITERAL("Custom prop 1")));
 
-  EXPECT_TRUE(version_info_win->GetValue(L"Custom prop 2", &str));
-  EXPECT_EQ(L"Deux", str);
-  EXPECT_EQ(L"Deux", version_info_win->GetStringValue(L"Custom prop 2"));
+  EXPECT_TRUE(
+      version_info_win->GetValue(STRING16_LITERAL("Custom prop 2"), &str));
+  EXPECT_EQ(STRING16_LITERAL("Deux"), str);
+  EXPECT_EQ(STRING16_LITERAL("Deux"), version_info_win->GetStringValue(
+                                          STRING16_LITERAL("Custom prop 2")));
 
-  EXPECT_TRUE(version_info_win->GetValue(L"Custom prop 3", &str));
-  EXPECT_EQ(L"1600 Amphitheatre Parkway Mountain View, CA 94043", str);
-  EXPECT_EQ(L"1600 Amphitheatre Parkway Mountain View, CA 94043",
-            version_info_win->GetStringValue(L"Custom prop 3"));
+  EXPECT_TRUE(
+      version_info_win->GetValue(STRING16_LITERAL("Custom prop 3"), &str));
+  EXPECT_EQ(
+      STRING16_LITERAL("1600 Amphitheatre Parkway Mountain View, CA 94043"),
+      str);
+  EXPECT_EQ(
+      STRING16_LITERAL("1600 Amphitheatre Parkway Mountain View, CA 94043"),
+      version_info_win->GetStringValue(STRING16_LITERAL("Custom prop 3")));
 
   // Test an non-existing property.
-  EXPECT_FALSE(version_info_win->GetValue(L"Unknown property", &str));
-  EXPECT_EQ(L"", version_info_win->GetStringValue(L"Unknown property"));
+  EXPECT_FALSE(
+      version_info_win->GetValue(STRING16_LITERAL("Unknown property"), &str));
+  EXPECT_EQ(base::string16(), version_info_win->GetStringValue(
+                                  STRING16_LITERAL("Unknown property")));
 }
diff --git a/base/i18n/file_util_icu.cc b/base/i18n/file_util_icu.cc
index c91aea1a..9785af4 100644
--- a/base/i18n/file_util_icu.cc
+++ b/base/i18n/file_util_icu.cc
@@ -152,8 +152,8 @@
   collator->setStrength(icu::Collator::TERTIARY);
 
 #if defined(OS_WIN)
-  return CompareString16WithCollator(*collator, WideToUTF16(a.value()),
-                                     WideToUTF16(b.value())) == UCOL_LESS;
+  return CompareString16WithCollator(*collator, a.value(), b.value()) ==
+         UCOL_LESS;
 
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
   // On linux, the file system encoding is not defined. We assume
diff --git a/base/i18n/file_util_icu_unittest.cc b/base/i18n/file_util_icu_unittest.cc
index 9d46434..ee4517d7 100644
--- a/base/i18n/file_util_icu_unittest.cc
+++ b/base/i18n/file_util_icu_unittest.cc
@@ -51,6 +51,8 @@
 // characters are given as wide strings since its more convenient to specify
 // unicode characters. For Mac they should be converted to UTF-8.
 static const struct goodbad_pair {
+  // TODO(https://crbug.com/911896): Make these UTF16 literals once
+  // base::string16 is std::u16string.
   const wchar_t* bad_name;
   const wchar_t* good_name;
 } kIllegalCharacterCases[] = {
@@ -87,9 +89,9 @@
 TEST_F(FileUtilICUTest, ReplaceIllegalCharactersInPathTest) {
   for (auto i : kIllegalCharacterCases) {
 #if defined(OS_WIN)
-    std::wstring bad_name(i.bad_name);
+    string16 bad_name(WideToUTF16(i.bad_name));
     ReplaceIllegalCharactersInPath(&bad_name, '-');
-    EXPECT_EQ(i.good_name, bad_name);
+    EXPECT_EQ(WideToUTF16(i.good_name), bad_name);
 #else
     std::string bad_name(WideToUTF8(i.bad_name));
     ReplaceIllegalCharactersInPath(&bad_name, '-');
@@ -126,7 +128,7 @@
 };
 
 TEST_F(FileUtilICUTest, NormalizeFileNameEncoding) {
-  for (size_t i = 0; i < base::size(kNormalizeFileNameEncodingTestCases); i++) {
+  for (size_t i = 0; i < size(kNormalizeFileNameEncodingTestCases); i++) {
     FilePath path(kNormalizeFileNameEncodingTestCases[i].original_path);
     NormalizeFileNameEncoding(&path);
     EXPECT_EQ(FilePath(kNormalizeFileNameEncodingTestCases[i].normalized_path),
diff --git a/base/i18n/icu_string_conversions_unittest.cc b/base/i18n/icu_string_conversions_unittest.cc
index 3b38743..07a8172 100644
--- a/base/i18n/icu_string_conversions_unittest.cc
+++ b/base/i18n/icu_string_conversions_unittest.cc
@@ -33,7 +33,7 @@
 // the C++ 0x UTF-16 literal is well-supported by compilers.
 string16 BuildString16(const wchar_t* s) {
 #if defined(WCHAR_T_IS_UTF16)
-  return string16(s);
+  return WideToUTF16(s);
 #elif defined(WCHAR_T_IS_UTF32)
   string16 u16;
   while (*s != 0) {
diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc
index 4d588c6..224a4b4 100644
--- a/base/i18n/icu_util.cc
+++ b/base/i18n/icu_util.cc
@@ -92,8 +92,8 @@
     return;
   }
 #if defined(OS_ANDROID)
-  int fd = base::android::OpenApkAsset(kAndroidAssetsIcuDataFileName,
-                                       &g_icudtl_region);
+  int fd =
+      android::OpenApkAsset(kAndroidAssetsIcuDataFileName, &g_icudtl_region);
   g_icudtl_pf = fd;
   if (fd != -1) {
     return;
@@ -109,7 +109,7 @@
 #if defined(OS_WIN)
   // TODO(brucedawson): http://crbug.com/445616
   wchar_t tmp_buffer[_MAX_PATH] = {0};
-  wcscpy_s(tmp_buffer, data_path.value().c_str());
+  wcscpy_s(tmp_buffer, wdata(data_path.value()));
   debug::Alias(tmp_buffer);
 #endif
   data_path = data_path.AppendASCII(kIcuDataFileName);
@@ -117,7 +117,7 @@
 #if defined(OS_WIN)
   // TODO(brucedawson): http://crbug.com/445616
   wchar_t tmp_buffer2[_MAX_PATH] = {0};
-  wcscpy_s(tmp_buffer2, data_path.value().c_str());
+  wcscpy_s(tmp_buffer2, wdata(data_path.value()));
   debug::Alias(tmp_buffer2);
 #endif
 
@@ -127,7 +127,7 @@
       SysUTF8ToCFStringRef(kIcuDataFileName));
   FilePath data_path = mac::PathForFrameworkBundleResource(data_file_name);
 #if defined(OS_IOS)
-  FilePath override_data_path = base::ios::FilePathOfEmbeddedICU();
+  FilePath override_data_path = ios::FilePathOfEmbeddedICU();
   if (!override_data_path.empty()) {
     data_path = override_data_path;
   }
@@ -154,7 +154,7 @@
     // TODO(brucedawson): http://crbug.com/445616.
     g_debug_icu_pf_last_error = ::GetLastError();
     g_debug_icu_pf_error_details = file.error_details();
-    wcscpy_s(g_debug_icu_pf_filename, data_path.value().c_str());
+    wcscpy_s(g_debug_icu_pf_filename, wdata(data_path.value()));
   }
 #endif  // OS_WIN
 }
@@ -195,7 +195,7 @@
     // timezone and set the ICU default timezone accordingly in advance of
     // actual use. See crbug.com/722821 and
     // https://ssl.icu-project.org/trac/ticket/13208 .
-    base::string16 timezone_id = base::android::GetDefaultTimeZoneId();
+    string16 timezone_id = android::GetDefaultTimeZoneId();
     icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(
         icu::UnicodeString(FALSE, timezone_id.data(), timezone_id.length())));
   }
diff --git a/base/i18n/rtl_unittest.cc b/base/i18n/rtl_unittest.cc
index 84426b59..de1b1dd2 100644
--- a/base/i18n/rtl_unittest.cc
+++ b/base/i18n/rtl_unittest.cc
@@ -270,7 +270,7 @@
 #if defined(OS_WIN)
     std::wstring win_path(i);
     std::replace(win_path.begin(), win_path.end(), '/', '\\');
-    path = FilePath(win_path);
+    path = FilePath(CastToStringPiece16(win_path));
     std::wstring wrapped_expected =
         std::wstring(L"\x202a") + win_path + L"\x202c";
 #else
diff --git a/base/logging.cc b/base/logging.cc
index d473555..971c2a8 100644
--- a/base/logging.cc
+++ b/base/logging.cc
@@ -135,11 +135,7 @@
 // Which log file to use? This is initialized by InitLogging or
 // will be lazily initialized to the default value when it is
 // first needed.
-#if defined(OS_WIN)
-typedef std::wstring PathString;
-#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
-typedef std::string PathString;
-#endif
+using PathString = base::FilePath::StringType;
 PathString* g_log_file_name = nullptr;
 
 // This file is lazily opened and the handle may be nullptr
@@ -204,7 +200,7 @@
 
 void DeleteFilePath(const PathString& log_name) {
 #if defined(OS_WIN)
-  DeleteFile(log_name.c_str());
+  DeleteFile(base::wdata(log_name));
 #elif defined(OS_NACL)
   // Do nothing; unlink() isn't supported on NaCl.
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
@@ -217,14 +213,14 @@
 PathString GetDefaultLogFile() {
 #if defined(OS_WIN)
   // On Windows we use the same path as the exe.
-  wchar_t module_name[MAX_PATH];
-  GetModuleFileName(nullptr, module_name, MAX_PATH);
+  base::char16 module_name[MAX_PATH];
+  GetModuleFileName(nullptr, base::wdata(module_name), MAX_PATH);
 
   PathString log_name = module_name;
   PathString::size_type last_backslash = log_name.rfind('\\', log_name.size());
   if (last_backslash != PathString::npos)
     log_name.erase(last_backslash + 1);
-  log_name += L"debug.log";
+  log_name += STRING16_LITERAL("debug.log");
   return log_name;
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
   // On other platforms we just use the current directory.
@@ -323,7 +319,7 @@
     // appended to across accesses from multiple threads.
     // https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx
     // https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
-    g_log_file = CreateFile(g_log_file_name->c_str(), FILE_APPEND_DATA,
+    g_log_file = CreateFile(base::wdata(*g_log_file_name), FILE_APPEND_DATA,
                             FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr,
                             OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
     if (g_log_file == INVALID_HANDLE_VALUE || g_log_file == nullptr) {
@@ -333,20 +329,20 @@
       // some consumers of base logging like chrome_elf, etc.
       // Please don't change the code below to use FilePath.
       // try the current directory
-      wchar_t system_buffer[MAX_PATH];
+      base::char16 system_buffer[MAX_PATH];
       system_buffer[0] = 0;
-      DWORD len =
-          ::GetCurrentDirectory(base::size(system_buffer), system_buffer);
+      DWORD len = ::GetCurrentDirectory(base::size(system_buffer),
+                                        base::wdata(system_buffer));
       if (len == 0 || len > base::size(system_buffer))
         return false;
 
       *g_log_file_name = system_buffer;
       // Append a trailing backslash if needed.
       if (g_log_file_name->back() != L'\\')
-        *g_log_file_name += L"\\";
-      *g_log_file_name += L"debug.log";
+        *g_log_file_name += STRING16_LITERAL("\\");
+      *g_log_file_name += STRING16_LITERAL("debug.log");
 
-      g_log_file = CreateFile(g_log_file_name->c_str(), FILE_APPEND_DATA,
+      g_log_file = CreateFile(base::wdata(*g_log_file_name), FILE_APPEND_DATA,
                               FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr,
                               OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
       if (g_log_file == INVALID_HANDLE_VALUE || g_log_file == nullptr) {
@@ -1058,10 +1054,10 @@
   return g_logging_destination & LOG_TO_FILE;
 }
 
-std::wstring GetLogFileFullPath() {
+base::string16 GetLogFileFullPath() {
   if (g_log_file_name)
     return *g_log_file_name;
-  return std::wstring();
+  return base::string16();
 }
 #endif
 
diff --git a/base/logging.h b/base/logging.h
index 67f4632..250239a 100644
--- a/base/logging.h
+++ b/base/logging.h
@@ -162,7 +162,7 @@
 
 // TODO(avi): do we want to do a unification of character types here?
 #if defined(OS_WIN)
-typedef wchar_t PathChar;
+typedef base::char16 PathChar;
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
 typedef char PathChar;
 #endif
@@ -1135,7 +1135,7 @@
 BASE_EXPORT bool IsLoggingToFileEnabled();
 
 // Returns the default log file path.
-BASE_EXPORT std::wstring GetLogFileFullPath();
+BASE_EXPORT base::string16 GetLogFileFullPath();
 #endif
 
 }  // namespace logging
diff --git a/base/memory/platform_shared_memory_region_win.cc b/base/memory/platform_shared_memory_region_win.cc
index 2c865ed..2709bc9 100644
--- a/base/memory/platform_shared_memory_region_win.cc
+++ b/base/memory/platform_shared_memory_region_win.cc
@@ -14,7 +14,9 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/process/process_handle.h"
 #include "base/rand_util.h"
+#include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
+#include "base/strings/utf_string_conversions.h"
 #include "base/win/windows_version.h"
 
 namespace base {
@@ -278,15 +280,15 @@
   }
 
   string16 name;
-  if (base::win::GetVersion() < base::win::VERSION_WIN8_1) {
+  if (win::GetVersion() < win::VERSION_WIN8_1) {
     // Windows < 8.1 ignores DACLs on certain unnamed objects (like shared
     // sections). So, we generate a random name when we need to enforce
     // read-only.
     uint64_t rand_values[4];
     RandBytes(&rand_values, sizeof(rand_values));
-    name = StringPrintf(L"CrSharedMem_%016llx%016llx%016llx%016llx",
-                        rand_values[0], rand_values[1], rand_values[2],
-                        rand_values[3]);
+    name = ASCIIToUTF16(StringPrintf("CrSharedMem_%016llx%016llx%016llx%016llx",
+                                     rand_values[0], rand_values[1],
+                                     rand_values[2], rand_values[3]));
     DCHECK(!name.empty());
   }
 
@@ -294,7 +296,7 @@
   // Ask for the file mapping with reduced permisions to avoid passing the
   // access control permissions granted by default into unpriviledged process.
   HANDLE h = CreateFileMappingWithReducedPermissions(
-      &sa, rounded_size, name.empty() ? nullptr : name.c_str());
+      &sa, rounded_size, name.empty() ? nullptr : wdata(name));
   if (h == nullptr) {
     // The error is logged within CreateFileMappingWithReducedPermissions().
     return {};
diff --git a/base/memory/shared_memory_win.cc b/base/memory/shared_memory_win.cc
index 75497ca..e0ad356 100644
--- a/base/memory/shared_memory_win.cc
+++ b/base/memory/shared_memory_win.cc
@@ -14,6 +14,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/rand_util.h"
+#include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/unguessable_token.h"
@@ -197,8 +198,8 @@
   }
 
   size_t rounded_size = (options.size + kSectionMask) & ~kSectionMask;
-  name_ = options.name_deprecated ?
-      ASCIIToUTF16(*options.name_deprecated) : L"";
+  name_ = options.name_deprecated ? ASCIIToUTF16(*options.name_deprecated)
+                                  : string16();
   SECURITY_ATTRIBUTES sa = {sizeof(sa), nullptr, FALSE};
   SECURITY_DESCRIPTOR sd;
   ACL dacl;
@@ -219,22 +220,22 @@
       return false;
     }
 
-    if (base::win::GetVersion() < base::win::VERSION_WIN8_1) {
+    if (win::GetVersion() < win::VERSION_WIN8_1) {
       // Windows < 8.1 ignores DACLs on certain unnamed objects (like shared
       // sections). So, we generate a random name when we need to enforce
       // read-only.
       uint64_t rand_values[4];
       RandBytes(&rand_values, sizeof(rand_values));
-      name_ = StringPrintf(L"CrSharedMem_%016llx%016llx%016llx%016llx",
-                           rand_values[0], rand_values[1], rand_values[2],
-                           rand_values[3]);
+      name_ = ASCIIToUTF16(StringPrintf(
+          "CrSharedMem_%016llx%016llx%016llx%016llx", rand_values[0],
+          rand_values[1], rand_values[2], rand_values[3]));
       DCHECK(!name_.empty());
     }
   }
 
   shm_ = SharedMemoryHandle(
       CreateFileMappingWithReducedPermissions(
-          &sa, rounded_size, name_.empty() ? nullptr : name_.c_str()),
+          &sa, rounded_size, name_.empty() ? nullptr : wdata(name_)),
       rounded_size, UnguessableToken::Create());
   if (!shm_.IsValid()) {
     // The error is logged within CreateFileMappingWithReducedPermissions().
@@ -285,7 +286,7 @@
   // We pass the size |0|, which is a dummy size and wrong, but otherwise
   // harmless.
   shm_ = SharedMemoryHandle(
-      OpenFileMapping(access, false, name_.empty() ? nullptr : name_.c_str()),
+      OpenFileMapping(access, false, name_.empty() ? nullptr : wdata(name_)),
       0u, UnguessableToken::Create());
   if (!shm_.IsValid())
     return false;
diff --git a/base/native_library_win.cc b/base/native_library_win.cc
index 8282efc..efa333d 100644
--- a/base/native_library_win.cc
+++ b/base/native_library_win.cc
@@ -95,7 +95,7 @@
     // directory as the library may have dependencies on DLLs in this
     // directory.
     module = ::LoadLibraryExW(
-        library_path.value().c_str(), nullptr,
+        wdata(library_path.value()), nullptr,
         LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
     // If LoadLibraryExW succeeds, log this metric and return.
     if (module) {
@@ -122,7 +122,7 @@
       restore_directory = true;
     }
   }
-  module = ::LoadLibraryW(library_path.value().c_str());
+  module = ::LoadLibraryW(wdata(library_path.value()));
 
   // GetLastError() needs to be called immediately after LoadLibraryW call.
   if (!module && error)
diff --git a/base/power_monitor/power_monitor_device_source_win.cc b/base/power_monitor/power_monitor_device_source_win.cc
index 37a4462..53ba53f4 100644
--- a/base/power_monitor/power_monitor_device_source_win.cc
+++ b/base/power_monitor/power_monitor_device_source_win.cc
@@ -8,6 +8,8 @@
 #include "base/power_monitor/power_monitor.h"
 #include "base/power_monitor/power_monitor_source.h"
 #include "base/win/wrapped_window_proc.h"
+#include "base/strings/string16.h"
+#include "base/strings/string_util.h"
 
 namespace base {
 
@@ -17,7 +19,7 @@
 
 namespace {
 
-const wchar_t kWindowClassName[] = L"Base_PowerMessageWindow";
+const char16 kWindowClassName[] = STRING16_LITERAL("Base_PowerMessageWindow");
 
 void ProcessWmPowerBroadcastMessage(WPARAM event_id) {
   PowerMonitorSource::PowerEvent power_event;
@@ -83,14 +85,14 @@
   ATOM clazz = RegisterClassEx(&window_class);
   DCHECK(clazz);
 
-  message_hwnd_ = CreateWindowEx(WS_EX_NOACTIVATE, kWindowClassName,
+  message_hwnd_ = CreateWindowEx(WS_EX_NOACTIVATE, wdata(kWindowClassName),
       NULL, WS_POPUP, 0, 0, 0, 0, NULL, NULL, instance_, NULL);
 }
 
 PowerMonitorDeviceSource::PowerMessageWindow::~PowerMessageWindow() {
   if (message_hwnd_) {
     DestroyWindow(message_hwnd_);
-    UnregisterClass(kWindowClassName, instance_);
+    UnregisterClass(wdata(kWindowClassName), instance_);
   }
 }
 
diff --git a/base/process/launch_win.cc b/base/process/launch_win.cc
index e4225a4e..1abcf38 100644
--- a/base/process/launch_win.cc
+++ b/base/process/launch_win.cc
@@ -22,6 +22,7 @@
 #include "base/logging.h"
 #include "base/metrics/histogram.h"
 #include "base/process/kill.h"
+#include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/win/scoped_handle.h"
@@ -62,8 +63,7 @@
     return false;
   }
 
-  FilePath::StringType writable_command_line_string;
-  writable_command_line_string.assign(cl.data(), cl.size());
+  FilePath::StringType writable_command_line_string(cl);
 
   STARTUPINFO start_info = {};
 
@@ -80,7 +80,7 @@
 
   // Create the child process.
   PROCESS_INFORMATION temp_process_info = {};
-  if (!CreateProcess(nullptr, &writable_command_line_string[0], nullptr,
+  if (!CreateProcess(nullptr, wdata(writable_command_line_string), nullptr,
                      nullptr,
                      TRUE,  // Handles are inherited.
                      0, nullptr, nullptr, &start_info, &temp_process_info)) {
@@ -88,9 +88,8 @@
     return false;
   }
 
-  base::win::ScopedProcessInformation proc_info(temp_process_info);
-  base::debug::GlobalActivityTracker* tracker =
-      base::debug::GlobalActivityTracker::Get();
+  win::ScopedProcessInformation proc_info(temp_process_info);
+  debug::GlobalActivityTracker* tracker = debug::GlobalActivityTracker::Get();
   if (tracker)
     tracker->RecordProcessLaunch(proc_info.process_id(), cl.as_string());
 
@@ -114,12 +113,12 @@
   // Let's wait for the process to finish.
   WaitForSingleObject(proc_info.process_handle(), INFINITE);
 
-  base::TerminationStatus status = GetTerminationStatus(
-      proc_info.process_handle(), exit_code);
-  base::debug::GlobalActivityTracker::RecordProcessExitIfEnabled(
+  TerminationStatus status =
+      GetTerminationStatus(proc_info.process_handle(), exit_code);
+  debug::GlobalActivityTracker::RecordProcessExitIfEnabled(
       proc_info.process_id(), *exit_code);
-  return status != base::TERMINATION_STATUS_PROCESS_CRASHED &&
-         status != base::TERMINATION_STATUS_ABNORMAL_TERMINATION;
+  return status != TERMINATION_STATUS_PROCESS_CRASHED &&
+         status != TERMINATION_STATUS_ABNORMAL_TERMINATION;
 }
 
 }  // namespace
@@ -273,7 +272,7 @@
 
   LPCTSTR current_directory = options.current_directory.empty()
                                   ? nullptr
-                                  : options.current_directory.value().c_str();
+                                  : wdata(options.current_directory.value());
 
   string16 writable_cmdline(cmdline);
   DCHECK(!(flags & CREATE_SUSPENDED))
@@ -290,7 +289,7 @@
     }
 
     BOOL launched = CreateProcessAsUser(
-        options.as_user, nullptr, &writable_cmdline[0], nullptr, nullptr,
+        options.as_user, nullptr, wdata(writable_cmdline), nullptr, nullptr,
         inherit_handles, flags, enviroment_block, current_directory,
         startup_info, &temp_process_info);
     DestroyEnvironmentBlock(enviroment_block);
@@ -300,7 +299,7 @@
       return Process();
     }
   } else {
-    if (!CreateProcess(nullptr, &writable_cmdline[0], nullptr, nullptr,
+    if (!CreateProcess(nullptr, wdata(writable_cmdline), nullptr, nullptr,
                        inherit_handles, flags, nullptr, current_directory,
                        startup_info, &temp_process_info)) {
       DPLOG(ERROR) << "Command line:" << std::endl << UTF16ToUTF8(cmdline)
@@ -308,7 +307,7 @@
       return Process();
     }
   }
-  base::win::ScopedProcessInformation process_info(temp_process_info);
+  win::ScopedProcessInformation process_info(temp_process_info);
 
   if (options.job_handle &&
       !AssignProcessToJobObject(options.job_handle,
@@ -327,7 +326,7 @@
   if (options.wait)
     WaitForSingleObject(process_info.process_handle(), INFINITE);
 
-  base::debug::GlobalActivityTracker::RecordProcessLaunchIfEnabled(
+  debug::GlobalActivityTracker::RecordProcessLaunchIfEnabled(
       process_info.process_id(), cmdline);
   return Process(process_info.TakeProcessHandle());
 }
@@ -342,8 +341,8 @@
   shex_info.fMask = SEE_MASK_NOCLOSEPROCESS;
   shex_info.hwnd = GetActiveWindow();
   shex_info.lpVerb = L"runas";
-  shex_info.lpFile = file.c_str();
-  shex_info.lpParameters = arguments.c_str();
+  shex_info.lpFile = wdata(file);
+  shex_info.lpParameters = wdata(arguments);
   shex_info.lpDirectory = nullptr;
   shex_info.nShow = options.start_hidden ? SW_HIDE : SW_SHOWNORMAL;
   shex_info.hInstApp = nullptr;
@@ -356,7 +355,7 @@
   if (options.wait)
     WaitForSingleObject(shex_info.hProcess, INFINITE);
 
-  base::debug::GlobalActivityTracker::RecordProcessLaunchIfEnabled(
+  debug::GlobalActivityTracker::RecordProcessLaunchIfEnabled(
       GetProcessId(shex_info.hProcess), file, arguments);
   return Process(shex_info.hProcess);
 }
diff --git a/base/process/process_iterator_win.cc b/base/process/process_iterator_win.cc
index 9d5a970..2b642e0 100644
--- a/base/process/process_iterator_win.cc
+++ b/base/process/process_iterator_win.cc
@@ -4,6 +4,8 @@
 
 #include "base/process/process_iterator.h"
 
+#include "base/strings/string_util.h"
+
 namespace base {
 
 ProcessIterator::ProcessIterator(const ProcessFilter* filter)
@@ -34,7 +36,7 @@
 
 bool NamedProcessIterator::IncludeEntry() {
   // Case insensitive.
-  return _wcsicmp(executable_name_.c_str(), entry().exe_file()) == 0 &&
+  return _wcsicmp(wdata(executable_name_), entry().exe_file()) == 0 &&
          ProcessIterator::IncludeEntry();
 }
 
diff --git a/base/sampling_heap_profiler/module_cache_win.cc b/base/sampling_heap_profiler/module_cache_win.cc
index 507029f..060fb3c 100644
--- a/base/sampling_heap_profiler/module_cache_win.cc
+++ b/base/sampling_heap_profiler/module_cache_win.cc
@@ -9,6 +9,7 @@
 
 #include "base/process/process_handle.h"
 #include "base/stl_util.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -47,18 +48,18 @@
   }
 
   FilePath::StringType pdb_filename;
-  if (!base::UTF8ToWide(pdb_file, pdb_file_length, &pdb_filename))
+  if (!UTF8ToUTF16(pdb_file, pdb_file_length, &pdb_filename))
     return;
   *pdb_name = FilePath(std::move(pdb_filename)).BaseName();
 
   const int kGUIDSize = 39;
   string16 buffer;
   int result =
-      ::StringFromGUID2(guid, WriteInto(&buffer, kGUIDSize), kGUIDSize);
+      ::StringFromGUID2(guid, wdata(WriteInto(&buffer, kGUIDSize)), kGUIDSize);
   if (result != kGUIDSize)
     return;
-  RemoveChars(buffer, L"{}-", &buffer);
-  StringAppendF(&buffer, L"%d", age);
+  RemoveChars(buffer, STRING16_LITERAL("{}-"), &buffer);
+  buffer.append(IntToString16(age));
   *build_id = UTF16ToUTF8(buffer);
 }
 
diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc
index fe9f21f6..5fddfcff 100644
--- a/base/strings/string_util_unittest.cc
+++ b/base/strings/string_util_unittest.cc
@@ -234,26 +234,26 @@
 TEST(StringUtilTest, wdata) {
   char16 rw_buffer[10] = {};
   static_assert(std::is_same<wchar_t*, decltype(wdata(rw_buffer))>::value, "");
-  EXPECT_EQ(rw_buffer, wdata(rw_buffer));
+  EXPECT_EQ(static_cast<void*>(rw_buffer), wdata(rw_buffer));
 
   string16 rw_str(10, '\0');
   static_assert(std::is_same<wchar_t*, decltype(wdata(rw_str))>::value, "");
-  EXPECT_EQ(rw_str.data(), wdata(rw_str));
+  EXPECT_EQ(static_cast<const void*>(rw_str.data()), wdata(rw_str));
 
   const char16 ro_buffer[10] = {};
   static_assert(std::is_same<const wchar_t*, decltype(wdata(ro_buffer))>::value,
                 "");
-  EXPECT_EQ(ro_buffer, wdata(ro_buffer));
+  EXPECT_EQ(static_cast<const void*>(ro_buffer), wdata(ro_buffer));
 
   const string16 ro_str(10, '\0');
   static_assert(std::is_same<const wchar_t*, decltype(wdata(ro_str))>::value,
                 "");
-  EXPECT_EQ(ro_str.data(), wdata(ro_str));
+  EXPECT_EQ(static_cast<const void*>(ro_str.data()), wdata(ro_str));
 
   StringPiece16 piece = ro_buffer;
   static_assert(std::is_same<const wchar_t*, decltype(wdata(piece))>::value,
                 "");
-  EXPECT_EQ(piece.data(), wdata(piece));
+  EXPECT_EQ(static_cast<const void*>(piece.data()), wdata(piece));
 }
 #endif  // defined(WCHAR_T_IS_UTF16)
 
@@ -463,28 +463,25 @@
     }
   }
 
+#if defined(WCHAR_T_IS_UTF32)
   {
     const size_t string_length = wchar_ascii.length();
     for (size_t len = 0; len < string_length; ++len) {
       EXPECT_TRUE(IsStringASCII(wchar_ascii.substr(0, len)));
       for (size_t char_pos = 0; char_pos < len; ++char_pos) {
         wchar_ascii[char_pos] |= 0x80;
-        EXPECT_FALSE(
-            IsStringASCII(wchar_ascii.substr(0, len)));
+        EXPECT_FALSE(IsStringASCII(wchar_ascii.substr(0, len)));
         wchar_ascii[char_pos] &= ~0x80;
         wchar_ascii[char_pos] |= 0x100;
-        EXPECT_FALSE(
-            IsStringASCII(wchar_ascii.substr(0, len)));
+        EXPECT_FALSE(IsStringASCII(wchar_ascii.substr(0, len)));
         wchar_ascii[char_pos] &= ~0x100;
-#if defined(WCHAR_T_IS_UTF32)
         wchar_ascii[char_pos] |= 0x10000;
-        EXPECT_FALSE(
-            IsStringASCII(wchar_ascii.substr(0, len)));
+        EXPECT_FALSE(IsStringASCII(wchar_ascii.substr(0, len)));
         wchar_ascii[char_pos] &= ~0x10000;
-#endif  // WCHAR_T_IS_UTF32
       }
     }
   }
+#endif  // WCHAR_T_IS_UTF32
 }
 
 TEST(StringUtilTest, ConvertASCII) {
diff --git a/base/system/sys_info_win.cc b/base/system/sys_info_win.cc
index 89e4044..8688aecb 100644
--- a/base/system/sys_info_win.cc
+++ b/base/system/sys_info_win.cc
@@ -40,7 +40,8 @@
   ULARGE_INTEGER available;
   ULARGE_INTEGER total;
   ULARGE_INTEGER free;
-  if (!GetDiskFreeSpaceExW(path.value().c_str(), &available, &total, &free))
+  if (!GetDiskFreeSpaceExW(base::wdata(path.value()), &available, &total,
+                           &free))
     return false;
 
   if (available_bytes) {
diff --git a/base/task/sequence_manager/sequence_manager_impl_unittest.cc b/base/task/sequence_manager/sequence_manager_impl_unittest.cc
index 3764eac..dafe6de 100644
--- a/base/task/sequence_manager/sequence_manager_impl_unittest.cc
+++ b/base/task/sequence_manager/sequence_manager_impl_unittest.cc
@@ -30,6 +30,7 @@
 #include "base/task/sequence_manager/work_queue.h"
 #include "base/task/sequence_manager/work_queue_sets.h"
 #include "base/test/bind_test_util.h"
+#include "base/test/mock_callback.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/test/test_simple_task_runner.h"
@@ -66,6 +67,170 @@
   kUseMessagePump = 3,
 };
 
+using MockTask = MockCallback<base::RepeatingCallback<void()>>;
+
+// This class abstracts the details of how the SequenceManager runs tasks.
+// Subclasses will use a MockTaskRunner, a MessageLoop or a MockMessagePump. We
+// can then have common tests for all the scenarios by just using this
+// interface.
+class Fixture {
+ public:
+  virtual ~Fixture() = default;
+  virtual void AdvanceMockTickClock(TimeDelta delta) = 0;
+  virtual const TickClock* mock_tick_clock() const = 0;
+  virtual TimeDelta NextPendingTaskDelay() const = 0;
+  // Keeps advancing time as needed to run tasks up to the specified limit.
+  virtual void FastForwardBy(TimeDelta delta) = 0;
+  // Keeps advancing time as needed to run tasks until no more tasks are
+  // available.
+  virtual void FastForwardUntilNoTasksRemain() = 0;
+  virtual void RunDoWorkOnce() = 0;
+  virtual SequenceManagerForTest* sequence_manager() const = 0;
+  virtual void DestroySequenceManager() = 0;
+};
+
+class FixtureWithMockTaskRunner final : public Fixture {
+ public:
+  FixtureWithMockTaskRunner()
+      : test_task_runner_(MakeRefCounted<TestMockTimeTaskRunner>(
+            TestMockTimeTaskRunner::Type::kBoundToThread)),
+        sequence_manager_(SequenceManagerForTest::Create(
+            nullptr,
+            ThreadTaskRunnerHandle::Get(),
+            mock_tick_clock(),
+            SequenceManager::Settings{.randomised_sampling_enabled = false})) {
+    // A null clock triggers some assertions.
+    AdvanceMockTickClock(TimeDelta::FromMilliseconds(1));
+  }
+
+  void AdvanceMockTickClock(TimeDelta delta) override {
+    test_task_runner_->AdvanceMockTickClock(delta);
+  }
+
+  const TickClock* mock_tick_clock() const override {
+    return test_task_runner_->GetMockTickClock();
+  }
+
+  TimeDelta NextPendingTaskDelay() const override {
+    return test_task_runner_->NextPendingTaskDelay();
+  }
+
+  void FastForwardBy(TimeDelta delta) override {
+    test_task_runner_->FastForwardBy(delta);
+  }
+
+  void FastForwardUntilNoTasksRemain() override {
+    test_task_runner_->FastForwardUntilNoTasksRemain();
+  }
+
+  void RunDoWorkOnce() override {
+    EXPECT_EQ(test_task_runner_->GetPendingTaskCount(), 1u);
+    // We should only run tasks already posted by that moment.
+    RunLoop run_loop;
+    test_task_runner_->PostTask(FROM_HERE, run_loop.QuitClosure());
+    // TestMockTimeTaskRunner will fast-forward mock clock if necessary.
+    run_loop.Run();
+  }
+
+  scoped_refptr<TestMockTimeTaskRunner> test_task_runner() const {
+    return test_task_runner_;
+  };
+
+  SequenceManagerForTest* sequence_manager() const override {
+    return sequence_manager_.get();
+  }
+
+  void DestroySequenceManager() override { sequence_manager_.reset(); };
+
+ private:
+  scoped_refptr<TestMockTimeTaskRunner> test_task_runner_;
+  std::unique_ptr<SequenceManagerForTest> sequence_manager_;
+};
+
+// SequenceManagerImpl uses TestMockTimeTaskRunner which controls
+// both task execution and mock clock.
+// TODO(kraynov): Make this class to support all TestTypes.
+// It will allow us to re-run tests in various environments before we'll
+// eventually move to MessagePump and remove current ThreadControllerImpl.
+class SequenceManagerTest : public testing::TestWithParam<TestType>,
+                            public Fixture {
+ public:
+  SequenceManagerTest() {
+    switch (GetParam()) {
+      case TestType::kUseMockTaskRunner:
+        fixture_ = std::make_unique<FixtureWithMockTaskRunner>();
+        break;
+      default:
+        DCHECK(false);
+    }
+  }
+
+  scoped_refptr<TestTaskQueue> CreateTaskQueue(
+      TaskQueue::Spec spec = TaskQueue::Spec("test")) {
+    return sequence_manager()->CreateTaskQueueWithType<TestTaskQueue>(spec);
+  }
+
+  std::vector<scoped_refptr<TestTaskQueue>> CreateTaskQueues(
+      size_t num_queues) {
+    std::vector<scoped_refptr<TestTaskQueue>> queues;
+    for (size_t i = 0; i < num_queues; i++)
+      queues.push_back(CreateTaskQueue());
+    return queues;
+  }
+
+  void RunUntilManagerIsIdle(RepeatingClosure per_run_time_callback) {
+    for (;;) {
+      // Advance time if we've run out of immediate work to do.
+      if (!sequence_manager()->HasImmediateWork()) {
+        LazyNow lazy_now(mock_tick_clock());
+        Optional<TimeDelta> delay =
+            sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(
+                &lazy_now);
+        if (delay) {
+          AdvanceMockTickClock(*delay);
+          per_run_time_callback.Run();
+        } else {
+          break;
+        }
+      }
+      RunLoop().RunUntilIdle();
+    }
+  }
+
+  void AdvanceMockTickClock(TimeDelta delta) override {
+    fixture_->AdvanceMockTickClock(delta);
+  }
+
+  const TickClock* mock_tick_clock() const override {
+    return fixture_->mock_tick_clock();
+  }
+
+  TimeDelta NextPendingTaskDelay() const override {
+    return fixture_->NextPendingTaskDelay();
+  }
+
+  void FastForwardBy(TimeDelta delta) override {
+    fixture_->FastForwardBy(delta);
+  }
+
+  void FastForwardUntilNoTasksRemain() override {
+    fixture_->FastForwardUntilNoTasksRemain();
+  }
+
+  void RunDoWorkOnce() override { fixture_->RunDoWorkOnce(); }
+
+  SequenceManagerForTest* sequence_manager() const override {
+    return fixture_->sequence_manager();
+  }
+
+  void DestroySequenceManager() override { fixture_->DestroySequenceManager(); }
+
+ private:
+  std::unique_ptr<Fixture> fixture_;
+};
+
+// TODO(carlscab): Remove once the classes below have been migrated to
+// SequenceManagerTest
 class SequenceManagerTestBase : public testing::TestWithParam<TestType> {
  protected:
   void TearDown() override {
@@ -92,75 +257,12 @@
   TestTaskTimeObserver test_task_time_observer_;
 };
 
-// SequenceManagerImpl uses TestMockTimeTaskRunner which controls
-// both task execution and mock clock.
-// TODO(kraynov): Make this class to support all TestTypes.
-// It will allow us to re-run tests in various environments before we'll
-// eventually move to MessagePump and remove current ThreadControllerImpl.
-class SequenceManagerTest : public SequenceManagerTestBase {
- public:
-  void DeleteSequenceManagerTask() { manager_.reset(); }
-
- protected:
-  void SetUp() override {
-    ASSERT_EQ(GetParam(), TestType::kUseMockTaskRunner);
-    test_task_runner_ = WrapRefCounted(new TestMockTimeTaskRunner(
-        TestMockTimeTaskRunner::Type::kBoundToThread));
-    // A null clock triggers some assertions.
-    test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(1));
-    start_time_ = GetTickClock()->NowTicks();
-
-    manager_ = SequenceManagerForTest::Create(
-        nullptr, ThreadTaskRunnerHandle::Get(),
-        test_task_runner_->GetMockTickClock(),
-        SequenceManager::Settings{.randomised_sampling_enabled = false});
-  }
-
-  const TickClock* GetTickClock() {
-    return test_task_runner_->GetMockTickClock();
-  }
-
-  void RunPendingTasks() {
-    // We should only run tasks already posted by that moment.
-    RunLoop run_loop;
-    test_task_runner_->PostTask(FROM_HERE, run_loop.QuitClosure());
-    // TestMockTimeTaskRunner will fast-forward mock clock if necessary.
-    run_loop.Run();
-  }
-
-  // Runs all immediate tasks until there is no more work to do and advances
-  // time if there is a pending delayed task. |per_run_time_callback| is called
-  // when the clock advances.
-  // The only difference to FastForwardUntilNoTasksRemain is that time
-  // advancing isn't driven by the test task runner, but uses time domain's
-  // next scheduled run time instead. It allows us to double-check consistency
-  // and allows to count such bursts of doing work, which is a test subject.
-  void RunUntilManagerIsIdle(RepeatingClosure per_run_time_callback) {
-    for (;;) {
-      // Advance time if we've run out of immediate work to do.
-      if (!manager_->HasImmediateWork()) {
-        LazyNow lazy_now(GetTickClock());
-        Optional<TimeDelta> delay =
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now);
-        if (delay) {
-          test_task_runner_->AdvanceMockTickClock(*delay);
-          per_run_time_callback.Run();
-        } else {
-          break;
-        }
-      }
-      RunPendingTasks();
-    }
-  }
-
-  scoped_refptr<TestMockTimeTaskRunner> test_task_runner_;
-};
-
 // SequenceManagerImpl is being initialized with real MessageLoop
 // at cost of less control over a task runner.
 // It also runs a version with experimental MessagePump support.
 // TODO(kraynov): Generalize as many tests as possible to run it
 // in all supported environments.
+// TODO(carlscab): Migrate to SequenceManagerTest and remove
 class SequenceManagerTestWithMessageLoop : public SequenceManagerTestBase {
  protected:
   void SetUp() override {
@@ -209,6 +311,7 @@
   SimpleTestTickClock mock_clock_;
 };
 
+// TODO(carlscab): Migrate to SequenceManagerTest and remove
 class SequenceManagerTestWithMessagePump : public SequenceManagerTestBase {
  protected:
   void SetUp() override { SetUpWithMessagePump(); }
@@ -246,6 +349,7 @@
   SimpleTestTickClock mock_clock_;
 };
 
+// TODO(carlscab): Migrate to SequenceManagerTest and remove
 class SequenceManagerTestWithCustomInitialization
     : public SequenceManagerTestWithMessageLoop {
  protected:
@@ -558,12 +662,12 @@
   queue->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 1, &run_order), delay);
   EXPECT_FALSE(queue->HasTaskToRunImmediately());
-  test_task_runner_->AdvanceMockTickClock(delay);
+  AdvanceMockTickClock(delay);
   EXPECT_TRUE(queue->HasTaskToRunImmediately());
 
   // Move the task into the |delayed_work_queue|.
-  LazyNow lazy_now(GetTickClock());
-  manager_->WakeUpReadyDelayedQueues(&lazy_now);
+  LazyNow lazy_now(mock_tick_clock());
+  sequence_manager()->WakeUpReadyDelayedQueues(&lazy_now);
   EXPECT_FALSE(queue->GetTaskQueueImpl()->delayed_work_queue()->Empty());
   EXPECT_TRUE(queue->HasTaskToRunImmediately());
 
@@ -579,30 +683,32 @@
   TimeDelta delay(TimeDelta::FromMilliseconds(10));
   queue->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 1, &run_order), delay);
-  EXPECT_EQ(TimeDelta::FromMilliseconds(10),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(10), NextPendingTaskDelay());
   EXPECT_FALSE(queue->HasTaskToRunImmediately());
   EXPECT_TRUE(run_order.empty());
 
   // The task doesn't run before the delay has completed.
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(9));
+  FastForwardBy(TimeDelta::FromMilliseconds(9));
   EXPECT_TRUE(run_order.empty());
 
   // After the delay has completed, the task runs normally.
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(1));
+  FastForwardBy(TimeDelta::FromMilliseconds(1));
   EXPECT_THAT(run_order, ElementsAre(1u));
   EXPECT_FALSE(queue->HasTaskToRunImmediately());
 }
 
-TEST_P(SequenceManagerTest, DelayedTaskExecutedInOneMessageLoopTask) {
-  auto queue = CreateTaskQueue();
+TEST(SequenceManagerTestWithMockTaskRunner,
+     DelayedTaskExecutedInOneMessageLoopTask) {
+  FixtureWithMockTaskRunner fixture;
+  auto queue =
+      fixture.sequence_manager()->CreateTaskQueue(TaskQueue::Spec("test"));
 
   queue->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                         TimeDelta::FromMilliseconds(10));
   RunLoop().RunUntilIdle();
-  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
-  test_task_runner_->FastForwardUntilNoTasksRemain();
-  EXPECT_EQ(0u, test_task_runner_->GetPendingTaskCount());
+  EXPECT_EQ(1u, fixture.test_task_runner()->GetPendingTaskCount());
+  fixture.FastForwardUntilNoTasksRemain();
+  EXPECT_EQ(0u, fixture.test_task_runner()->GetPendingTaskCount());
 }
 
 TEST_P(SequenceManagerTest, DelayedTaskPosting_MultipleTasks_DecendingOrder) {
@@ -621,20 +727,17 @@
                                         BindOnce(&TestTask, 3, &run_order),
                                         TimeDelta::FromMilliseconds(5));
 
-  EXPECT_EQ(TimeDelta::FromMilliseconds(5),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(5), NextPendingTaskDelay());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(5));
+  FastForwardBy(TimeDelta::FromMilliseconds(5));
   EXPECT_THAT(run_order, ElementsAre(3u));
-  EXPECT_EQ(TimeDelta::FromMilliseconds(3),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(3), NextPendingTaskDelay());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(3));
+  FastForwardBy(TimeDelta::FromMilliseconds(3));
   EXPECT_THAT(run_order, ElementsAre(3u, 2u));
-  EXPECT_EQ(TimeDelta::FromMilliseconds(2),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(2), NextPendingTaskDelay());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(2));
+  FastForwardBy(TimeDelta::FromMilliseconds(2));
   EXPECT_THAT(run_order, ElementsAre(3u, 2u, 1u));
 }
 
@@ -654,25 +757,25 @@
                                         BindOnce(&TestTask, 3, &run_order),
                                         TimeDelta::FromMilliseconds(10));
 
-  EXPECT_EQ(TimeDelta::FromMilliseconds(1),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(1));
+  FastForwardBy(TimeDelta::FromMilliseconds(1));
   EXPECT_THAT(run_order, ElementsAre(1u));
-  EXPECT_EQ(TimeDelta::FromMilliseconds(4),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(4), NextPendingTaskDelay());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(4));
+  FastForwardBy(TimeDelta::FromMilliseconds(4));
   EXPECT_THAT(run_order, ElementsAre(1u, 2u));
-  EXPECT_EQ(TimeDelta::FromMilliseconds(5),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(5), NextPendingTaskDelay());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(5));
+  FastForwardBy(TimeDelta::FromMilliseconds(5));
   EXPECT_THAT(run_order, ElementsAre(1u, 2u, 3u));
 }
 
-TEST_P(SequenceManagerTest, PostDelayedTask_SharesUnderlyingDelayedTasks) {
-  auto queue = CreateTaskQueue();
+TEST(SequenceManagerTestWithMockTaskRunner,
+     PostDelayedTask_SharesUnderlyingDelayedTasks) {
+  FixtureWithMockTaskRunner fixture;
+  auto queue =
+      fixture.sequence_manager()->CreateTaskQueue(TaskQueue::Spec("test"));
 
   std::vector<EnqueueOrder> run_order;
   TimeDelta delay(TimeDelta::FromMilliseconds(10));
@@ -683,7 +786,7 @@
   queue->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 3, &run_order), delay);
 
-  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
+  EXPECT_EQ(1u, fixture.test_task_runner()->GetPendingTaskCount());
 }
 
 class TestObject {
@@ -708,93 +811,93 @@
   queue->task_runner()->PostTask(
       FROM_HERE, BindOnce(&TestObject::Run, Owned(new TestObject())));
 
-  manager_.reset();
+  DestroySequenceManager();
 
   EXPECT_EQ(2, TestObject::destructor_count__);
 }
 
 TEST_P(SequenceManagerTest, InsertAndRemoveFence) {
   auto queue = CreateTaskQueue();
-  queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
+  StrictMock<MockTask> task;
 
-  std::vector<EnqueueOrder> run_order;
   // Posting a task when pumping is disabled doesn't result in work getting
   // posted.
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
-  EXPECT_FALSE(test_task_runner_->HasPendingTask());
+  queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
+  queue->task_runner()->PostTask(FROM_HERE, task.Get());
+  EXPECT_CALL(task, Run).Times(0);
+  RunLoop().RunUntilIdle();
 
   // However polling still works.
   EXPECT_TRUE(queue->HasTaskToRunImmediately());
 
   // After removing the fence the task runs normally.
   queue->RemoveFence();
-  EXPECT_TRUE(test_task_runner_->HasPendingTask());
+  EXPECT_CALL(task, Run);
   RunLoop().RunUntilIdle();
-  EXPECT_THAT(run_order, ElementsAre(1u));
 }
 
 TEST_P(SequenceManagerTest, RemovingFenceForDisabledQueueDoesNotPostDoWork) {
   auto queue = CreateTaskQueue();
+  StrictMock<MockTask> task;
 
-  std::vector<EnqueueOrder> run_order;
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
       queue->CreateQueueEnabledVoter();
   voter->SetQueueEnabled(false);
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
+  queue->task_runner()->PostTask(FROM_HERE, task.Get());
 
   queue->RemoveFence();
-  EXPECT_FALSE(test_task_runner_->HasPendingTask());
+  EXPECT_CALL(task, Run).Times(0);
+  RunLoop().RunUntilIdle();
 }
 
 TEST_P(SequenceManagerTest, EnablingFencedQueueDoesNotPostDoWork) {
   auto queue = CreateTaskQueue();
+  StrictMock<MockTask> task;
 
-  std::vector<EnqueueOrder> run_order;
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
       queue->CreateQueueEnabledVoter();
   voter->SetQueueEnabled(false);
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
-
+  queue->task_runner()->PostTask(FROM_HERE, task.Get());
   voter->SetQueueEnabled(true);
-  EXPECT_FALSE(test_task_runner_->HasPendingTask());
+
+  EXPECT_CALL(task, Run).Times(0);
+  RunLoop().RunUntilIdle();
 }
 
 TEST_P(SequenceManagerTest, DenyRunning_BeforePosting) {
   auto queue = CreateTaskQueue();
+  StrictMock<MockTask> task;
 
-  std::vector<EnqueueOrder> run_order;
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
       queue->CreateQueueEnabledVoter();
   voter->SetQueueEnabled(false);
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
-  EXPECT_FALSE(test_task_runner_->HasPendingTask());
+  queue->task_runner()->PostTask(FROM_HERE, task.Get());
 
+  EXPECT_CALL(task, Run).Times(0);
   RunLoop().RunUntilIdle();
-  EXPECT_TRUE(run_order.empty());
 
   voter->SetQueueEnabled(true);
+  EXPECT_CALL(task, Run);
   RunLoop().RunUntilIdle();
-  EXPECT_THAT(run_order, ElementsAre(1u));
 }
 
 TEST_P(SequenceManagerTest, DenyRunning_AfterPosting) {
   auto queue = CreateTaskQueue();
+  StrictMock<MockTask> task;
 
-  std::vector<EnqueueOrder> run_order;
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
+  queue->task_runner()->PostTask(FROM_HERE, task.Get());
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
       queue->CreateQueueEnabledVoter();
-  EXPECT_TRUE(test_task_runner_->HasPendingTask());
   voter->SetQueueEnabled(false);
 
+  EXPECT_CALL(task, Run).Times(0);
   RunLoop().RunUntilIdle();
-  EXPECT_TRUE(run_order.empty());
 
   voter->SetQueueEnabled(true);
+  EXPECT_CALL(task, Run);
   RunLoop().RunUntilIdle();
-  EXPECT_THAT(run_order, ElementsAre(1u));
 }
 
 TEST_P(SequenceManagerTest, DenyRunning_AfterRemovingFence) {
@@ -817,25 +920,24 @@
 }
 
 TEST_P(SequenceManagerTest, RemovingFenceWithDelayedTask) {
+  TimeDelta kDelay = TimeDelta::FromMilliseconds(10);
   auto queue = CreateTaskQueue();
-  queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
+  StrictMock<MockTask> task;
 
-  std::vector<EnqueueOrder> run_order;
   // Posting a delayed task when fenced will apply the delay, but won't cause
   // work to executed afterwards.
-  TimeDelta delay(TimeDelta::FromMilliseconds(10));
-  queue->task_runner()->PostDelayedTask(
-      FROM_HERE, BindOnce(&TestTask, 1, &run_order), delay);
+  queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
+
+  queue->task_runner()->PostDelayedTask(FROM_HERE, task.Get(), kDelay);
 
   // The task does not run even though it's delay is up.
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(10));
-  EXPECT_TRUE(run_order.empty());
+  EXPECT_CALL(task, Run).Times(0);
+  FastForwardBy(kDelay);
 
   // Removing the fence causes the task to run.
   queue->RemoveFence();
-  EXPECT_TRUE(test_task_runner_->HasPendingTask());
-  RunPendingTasks();
-  EXPECT_THAT(run_order, ElementsAre(1u));
+  EXPECT_CALL(task, Run);
+  RunLoop().RunUntilIdle();
 }
 
 TEST_P(SequenceManagerTest, RemovingFenceWithMultipleDelayedTasks) {
@@ -855,7 +957,7 @@
   queue->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 3, &run_order), delay3);
 
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(15));
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(15));
   RunLoop().RunUntilIdle();
   EXPECT_TRUE(run_order.empty());
 
@@ -874,7 +976,7 @@
   queue->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 1, &run_order), delay);
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(10));
+  FastForwardBy(TimeDelta::FromMilliseconds(10));
   EXPECT_TRUE(run_order.empty());
 }
 
@@ -985,53 +1087,55 @@
 }  // namespace
 
 TEST_P(SequenceManagerTest, DelayedFence_DelayedTasks) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   scoped_refptr<TestTaskQueue> queue =
       CreateTaskQueue(TaskQueue::Spec("test").SetDelayedFencesAllowed(true));
 
   std::vector<TimeTicks> run_times;
   queue->task_runner()->PostDelayedTask(
-      FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+      FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
       TimeDelta::FromMilliseconds(100));
   queue->task_runner()->PostDelayedTask(
-      FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+      FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
       TimeDelta::FromMilliseconds(200));
   queue->task_runner()->PostDelayedTask(
-      FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+      FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
       TimeDelta::FromMilliseconds(300));
 
-  queue->InsertFenceAt(GetTickClock()->NowTicks() +
+  queue->InsertFenceAt(mock_tick_clock()->NowTicks() +
                        TimeDelta::FromMilliseconds(250));
   EXPECT_FALSE(queue->HasActiveFence());
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   EXPECT_TRUE(queue->HasActiveFence());
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(100),
-                          start_time_ + TimeDelta::FromMilliseconds(200)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(100),
+                          kStartTime + TimeDelta::FromMilliseconds(200)));
   run_times.clear();
 
   queue->RemoveFence();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   EXPECT_FALSE(queue->HasActiveFence());
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(300)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(300)));
 }
 
 TEST_P(SequenceManagerTest, DelayedFence_ImmediateTasks) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   scoped_refptr<TestTaskQueue> queue =
       CreateTaskQueue(TaskQueue::Spec("test").SetDelayedFencesAllowed(true));
 
   std::vector<TimeTicks> run_times;
-  queue->InsertFenceAt(GetTickClock()->NowTicks() +
+  queue->InsertFenceAt(mock_tick_clock()->NowTicks() +
                        TimeDelta::FromMilliseconds(250));
 
   for (int i = 0; i < 5; ++i) {
     queue->task_runner()->PostTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()));
-    test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(100));
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()));
+    FastForwardBy(TimeDelta::FromMilliseconds(100));
     if (i < 2) {
       EXPECT_FALSE(queue->HasActiveFence());
     } else {
@@ -1041,31 +1145,32 @@
 
   EXPECT_THAT(
       run_times,
-      ElementsAre(start_time_, start_time_ + TimeDelta::FromMilliseconds(100),
-                  start_time_ + TimeDelta::FromMilliseconds(200)));
+      ElementsAre(kStartTime, kStartTime + TimeDelta::FromMilliseconds(100),
+                  kStartTime + TimeDelta::FromMilliseconds(200)));
   run_times.clear();
 
   queue->RemoveFence();
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(500),
-                          start_time_ + TimeDelta::FromMilliseconds(500)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(500),
+                          kStartTime + TimeDelta::FromMilliseconds(500)));
 }
 
 TEST_P(SequenceManagerTest, DelayedFence_RemovedFenceDoesNotActivate) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   scoped_refptr<TestTaskQueue> queue =
       CreateTaskQueue(TaskQueue::Spec("test").SetDelayedFencesAllowed(true));
 
   std::vector<TimeTicks> run_times;
-  queue->InsertFenceAt(GetTickClock()->NowTicks() +
+  queue->InsertFenceAt(mock_tick_clock()->NowTicks() +
                        TimeDelta::FromMilliseconds(250));
 
   for (int i = 0; i < 3; ++i) {
     queue->task_runner()->PostTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()));
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()));
     EXPECT_FALSE(queue->HasActiveFence());
-    test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(100));
+    FastForwardBy(TimeDelta::FromMilliseconds(100));
   }
 
   EXPECT_TRUE(queue->HasActiveFence());
@@ -1073,23 +1178,24 @@
 
   for (int i = 0; i < 2; ++i) {
     queue->task_runner()->PostTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()));
-    test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(100));
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()));
+    FastForwardBy(TimeDelta::FromMilliseconds(100));
     EXPECT_FALSE(queue->HasActiveFence());
   }
 
   EXPECT_THAT(
       run_times,
-      ElementsAre(start_time_, start_time_ + TimeDelta::FromMilliseconds(100),
-                  start_time_ + TimeDelta::FromMilliseconds(200),
-                  start_time_ + TimeDelta::FromMilliseconds(300),
-                  start_time_ + TimeDelta::FromMilliseconds(400)));
+      ElementsAre(kStartTime, kStartTime + TimeDelta::FromMilliseconds(100),
+                  kStartTime + TimeDelta::FromMilliseconds(200),
+                  kStartTime + TimeDelta::FromMilliseconds(300),
+                  kStartTime + TimeDelta::FromMilliseconds(400)));
 }
 
 TEST_P(SequenceManagerTest, DelayedFence_TakeIncomingImmediateQueue) {
   // This test checks that everything works correctly when a work queue
   // is swapped with an immediate incoming queue and a delayed fence
   // is activated, forcing a different queue to become active.
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   scoped_refptr<TestTaskQueue> queue1 =
       CreateTaskQueue(TaskQueue::Spec("test").SetDelayedFencesAllowed(true));
   scoped_refptr<TestTaskQueue> queue2 =
@@ -1098,37 +1204,37 @@
   std::vector<std::pair<scoped_refptr<TestTaskQueue>, TimeTicks>> run_times;
 
   // Fence ensures that the task posted after advancing time is blocked.
-  queue1->InsertFenceAt(GetTickClock()->NowTicks() +
+  queue1->InsertFenceAt(mock_tick_clock()->NowTicks() +
                         TimeDelta::FromMilliseconds(250));
 
   // This task should not be blocked and should run immediately after
   // advancing time at 301ms.
   queue1->task_runner()->PostTask(
       FROM_HERE,
-      BindOnce(&RecordTimeAndQueueTask, &run_times, queue1, GetTickClock()));
+      BindOnce(&RecordTimeAndQueueTask, &run_times, queue1, mock_tick_clock()));
   // Force reload of immediate work queue. In real life the same effect can be
   // achieved with cross-thread posting.
   queue1->GetTaskQueueImpl()->ReloadImmediateWorkQueueIfEmpty();
 
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(300));
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(300));
 
   // This task should be blocked.
   queue1->task_runner()->PostTask(
       FROM_HERE,
-      BindOnce(&RecordTimeAndQueueTask, &run_times, queue1, GetTickClock()));
+      BindOnce(&RecordTimeAndQueueTask, &run_times, queue1, mock_tick_clock()));
   // This task on a different runner should run as expected.
   queue2->task_runner()->PostTask(
       FROM_HERE,
-      BindOnce(&RecordTimeAndQueueTask, &run_times, queue2, GetTickClock()));
+      BindOnce(&RecordTimeAndQueueTask, &run_times, queue2, mock_tick_clock()));
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   EXPECT_THAT(
       run_times,
-      ElementsAre(std::make_pair(
-                      queue1, start_time_ + TimeDelta::FromMilliseconds(300)),
-                  std::make_pair(
-                      queue2, start_time_ + TimeDelta::FromMilliseconds(300))));
+      ElementsAre(
+          std::make_pair(queue1, kStartTime + TimeDelta::FromMilliseconds(300)),
+          std::make_pair(queue2,
+                         kStartTime + TimeDelta::FromMilliseconds(300))));
 }
 
 namespace {
@@ -1161,7 +1267,7 @@
 
   std::vector<EnqueueOrder> run_order;
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
-  manager_.reset();
+  DestroySequenceManager();
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
 
   RunLoop().RunUntilIdle();
@@ -1201,8 +1307,8 @@
   queue->task_runner()->PostTask(
       FROM_HERE, BindOnce(&RePostingTestTask, queue, &run_count));
 
-  RunPendingTasks();
-  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
+  RunDoWorkOnce();
+  EXPECT_EQ(1u, sequence_manager()->GetPendingTaskCountForTesting());
   EXPECT_EQ(1, run_count);
 }
 
@@ -1227,25 +1333,22 @@
 
 TEST_P(SequenceManagerTest, WorkBatching) {
   auto queue = CreateTaskQueue();
-
-  manager_->SetWorkBatchSize(2);
+  sequence_manager()->SetWorkBatchSize(2);
 
   std::vector<EnqueueOrder> run_order;
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 1, &run_order));
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 2, &run_order));
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 3, &run_order));
-  queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 4, &run_order));
+  for (int i = 0; i < 4; ++i) {
+    queue->task_runner()->PostTask(FROM_HERE,
+                                   BindOnce(&TestTask, i, &run_order));
+  }
 
-  // Running one task in the host message loop should cause two posted tasks to
-  // get executed.
-  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
-  RunPendingTasks();
-  EXPECT_THAT(run_order, ElementsAre(1u, 2u));
+  // Running one task in the host message loop should cause two posted tasks
+  // to get executed.
+  RunDoWorkOnce();
+  EXPECT_THAT(run_order, ElementsAre(0u, 1u));
 
   // The second task runs the remaining two posted tasks.
-  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
-  RunPendingTasks();
-  EXPECT_THAT(run_order, ElementsAre(1u, 2u, 3u, 4u));
+  RunDoWorkOnce();
+  EXPECT_THAT(run_order, ElementsAre(0u, 1u, 2u, 3u));
 }
 
 class MockTaskObserver : public MessageLoop::TaskObserver {
@@ -1360,54 +1463,61 @@
 TEST_P(SequenceManagerTest, ThreadCheckAfterTermination) {
   auto queue = CreateTaskQueue();
   EXPECT_TRUE(queue->task_runner()->RunsTasksInCurrentSequence());
-  manager_.reset();
+  DestroySequenceManager();
   EXPECT_TRUE(queue->task_runner()->RunsTasksInCurrentSequence());
 }
 
 TEST_P(SequenceManagerTest, TimeDomain_NextScheduledRunTime) {
   auto queues = CreateTaskQueues(2u);
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMicroseconds(10000));
-  LazyNow lazy_now_1(GetTickClock());
+  AdvanceMockTickClock(TimeDelta::FromMicroseconds(10000));
+  LazyNow lazy_now_1(mock_tick_clock());
 
   // With no delayed tasks.
-  EXPECT_FALSE(manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
+  EXPECT_FALSE(
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
 
   // With a non-delayed task.
   queues[0]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_FALSE(manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
+  EXPECT_FALSE(
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
 
   // With a delayed task.
   TimeDelta expected_delay = TimeDelta::FromMilliseconds(50);
   queues[0]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             expected_delay);
-  EXPECT_EQ(expected_delay,
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
+  EXPECT_EQ(
+      expected_delay,
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
 
   // With another delayed task in the same queue with a longer delay.
   queues[0]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             TimeDelta::FromMilliseconds(100));
-  EXPECT_EQ(expected_delay,
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
+  EXPECT_EQ(
+      expected_delay,
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
 
   // With another delayed task in the same queue with a shorter delay.
   expected_delay = TimeDelta::FromMilliseconds(20);
   queues[0]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             expected_delay);
-  EXPECT_EQ(expected_delay,
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
+  EXPECT_EQ(
+      expected_delay,
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
 
   // With another delayed task in a different queue with a shorter delay.
   expected_delay = TimeDelta::FromMilliseconds(10);
   queues[1]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             expected_delay);
-  EXPECT_EQ(expected_delay,
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
+  EXPECT_EQ(
+      expected_delay,
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_1));
 
   // Test it updates as time progresses
-  test_task_runner_->AdvanceMockTickClock(expected_delay);
-  LazyNow lazy_now_2(GetTickClock());
-  EXPECT_EQ(TimeDelta(),
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_2));
+  AdvanceMockTickClock(expected_delay);
+  LazyNow lazy_now_2(mock_tick_clock());
+  EXPECT_EQ(
+      TimeDelta(),
+      sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(&lazy_now_2));
 }
 
 TEST_P(SequenceManagerTest, TimeDomain_NextScheduledRunTime_MultipleQueues) {
@@ -1424,17 +1534,17 @@
                                             delay3);
   queues[0]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
 
-  LazyNow lazy_now(GetTickClock());
-  EXPECT_EQ(delay2,
-            manager_->GetRealTimeDomain()->DelayTillNextTask(&lazy_now));
+  LazyNow lazy_now(mock_tick_clock());
+  EXPECT_EQ(delay2, sequence_manager()->GetRealTimeDomain()->DelayTillNextTask(
+                        &lazy_now));
 }
 
 TEST_P(SequenceManagerTest, DeleteSequenceManagerInsideATask) {
   auto queue = CreateTaskQueue();
 
   queue->task_runner()->PostTask(
-      FROM_HERE, BindOnce(&SequenceManagerTest::DeleteSequenceManagerTask,
-                          Unretained(this)));
+      FROM_HERE,
+      BindOnce(&SequenceManagerTest::DestroySequenceManager, Unretained(this)));
 
   // This should not crash, assuming DoWork detects the SequenceManager has
   // been deleted.
@@ -1450,27 +1560,27 @@
       CreateTaskQueue(TaskQueue::Spec("test").SetShouldMonitorQuiescence(true));
   scoped_refptr<TestTaskQueue> queue2 = CreateTaskQueue();
 
-  EXPECT_TRUE(manager_->GetAndClearSystemIsQuiescentBit());
+  EXPECT_TRUE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
 
   queue0->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   RunLoop().RunUntilIdle();
-  EXPECT_FALSE(manager_->GetAndClearSystemIsQuiescentBit());
-  EXPECT_TRUE(manager_->GetAndClearSystemIsQuiescentBit());
+  EXPECT_FALSE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
+  EXPECT_TRUE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
 
   queue1->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   RunLoop().RunUntilIdle();
-  EXPECT_FALSE(manager_->GetAndClearSystemIsQuiescentBit());
-  EXPECT_TRUE(manager_->GetAndClearSystemIsQuiescentBit());
+  EXPECT_FALSE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
+  EXPECT_TRUE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
 
   queue2->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   RunLoop().RunUntilIdle();
-  EXPECT_TRUE(manager_->GetAndClearSystemIsQuiescentBit());
+  EXPECT_TRUE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
 
   queue0->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   queue1->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   RunLoop().RunUntilIdle();
-  EXPECT_FALSE(manager_->GetAndClearSystemIsQuiescentBit());
-  EXPECT_TRUE(manager_->GetAndClearSystemIsQuiescentBit());
+  EXPECT_FALSE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
+  EXPECT_TRUE(sequence_manager()->GetAndClearSystemIsQuiescentBit());
 }
 
 TEST_P(SequenceManagerTest, HasPendingImmediateWork) {
@@ -1493,53 +1603,50 @@
   EXPECT_FALSE(queue->HasTaskToRunImmediately());
 
   // Move time forwards until just before the delayed task should run.
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(10));
-  LazyNow lazy_now_1(GetTickClock());
-  manager_->WakeUpReadyDelayedQueues(&lazy_now_1);
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(10));
+  LazyNow lazy_now_1(mock_tick_clock());
+  sequence_manager()->WakeUpReadyDelayedQueues(&lazy_now_1);
   EXPECT_FALSE(queue->HasTaskToRunImmediately());
 
   // Force the delayed task onto the work queue.
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(2));
-  LazyNow lazy_now_2(GetTickClock());
-  manager_->WakeUpReadyDelayedQueues(&lazy_now_2);
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(2));
+  LazyNow lazy_now_2(mock_tick_clock());
+  sequence_manager()->WakeUpReadyDelayedQueues(&lazy_now_2);
   EXPECT_TRUE(queue->HasTaskToRunImmediately());
 
   RunLoop().RunUntilIdle();
   EXPECT_FALSE(queue->HasTaskToRunImmediately());
 }
 
-void ExpensiveTestTask(int value,
-                       scoped_refptr<TestMockTimeTaskRunner> test_task_runner,
-                       std::vector<EnqueueOrder>* out_result) {
-  out_result->push_back(EnqueueOrder::FromIntForTesting(value));
-  test_task_runner->FastForwardBy(TimeDelta::FromMilliseconds(1));
-}
-
-TEST_P(SequenceManagerTest, ImmediateAndDelayedTaskInterleaving) {
+TEST_P(SequenceManagerTest, ImmediateTasksAreNotStarvedByDelayedTasks) {
   auto queue = CreateTaskQueue();
-
   std::vector<EnqueueOrder> run_order;
-  TimeDelta delay = TimeDelta::FromMilliseconds(10);
+  constexpr auto kDelay = TimeDelta::FromMilliseconds(10);
+
+  // By posting the immediate tasks from a delayed one we make sure that the
+  // delayed tasks we post afterwards have a lower enqueue_order than the
+  // immediate ones. Thus all the delayed ones would run before the immediate
+  // ones if it weren't for the anti-starvation feature we are testing here.
+  queue->task_runner()->PostDelayedTask(
+      FROM_HERE, BindLambdaForTesting([&]() {
+        for (int i = 0; i < 9; i++) {
+          queue->task_runner()->PostTask(FROM_HERE,
+                                         BindOnce(&TestTask, i, &run_order));
+        }
+      }),
+      kDelay);
+
   for (int i = 10; i < 19; i++) {
     queue->task_runner()->PostDelayedTask(
-        FROM_HERE,
-        BindOnce(&ExpensiveTestTask, i, test_task_runner_, &run_order), delay);
+        FROM_HERE, BindOnce(&TestTask, i, &run_order), kDelay);
   }
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(10));
-
-  for (int i = 0; i < 9; i++) {
-    queue->task_runner()->PostTask(
-        FROM_HERE,
-        BindOnce(&ExpensiveTestTask, i, test_task_runner_, &run_order));
-  }
-
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardBy(TimeDelta::FromMilliseconds(10));
 
   // Delayed tasks are not allowed to starve out immediate work which is why
   // some of the immediate tasks run out of order.
-  uint64_t expected_run_order[] = {10u, 11u, 12u, 13u, 0u, 14u, 15u, 16u, 1u,
-                                   17u, 18u, 2u,  3u,  4u, 5u,  6u,  7u,  8u};
+  uint64_t expected_run_order[] = {10, 11, 12, 0, 13, 14, 15, 1, 16,
+                                   17, 18, 2,  3, 4,  5,  6,  7, 8};
   EXPECT_THAT(run_order, ElementsAreArray(expected_run_order));
 }
 
@@ -1554,7 +1661,7 @@
   queue->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 1, &run_order), delay);
 
-  test_task_runner_->AdvanceMockTickClock(delay * 2);
+  AdvanceMockTickClock(delay * 2);
   RunLoop().RunUntilIdle();
 
   EXPECT_THAT(run_order, ElementsAre(2u, 3u, 1u));
@@ -1573,7 +1680,7 @@
   queues[0]->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 1, &run_order), delay);
 
-  test_task_runner_->AdvanceMockTickClock(delay * 2);
+  AdvanceMockTickClock(delay * 2);
   RunLoop().RunUntilIdle();
 
   EXPECT_THAT(run_order, ElementsAre(2u, 3u, 1u));
@@ -1590,7 +1697,7 @@
   queues[1]->task_runner()->PostDelayedTask(
       FROM_HERE, BindOnce(&TestTask, 2, &run_order), delay2);
 
-  test_task_runner_->AdvanceMockTickClock(delay1 * 2);
+  AdvanceMockTickClock(delay1 * 2);
   RunLoop().RunUntilIdle();
 
   EXPECT_THAT(run_order, ElementsAre(2u, 1u));
@@ -1643,7 +1750,7 @@
   auto queue = CreateTaskQueue();
 
   SequenceNumberCapturingTaskObserver observer;
-  manager_->AddTaskObserver(&observer);
+  sequence_manager()->AddTaskObserver(&observer);
 
   // Register four tasks that will run in reverse order.
   std::vector<EnqueueOrder> run_order;
@@ -1658,7 +1765,7 @@
                                         TimeDelta::FromMilliseconds(10));
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 4, &run_order));
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(40));
+  FastForwardBy(TimeDelta::FromMilliseconds(40));
   ASSERT_THAT(run_order, ElementsAre(4u, 3u, 2u, 1u));
 
   // The sequence numbers are a one-based monotonically incrememting counter
@@ -1666,7 +1773,7 @@
   // onto the Incoming queue. This counter starts with 2.
   EXPECT_THAT(observer.sequence_numbers(), ElementsAre(5, 4, 3, 2));
 
-  manager_->RemoveTaskObserver(&observer);
+  sequence_manager()->RemoveTaskObserver(&observer);
 }
 
 TEST_P(SequenceManagerTest, NewTaskQueues) {
@@ -1753,7 +1860,7 @@
   queues[1]->ShutdownTaskQueue();
   RunLoop().RunUntilIdle();
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(40));
+  FastForwardBy(TimeDelta::FromMilliseconds(40));
   ASSERT_THAT(run_order, ElementsAre(1u, 3u));
 }
 
@@ -1825,13 +1932,13 @@
 TEST_P(SequenceManagerTest, TimeDomainsAreIndependant) {
   auto queues = CreateTaskQueues(2u);
 
-  TimeTicks start_time_ticks = manager_->NowTicks();
+  TimeTicks start_time_ticks = sequence_manager()->NowTicks();
   std::unique_ptr<MockTimeDomain> domain_a =
       std::make_unique<MockTimeDomain>(start_time_ticks);
   std::unique_ptr<MockTimeDomain> domain_b =
       std::make_unique<MockTimeDomain>(start_time_ticks);
-  manager_->RegisterTimeDomain(domain_a.get());
-  manager_->RegisterTimeDomain(domain_b.get());
+  sequence_manager()->RegisterTimeDomain(domain_a.get());
+  sequence_manager()->RegisterTimeDomain(domain_b.get());
   queues[0]->SetTimeDomain(domain_a.get());
   queues[1]->SetTimeDomain(domain_b.get());
 
@@ -1857,13 +1964,13 @@
                                             TimeDelta::FromMilliseconds(30));
 
   domain_b->SetNowTicks(start_time_ticks + TimeDelta::FromMilliseconds(50));
-  manager_->MaybeScheduleImmediateWork(FROM_HERE);
+  sequence_manager()->MaybeScheduleImmediateWork(FROM_HERE);
 
   RunLoop().RunUntilIdle();
   EXPECT_THAT(run_order, ElementsAre(4u, 5u, 6u));
 
   domain_a->SetNowTicks(start_time_ticks + TimeDelta::FromMilliseconds(50));
-  manager_->MaybeScheduleImmediateWork(FROM_HERE);
+  sequence_manager()->MaybeScheduleImmediateWork(FROM_HERE);
 
   RunLoop().RunUntilIdle();
   EXPECT_THAT(run_order, ElementsAre(4u, 5u, 6u, 1u, 2u, 3u));
@@ -1871,17 +1978,17 @@
   queues[0]->ShutdownTaskQueue();
   queues[1]->ShutdownTaskQueue();
 
-  manager_->UnregisterTimeDomain(domain_a.get());
-  manager_->UnregisterTimeDomain(domain_b.get());
+  sequence_manager()->UnregisterTimeDomain(domain_a.get());
+  sequence_manager()->UnregisterTimeDomain(domain_b.get());
 }
 
 TEST_P(SequenceManagerTest, TimeDomainMigration) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time_ticks = manager_->NowTicks();
+  TimeTicks start_time_ticks = sequence_manager()->NowTicks();
   std::unique_ptr<MockTimeDomain> domain_a =
       std::make_unique<MockTimeDomain>(start_time_ticks);
-  manager_->RegisterTimeDomain(domain_a.get());
+  sequence_manager()->RegisterTimeDomain(domain_a.get());
   queue->SetTimeDomain(domain_a.get());
 
   std::vector<EnqueueOrder> run_order;
@@ -1899,37 +2006,37 @@
                                         TimeDelta::FromMilliseconds(40));
 
   domain_a->SetNowTicks(start_time_ticks + TimeDelta::FromMilliseconds(20));
-  manager_->MaybeScheduleImmediateWork(FROM_HERE);
+  sequence_manager()->MaybeScheduleImmediateWork(FROM_HERE);
   RunLoop().RunUntilIdle();
   EXPECT_THAT(run_order, ElementsAre(1u, 2u));
 
   std::unique_ptr<MockTimeDomain> domain_b =
       std::make_unique<MockTimeDomain>(start_time_ticks);
-  manager_->RegisterTimeDomain(domain_b.get());
+  sequence_manager()->RegisterTimeDomain(domain_b.get());
   queue->SetTimeDomain(domain_b.get());
 
   domain_b->SetNowTicks(start_time_ticks + TimeDelta::FromMilliseconds(50));
-  manager_->MaybeScheduleImmediateWork(FROM_HERE);
+  sequence_manager()->MaybeScheduleImmediateWork(FROM_HERE);
 
   RunLoop().RunUntilIdle();
   EXPECT_THAT(run_order, ElementsAre(1u, 2u, 3u, 4u));
 
   queue->ShutdownTaskQueue();
 
-  manager_->UnregisterTimeDomain(domain_a.get());
-  manager_->UnregisterTimeDomain(domain_b.get());
+  sequence_manager()->UnregisterTimeDomain(domain_a.get());
+  sequence_manager()->UnregisterTimeDomain(domain_b.get());
 }
 
 TEST_P(SequenceManagerTest, TimeDomainMigrationWithIncomingImmediateTasks) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time_ticks = manager_->NowTicks();
+  TimeTicks start_time_ticks = sequence_manager()->NowTicks();
   std::unique_ptr<MockTimeDomain> domain_a =
       std::make_unique<MockTimeDomain>(start_time_ticks);
   std::unique_ptr<MockTimeDomain> domain_b =
       std::make_unique<MockTimeDomain>(start_time_ticks);
-  manager_->RegisterTimeDomain(domain_a.get());
-  manager_->RegisterTimeDomain(domain_b.get());
+  sequence_manager()->RegisterTimeDomain(domain_a.get());
+  sequence_manager()->RegisterTimeDomain(domain_b.get());
 
   queue->SetTimeDomain(domain_a.get());
   std::vector<EnqueueOrder> run_order;
@@ -1941,8 +2048,8 @@
 
   queue->ShutdownTaskQueue();
 
-  manager_->UnregisterTimeDomain(domain_a.get());
-  manager_->UnregisterTimeDomain(domain_b.get());
+  sequence_manager()->UnregisterTimeDomain(domain_a.get());
+  sequence_manager()->UnregisterTimeDomain(domain_b.get());
 }
 
 TEST_P(SequenceManagerTest,
@@ -1955,8 +2062,8 @@
       std::make_unique<internal::RealTimeDomain>();
   std::unique_ptr<internal::RealTimeDomain> domain_b =
       std::make_unique<internal::RealTimeDomain>();
-  manager_->RegisterTimeDomain(domain_a.get());
-  manager_->RegisterTimeDomain(domain_b.get());
+  sequence_manager()->RegisterTimeDomain(domain_a.get());
+  sequence_manager()->RegisterTimeDomain(domain_b.get());
 
   queue->SetTimeDomain(domain_a.get());
   queue->task_runner()->PostDelayedTask(FROM_HERE,
@@ -1978,13 +2085,13 @@
                                         BindOnce(&TestTask, 4, &run_order),
                                         TimeDelta::FromMilliseconds(10));
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(40));
+  FastForwardBy(TimeDelta::FromMilliseconds(40));
   EXPECT_THAT(run_order, ElementsAre(4u, 3u, 2u, 1u));
 
   queue->ShutdownTaskQueue();
 
-  manager_->UnregisterTimeDomain(domain_a.get());
-  manager_->UnregisterTimeDomain(domain_b.get());
+  sequence_manager()->UnregisterTimeDomain(domain_a.get());
+  sequence_manager()->UnregisterTimeDomain(domain_b.get());
 }
 
 namespace {
@@ -2007,21 +2114,21 @@
   // We should get a notification when a task is posted on an empty queue.
   EXPECT_CALL(observer, OnQueueNextWakeUpChanged(queue.get(), _));
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  manager_->ReloadEmptyWorkQueues();
+  sequence_manager()->ReloadEmptyWorkQueues();
   Mock::VerifyAndClearExpectations(&observer);
 
   // But not subsequently.
   EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  manager_->ReloadEmptyWorkQueues();
+  sequence_manager()->ReloadEmptyWorkQueues();
   Mock::VerifyAndClearExpectations(&observer);
 
   // Unless the immediate work queue is emptied.
-  manager_->TakeTask();
-  manager_->TakeTask();
+  sequence_manager()->TakeTask();
+  sequence_manager()->TakeTask();
   EXPECT_CALL(observer, OnQueueNextWakeUpChanged(queue.get(), _));
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  manager_->ReloadEmptyWorkQueues();
+  sequence_manager()->ReloadEmptyWorkQueues();
   Mock::VerifyAndClearExpectations(&observer);
 
   // Tidy up.
@@ -2031,7 +2138,7 @@
 TEST_P(SequenceManagerTest, TaskQueueObserver_DelayedTask) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
   TimeDelta delay10s(TimeDelta::FromSeconds(10));
   TimeDelta delay100s(TimeDelta::FromSeconds(100));
   TimeDelta delay1s(TimeDelta::FromSeconds(1));
@@ -2082,7 +2189,7 @@
   queues[0]->SetObserver(&observer);
   queues[1]->SetObserver(&observer);
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
   TimeDelta delay1s(TimeDelta::FromSeconds(1));
   TimeDelta delay10s(TimeDelta::FromSeconds(10));
 
@@ -2155,9 +2262,9 @@
 
   std::unique_ptr<TimeDomain> mock_time_domain =
       std::make_unique<internal::RealTimeDomain>();
-  manager_->RegisterTimeDomain(mock_time_domain.get());
+  sequence_manager()->RegisterTimeDomain(mock_time_domain.get());
 
-  test_task_runner_->AdvanceMockTickClock(delay10s);
+  AdvanceMockTickClock(delay10s);
 
   EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _));
   queue->SetTimeDomain(mock_time_domain.get());
@@ -2186,7 +2293,7 @@
   MockTaskQueueObserver observer;
   queue->SetObserver(&observer);
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
   TimeDelta delay1(TimeDelta::FromSeconds(5));
   TimeDelta delay2(TimeDelta::FromSeconds(10));
 
@@ -2194,8 +2301,8 @@
               OnQueueNextWakeUpChanged(queue.get(), start_time + delay1))
       .Times(1);
 
-  CancelableTask task1(GetTickClock());
-  CancelableTask task2(GetTickClock());
+  CancelableTask task1(mock_tick_clock());
+  CancelableTask task2(mock_tick_clock());
   std::vector<TimeTicks> run_times;
   queue->task_runner()->PostDelayedTask(
       FROM_HERE,
@@ -2214,7 +2321,7 @@
   EXPECT_CALL(observer,
               OnQueueNextWakeUpChanged(queue.get(), start_time + delay2))
       .Times(1);
-  manager_->ReclaimMemory();
+  sequence_manager()->ReclaimMemory();
 }
 
 namespace {
@@ -2225,8 +2332,11 @@
 }
 }  // namespace
 
-TEST_P(SequenceManagerTest, NumberOfPendingTasksOnChromiumRunLoop) {
-  auto queue = CreateTaskQueue();
+TEST(SequenceManagerTestWithMockTaskRunner,
+     NumberOfPendingTasksOnChromiumRunLoop) {
+  FixtureWithMockTaskRunner fixture;
+  auto queue =
+      fixture.sequence_manager()->CreateTaskQueue(TaskQueue::Spec("test"));
 
   // NOTE because tasks posted to the chromiumrun loop are not cancellable, we
   // will end up with a lot more tasks posted if the delayed tasks were posted
@@ -2234,23 +2344,24 @@
   // TODO(alexclarke): Consider talking to the message pump directly.
   for (int i = 1; i < 100; i++) {
     queue->task_runner()->PostDelayedTask(
-        FROM_HERE, BindOnce(&ChromiumRunloopInspectionTask, test_task_runner_),
+        FROM_HERE,
+        BindOnce(&ChromiumRunloopInspectionTask, fixture.test_task_runner()),
         TimeDelta::FromMilliseconds(i));
   }
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  fixture.FastForwardUntilNoTasksRemain();
 }
 
 namespace {
 
 class QuadraticTask {
  public:
-  QuadraticTask(scoped_refptr<TestTaskQueue> task_queue,
+  QuadraticTask(scoped_refptr<TaskRunner> task_runner,
                 TimeDelta delay,
-                scoped_refptr<TestMockTimeTaskRunner> test_task_runner)
+                Fixture* fixture)
       : count_(0),
-        task_queue_(task_queue),
+        task_runner_(task_runner),
         delay_(delay),
-        test_task_runner_(test_task_runner) {}
+        fixture_(fixture) {}
 
   void SetShouldExit(RepeatingCallback<bool()> should_exit) {
     should_exit_ = should_exit;
@@ -2260,32 +2371,32 @@
     if (should_exit_.Run())
       return;
     count_++;
-    task_queue_->task_runner()->PostDelayedTask(
+    task_runner_->PostDelayedTask(
         FROM_HERE, BindOnce(&QuadraticTask::Run, Unretained(this)), delay_);
-    task_queue_->task_runner()->PostDelayedTask(
+    task_runner_->PostDelayedTask(
         FROM_HERE, BindOnce(&QuadraticTask::Run, Unretained(this)), delay_);
-    test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(5));
+    fixture_->FastForwardBy(TimeDelta::FromMilliseconds(5));
   }
 
   int Count() const { return count_; }
 
  private:
   int count_;
-  scoped_refptr<TestTaskQueue> task_queue_;
+  scoped_refptr<TaskRunner> task_runner_;
   TimeDelta delay_;
+  Fixture* fixture_;
   RepeatingCallback<bool()> should_exit_;
-  scoped_refptr<TestMockTimeTaskRunner> test_task_runner_;
 };
 
 class LinearTask {
  public:
-  LinearTask(scoped_refptr<TestTaskQueue> task_queue,
+  LinearTask(scoped_refptr<TaskRunner> task_runner,
              TimeDelta delay,
-             scoped_refptr<TestMockTimeTaskRunner> test_task_runner)
+             Fixture* fixture)
       : count_(0),
-        task_queue_(task_queue),
+        task_runner_(task_runner),
         delay_(delay),
-        test_task_runner_(test_task_runner) {}
+        fixture_(fixture) {}
 
   void SetShouldExit(RepeatingCallback<bool()> should_exit) {
     should_exit_ = should_exit;
@@ -2295,19 +2406,19 @@
     if (should_exit_.Run())
       return;
     count_++;
-    task_queue_->task_runner()->PostDelayedTask(
+    task_runner_->PostDelayedTask(
         FROM_HERE, BindOnce(&LinearTask::Run, Unretained(this)), delay_);
-    test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(5));
+    fixture_->FastForwardBy(TimeDelta::FromMilliseconds(5));
   }
 
   int Count() const { return count_; }
 
  private:
   int count_;
-  scoped_refptr<TestTaskQueue> task_queue_;
+  scoped_refptr<TaskRunner> task_runner_;
   TimeDelta delay_;
+  Fixture* fixture_;
   RepeatingCallback<bool()> should_exit_;
-  scoped_refptr<TestMockTimeTaskRunner> test_task_runner_;
 };
 
 bool ShouldExit(QuadraticTask* quadratic_task, LinearTask* linear_task) {
@@ -2320,9 +2431,9 @@
        DelayedTasksDontBadlyStarveNonDelayedWork_SameQueue) {
   auto queue = CreateTaskQueue();
 
-  QuadraticTask quadratic_delayed_task(queue, TimeDelta::FromMilliseconds(10),
-                                       test_task_runner_);
-  LinearTask linear_immediate_task(queue, TimeDelta(), test_task_runner_);
+  QuadraticTask quadratic_delayed_task(queue->task_runner(),
+                                       TimeDelta::FromMilliseconds(10), this);
+  LinearTask linear_immediate_task(queue->task_runner(), TimeDelta(), this);
   RepeatingCallback<bool()> should_exit = BindRepeating(
       ShouldExit, &quadratic_delayed_task, &linear_immediate_task);
   quadratic_delayed_task.SetShouldExit(should_exit);
@@ -2331,7 +2442,7 @@
   quadratic_delayed_task.Run();
   linear_immediate_task.Run();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   double ratio = static_cast<double>(linear_immediate_task.Count()) /
                  static_cast<double>(quadratic_delayed_task.Count());
@@ -2343,9 +2454,10 @@
 TEST_P(SequenceManagerTest, ImmediateWorkCanStarveDelayedTasks_SameQueue) {
   auto queue = CreateTaskQueue();
 
-  QuadraticTask quadratic_immediate_task(queue, TimeDelta(), test_task_runner_);
-  LinearTask linear_delayed_task(queue, TimeDelta::FromMilliseconds(10),
-                                 test_task_runner_);
+  QuadraticTask quadratic_immediate_task(queue->task_runner(), TimeDelta(),
+                                         this);
+  LinearTask linear_delayed_task(queue->task_runner(),
+                                 TimeDelta::FromMilliseconds(10), this);
   RepeatingCallback<bool()> should_exit = BindRepeating(
       &ShouldExit, &quadratic_immediate_task, &linear_delayed_task);
 
@@ -2355,7 +2467,7 @@
   quadratic_immediate_task.Run();
   linear_delayed_task.Run();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   double ratio = static_cast<double>(linear_delayed_task.Count()) /
                  static_cast<double>(quadratic_immediate_task.Count());
@@ -2370,9 +2482,9 @@
        DelayedTasksDontBadlyStarveNonDelayedWork_DifferentQueue) {
   auto queues = CreateTaskQueues(2u);
 
-  QuadraticTask quadratic_delayed_task(
-      queues[0], TimeDelta::FromMilliseconds(10), test_task_runner_);
-  LinearTask linear_immediate_task(queues[1], TimeDelta(), test_task_runner_);
+  QuadraticTask quadratic_delayed_task(queues[0]->task_runner(),
+                                       TimeDelta::FromMilliseconds(10), this);
+  LinearTask linear_immediate_task(queues[1]->task_runner(), TimeDelta(), this);
   RepeatingCallback<bool()> should_exit = BindRepeating(
       ShouldExit, &quadratic_delayed_task, &linear_immediate_task);
   quadratic_delayed_task.SetShouldExit(should_exit);
@@ -2381,7 +2493,7 @@
   quadratic_delayed_task.Run();
   linear_immediate_task.Run();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   double ratio = static_cast<double>(linear_immediate_task.Count()) /
                  static_cast<double>(quadratic_delayed_task.Count());
@@ -2393,10 +2505,10 @@
 TEST_P(SequenceManagerTest, ImmediateWorkCanStarveDelayedTasks_DifferentQueue) {
   auto queues = CreateTaskQueues(2u);
 
-  QuadraticTask quadratic_immediate_task(queues[0], TimeDelta(),
-                                         test_task_runner_);
-  LinearTask linear_delayed_task(queues[1], TimeDelta::FromMilliseconds(10),
-                                 test_task_runner_);
+  QuadraticTask quadratic_immediate_task(queues[0]->task_runner(), TimeDelta(),
+                                         this);
+  LinearTask linear_delayed_task(queues[1]->task_runner(),
+                                 TimeDelta::FromMilliseconds(10), this);
   RepeatingCallback<bool()> should_exit = BindRepeating(
       &ShouldExit, &quadratic_immediate_task, &linear_delayed_task);
 
@@ -2406,7 +2518,7 @@
   quadratic_immediate_task.Run();
   linear_delayed_task.Run();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   double ratio = static_cast<double>(linear_delayed_task.Count()) /
                  static_cast<double>(quadratic_immediate_task.Count());
@@ -2420,7 +2532,7 @@
 TEST_P(SequenceManagerTest, CurrentlyExecutingTaskQueue_NoTaskRunning) {
   auto queue = CreateTaskQueue();
 
-  EXPECT_EQ(nullptr, manager_->currently_executing_task_queue());
+  EXPECT_EQ(nullptr, sequence_manager()->currently_executing_task_queue());
 }
 
 namespace {
@@ -2438,17 +2550,17 @@
   TestTaskQueue* queue1 = queues[1].get();
 
   std::vector<internal::TaskQueueImpl*> task_sources;
-  queue0->task_runner()->PostTask(
-      FROM_HERE, BindOnce(&CurrentlyExecutingTaskQueueTestTask, manager_.get(),
-                          &task_sources));
-  queue1->task_runner()->PostTask(
-      FROM_HERE, BindOnce(&CurrentlyExecutingTaskQueueTestTask, manager_.get(),
-                          &task_sources));
+  queue0->task_runner()->PostTask(FROM_HERE,
+                                  BindOnce(&CurrentlyExecutingTaskQueueTestTask,
+                                           sequence_manager(), &task_sources));
+  queue1->task_runner()->PostTask(FROM_HERE,
+                                  BindOnce(&CurrentlyExecutingTaskQueueTestTask,
+                                           sequence_manager(), &task_sources));
   RunLoop().RunUntilIdle();
 
   EXPECT_THAT(task_sources, ElementsAre(queue0->GetTaskQueueImpl(),
                                         queue1->GetTaskQueueImpl()));
-  EXPECT_EQ(nullptr, manager_->currently_executing_task_queue());
+  EXPECT_EQ(nullptr, sequence_manager()->currently_executing_task_queue());
 }
 
 namespace {
@@ -2527,12 +2639,12 @@
 TEST_P(SequenceManagerTest, NoWakeUpsForCanceledDelayedTasks) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
 
-  CancelableTask task1(GetTickClock());
-  CancelableTask task2(GetTickClock());
-  CancelableTask task3(GetTickClock());
-  CancelableTask task4(GetTickClock());
+  CancelableTask task1(mock_tick_clock());
+  CancelableTask task2(mock_tick_clock());
+  CancelableTask task3(mock_tick_clock());
+  CancelableTask task4(mock_tick_clock());
   TimeDelta delay1(TimeDelta::FromSeconds(5));
   TimeDelta delay2(TimeDelta::FromSeconds(10));
   TimeDelta delay3(TimeDelta::FromSeconds(15));
@@ -2568,7 +2680,7 @@
       [](std::set<TimeTicks>* wake_up_times, const TickClock* clock) {
         wake_up_times->insert(clock->NowTicks());
       },
-      &wake_up_times, GetTickClock()));
+      &wake_up_times, mock_tick_clock()));
 
   EXPECT_THAT(wake_up_times,
               ElementsAre(start_time + delay1, start_time + delay4));
@@ -2578,12 +2690,12 @@
 TEST_P(SequenceManagerTest, NoWakeUpsForCanceledDelayedTasksReversePostOrder) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
 
-  CancelableTask task1(GetTickClock());
-  CancelableTask task2(GetTickClock());
-  CancelableTask task3(GetTickClock());
-  CancelableTask task4(GetTickClock());
+  CancelableTask task1(mock_tick_clock());
+  CancelableTask task2(mock_tick_clock());
+  CancelableTask task3(mock_tick_clock());
+  CancelableTask task4(mock_tick_clock());
   TimeDelta delay1(TimeDelta::FromSeconds(5));
   TimeDelta delay2(TimeDelta::FromSeconds(10));
   TimeDelta delay3(TimeDelta::FromSeconds(15));
@@ -2619,7 +2731,7 @@
       [](std::set<TimeTicks>* wake_up_times, const TickClock* clock) {
         wake_up_times->insert(clock->NowTicks());
       },
-      &wake_up_times, GetTickClock()));
+      &wake_up_times, mock_tick_clock()));
 
   EXPECT_THAT(wake_up_times,
               ElementsAre(start_time + delay1, start_time + delay4));
@@ -2629,12 +2741,12 @@
 TEST_P(SequenceManagerTest, TimeDomainWakeUpOnlyCancelledIfAllUsesCancelled) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
 
-  CancelableTask task1(GetTickClock());
-  CancelableTask task2(GetTickClock());
-  CancelableTask task3(GetTickClock());
-  CancelableTask task4(GetTickClock());
+  CancelableTask task1(mock_tick_clock());
+  CancelableTask task2(mock_tick_clock());
+  CancelableTask task3(mock_tick_clock());
+  CancelableTask task4(mock_tick_clock());
   TimeDelta delay1(TimeDelta::FromSeconds(5));
   TimeDelta delay2(TimeDelta::FromSeconds(10));
   TimeDelta delay3(TimeDelta::FromSeconds(15));
@@ -2678,7 +2790,7 @@
       [](std::set<TimeTicks>* wake_up_times, const TickClock* clock) {
         wake_up_times->insert(clock->NowTicks());
       },
-      &wake_up_times, GetTickClock()));
+      &wake_up_times, mock_tick_clock()));
 
   EXPECT_THAT(wake_up_times,
               ElementsAre(start_time + delay1, start_time + delay3,
@@ -2762,10 +2874,10 @@
 TEST_P(SequenceManagerTest, SweepCanceledDelayedTasks) {
   auto queue = CreateTaskQueue();
 
-  CancelableTask task1(GetTickClock());
-  CancelableTask task2(GetTickClock());
-  CancelableTask task3(GetTickClock());
-  CancelableTask task4(GetTickClock());
+  CancelableTask task1(mock_tick_clock());
+  CancelableTask task2(mock_tick_clock());
+  CancelableTask task3(mock_tick_clock());
+  CancelableTask task4(mock_tick_clock());
   TimeDelta delay1(TimeDelta::FromSeconds(5));
   TimeDelta delay2(TimeDelta::FromSeconds(10));
   TimeDelta delay3(TimeDelta::FromSeconds(15));
@@ -2797,27 +2909,27 @@
   task3.weak_factory_.InvalidateWeakPtrs();
   EXPECT_EQ(4u, queue->GetNumberOfPendingTasks());
 
-  manager_->ReclaimMemory();
+  sequence_manager()->ReclaimMemory();
   EXPECT_EQ(2u, queue->GetNumberOfPendingTasks());
 
   task1.weak_factory_.InvalidateWeakPtrs();
   task4.weak_factory_.InvalidateWeakPtrs();
 
-  manager_->ReclaimMemory();
+  sequence_manager()->ReclaimMemory();
   EXPECT_EQ(0u, queue->GetNumberOfPendingTasks());
 }
 
 TEST_P(SequenceManagerTest, SweepCanceledDelayedTasks_ManyTasks) {
   auto queue = CreateTaskQueue();
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
 
   constexpr const int kNumTasks = 100;
 
   std::vector<std::unique_ptr<CancelableTask>> tasks(100);
   std::vector<TimeTicks> run_times;
   for (int i = 0; i < kNumTasks; i++) {
-    tasks[i] = std::make_unique<CancelableTask>(GetTickClock());
+    tasks[i] = std::make_unique<CancelableTask>(mock_tick_clock());
     queue->task_runner()->PostDelayedTask(
         FROM_HERE,
         BindOnce(&CancelableTask::RecordTimeTask,
@@ -2831,11 +2943,11 @@
       tasks[i]->weak_factory_.InvalidateWeakPtrs();
   }
 
-  manager_->ReclaimMemory();
+  sequence_manager()->ReclaimMemory();
   EXPECT_EQ(50u, queue->GetNumberOfPendingTasks());
 
   // Make sure the priority queue still operates as expected.
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
   ASSERT_EQ(50u, run_times.size());
   for (int i = 0; i < 50; i++) {
     TimeTicks expected_run_time =
@@ -2847,27 +2959,30 @@
 TEST_P(SequenceManagerTest, DelayTillNextTask) {
   auto queues = CreateTaskQueues(2u);
 
-  LazyNow lazy_now(GetTickClock());
-  EXPECT_EQ(TimeDelta::Max(), manager_->DelayTillNextTask(&lazy_now));
+  LazyNow lazy_now(mock_tick_clock());
+  EXPECT_EQ(TimeDelta::Max(), sequence_manager()->DelayTillNextTask(&lazy_now));
 
   queues[0]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             TimeDelta::FromSeconds(10));
 
-  EXPECT_EQ(TimeDelta::FromSeconds(10), manager_->DelayTillNextTask(&lazy_now));
+  EXPECT_EQ(TimeDelta::FromSeconds(10),
+            sequence_manager()->DelayTillNextTask(&lazy_now));
 
   queues[1]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             TimeDelta::FromSeconds(15));
 
-  EXPECT_EQ(TimeDelta::FromSeconds(10), manager_->DelayTillNextTask(&lazy_now));
+  EXPECT_EQ(TimeDelta::FromSeconds(10),
+            sequence_manager()->DelayTillNextTask(&lazy_now));
 
   queues[1]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             TimeDelta::FromSeconds(5));
 
-  EXPECT_EQ(TimeDelta::FromSeconds(5), manager_->DelayTillNextTask(&lazy_now));
+  EXPECT_EQ(TimeDelta::FromSeconds(5),
+            sequence_manager()->DelayTillNextTask(&lazy_now));
 
   queues[0]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
 
-  EXPECT_EQ(TimeDelta(), manager_->DelayTillNextTask(&lazy_now));
+  EXPECT_EQ(TimeDelta(), sequence_manager()->DelayTillNextTask(&lazy_now));
 }
 
 TEST_P(SequenceManagerTest, DelayTillNextTask_Disabled) {
@@ -2878,8 +2993,8 @@
   voter->SetQueueEnabled(false);
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
 
-  LazyNow lazy_now(GetTickClock());
-  EXPECT_EQ(TimeDelta::Max(), manager_->DelayTillNextTask(&lazy_now));
+  LazyNow lazy_now(mock_tick_clock());
+  EXPECT_EQ(TimeDelta::Max(), sequence_manager()->DelayTillNextTask(&lazy_now));
 }
 
 TEST_P(SequenceManagerTest, DelayTillNextTask_Fence) {
@@ -2888,8 +3003,8 @@
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
 
-  LazyNow lazy_now(GetTickClock());
-  EXPECT_EQ(TimeDelta::Max(), manager_->DelayTillNextTask(&lazy_now));
+  LazyNow lazy_now(mock_tick_clock());
+  EXPECT_EQ(TimeDelta::Max(), sequence_manager()->DelayTillNextTask(&lazy_now));
 }
 
 TEST_P(SequenceManagerTest, DelayTillNextTask_FenceUnblocking) {
@@ -2899,8 +3014,8 @@
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
 
-  LazyNow lazy_now(GetTickClock());
-  EXPECT_EQ(TimeDelta(), manager_->DelayTillNextTask(&lazy_now));
+  LazyNow lazy_now(mock_tick_clock());
+  EXPECT_EQ(TimeDelta(), sequence_manager()->DelayTillNextTask(&lazy_now));
 }
 
 TEST_P(SequenceManagerTest, DelayTillNextTask_DelayedTaskReady) {
@@ -2909,10 +3024,10 @@
   queue->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                         TimeDelta::FromSeconds(1));
 
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromSeconds(10));
+  AdvanceMockTickClock(TimeDelta::FromSeconds(10));
 
-  LazyNow lazy_now(GetTickClock());
-  EXPECT_EQ(TimeDelta(), manager_->DelayTillNextTask(&lazy_now));
+  LazyNow lazy_now(mock_tick_clock());
+  EXPECT_EQ(TimeDelta(), sequence_manager()->DelayTillNextTask(&lazy_now));
 }
 
 namespace {
@@ -2965,7 +3080,7 @@
 TEST_P(SequenceManagerTest, CouldTaskRun_DisableAndReenable) {
   auto queue = CreateTaskQueue();
 
-  EnqueueOrder enqueue_order = manager_->GetNextSequenceNumber();
+  EnqueueOrder enqueue_order = sequence_manager()->GetNextSequenceNumber();
   EXPECT_TRUE(queue->GetTaskQueueImpl()->CouldTaskRun(enqueue_order));
 
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
@@ -2980,7 +3095,7 @@
 TEST_P(SequenceManagerTest, CouldTaskRun_Fence) {
   auto queue = CreateTaskQueue();
 
-  EnqueueOrder enqueue_order = manager_->GetNextSequenceNumber();
+  EnqueueOrder enqueue_order = sequence_manager()->GetNextSequenceNumber();
   EXPECT_TRUE(queue->GetTaskQueueImpl()->CouldTaskRun(enqueue_order));
 
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
@@ -2998,7 +3113,7 @@
 
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
 
-  EnqueueOrder enqueue_order = manager_->GetNextSequenceNumber();
+  EnqueueOrder enqueue_order = sequence_manager()->GetNextSequenceNumber();
   EXPECT_FALSE(queue->GetTaskQueueImpl()->CouldTaskRun(enqueue_order));
 
   queue->InsertFence(TaskQueue::InsertFencePosition::kNow);
@@ -3010,19 +3125,15 @@
 
   queue->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                         TimeDelta::FromMilliseconds(1));
-  ASSERT_TRUE(test_task_runner_->HasPendingTask());
-  EXPECT_EQ(TimeDelta::FromMilliseconds(1),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
 
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
       queue->CreateQueueEnabledVoter();
   voter->SetQueueEnabled(false);
-  EXPECT_FALSE(test_task_runner_->HasPendingTask());
+  EXPECT_EQ(TimeDelta::Max(), NextPendingTaskDelay());
 
   voter->SetQueueEnabled(true);
-  ASSERT_TRUE(test_task_runner_->HasPendingTask());
-  EXPECT_EQ(TimeDelta::FromMilliseconds(1),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
 }
 
 TEST_P(SequenceManagerTest, DisablingQueuesChangesDelayTillNextDoWork) {
@@ -3041,22 +3152,16 @@
   std::unique_ptr<TaskQueue::QueueEnabledVoter> voter2 =
       queues[2]->CreateQueueEnabledVoter();
 
-  ASSERT_TRUE(test_task_runner_->HasPendingTask());
-  EXPECT_EQ(TimeDelta::FromMilliseconds(1),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
 
   voter0->SetQueueEnabled(false);
-  ASSERT_TRUE(test_task_runner_->HasPendingTask());
-  EXPECT_EQ(TimeDelta::FromMilliseconds(10),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(10), NextPendingTaskDelay());
 
   voter1->SetQueueEnabled(false);
-  ASSERT_TRUE(test_task_runner_->HasPendingTask());
-  EXPECT_EQ(TimeDelta::FromMilliseconds(100),
-            test_task_runner_->NextPendingTaskDelay());
+  EXPECT_EQ(TimeDelta::FromMilliseconds(100), NextPendingTaskDelay());
 
   voter2->SetQueueEnabled(false);
-  EXPECT_FALSE(test_task_runner_->HasPendingTask());
+  EXPECT_EQ(TimeDelta::Max(), NextPendingTaskDelay());
 }
 
 TEST_P(SequenceManagerTest, GetNextScheduledWakeUp) {
@@ -3064,7 +3169,7 @@
 
   EXPECT_EQ(nullopt, queue->GetNextScheduledWakeUp());
 
-  TimeTicks start_time = manager_->NowTicks();
+  TimeTicks start_time = sequence_manager()->NowTicks();
   TimeDelta delay1 = TimeDelta::FromMilliseconds(10);
   TimeDelta delay2 = TimeDelta::FromMilliseconds(2);
 
@@ -3109,13 +3214,13 @@
   EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
 
   std::unique_ptr<MockTimeDomain> domain =
-      std::make_unique<MockTimeDomain>(manager_->NowTicks());
-  manager_->RegisterTimeDomain(domain.get());
+      std::make_unique<MockTimeDomain>(sequence_manager()->NowTicks());
+  sequence_manager()->RegisterTimeDomain(domain.get());
   queue->SetTimeDomain(domain.get());
 
   // Tidy up.
   queue->ShutdownTaskQueue();
-  manager_->UnregisterTimeDomain(domain.get());
+  sequence_manager()->UnregisterTimeDomain(domain.get());
 }
 
 namespace {
@@ -3169,11 +3274,12 @@
 }
 
 TEST_P(SequenceManagerTest, ProcessTasksWithTaskTimeObservers) {
+  TestTaskTimeObserver test_task_time_observer;
   auto queue = CreateTaskQueue();
   int start_counter = 0;
   int complete_counter = 0;
 
-  manager_->AddTaskTimeObserver(&test_task_time_observer_);
+  sequence_manager()->AddTaskTimeObserver(&test_task_time_observer);
   SetOnTaskHandlers(queue, &start_counter, &complete_counter);
   EXPECT_TRUE(queue->GetTaskQueueImpl()->RequiresTaskTiming());
   std::vector<EnqueueOrder> run_order;
@@ -3195,7 +3301,7 @@
   EXPECT_EQ(complete_counter, 2);
   EXPECT_THAT(run_order, ElementsAre(1u, 2u, 3u, 4u));
 
-  manager_->RemoveTaskTimeObserver(&test_task_time_observer_);
+  sequence_manager()->RemoveTaskTimeObserver(&test_task_time_observer);
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 5, &run_order));
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&TestTask, 6, &run_order));
 
@@ -3228,51 +3334,53 @@
   main_tq->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
 
   main_tq = nullptr;
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 }
 
 TEST_P(SequenceManagerTest, GracefulShutdown) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   std::vector<TimeTicks> run_times;
   scoped_refptr<TestTaskQueue> main_tq = CreateTaskQueue();
   WeakPtr<TestTaskQueue> main_tq_weak_ptr = main_tq->GetWeakPtr();
 
-  EXPECT_EQ(1u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(0u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(1u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
   for (int i = 1; i <= 5; ++i) {
     main_tq->task_runner()->PostDelayedTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
         TimeDelta::FromMilliseconds(i * 100));
   }
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(250));
+  FastForwardBy(TimeDelta::FromMilliseconds(250));
 
   main_tq = nullptr;
   // Ensure that task queue went away.
   EXPECT_FALSE(main_tq_weak_ptr.get());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(1));
+  FastForwardBy(TimeDelta::FromMilliseconds(1));
 
-  EXPECT_EQ(1u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(1u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(1u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(1u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   // Even with TaskQueue gone, tasks are executed.
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(100),
-                          start_time_ + TimeDelta::FromMilliseconds(200),
-                          start_time_ + TimeDelta::FromMilliseconds(300),
-                          start_time_ + TimeDelta::FromMilliseconds(400),
-                          start_time_ + TimeDelta::FromMilliseconds(500)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(100),
+                          kStartTime + TimeDelta::FromMilliseconds(200),
+                          kStartTime + TimeDelta::FromMilliseconds(300),
+                          kStartTime + TimeDelta::FromMilliseconds(400),
+                          kStartTime + TimeDelta::FromMilliseconds(500)));
 
-  EXPECT_EQ(0u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(0u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(0u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 }
 
 TEST_P(SequenceManagerTest, GracefulShutdown_ManagerDeletedInFlight) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   std::vector<TimeTicks> run_times;
   scoped_refptr<TestTaskQueue> control_tq = CreateTaskQueue();
   std::vector<scoped_refptr<TestTaskQueue>> main_tqs;
@@ -3293,10 +3401,10 @@
 
   for (int i = 1; i <= 5; ++i) {
     main_tqs[0]->task_runner()->PostDelayedTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
         TimeDelta::FromMilliseconds(i * 100));
   }
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(250));
+  FastForwardBy(TimeDelta::FromMilliseconds(250));
 
   main_tqs.clear();
   // Ensure that task queues went away.
@@ -3307,50 +3415,51 @@
   // No leaks should occur when TQM was destroyed before processing
   // shutdown task and TaskQueueImpl should be safely deleted on a correct
   // thread.
-  manager_.reset();
+  DestroySequenceManager();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(100),
-                          start_time_ + TimeDelta::FromMilliseconds(200)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(100),
+                          kStartTime + TimeDelta::FromMilliseconds(200)));
 }
 
 TEST_P(SequenceManagerTest,
        GracefulShutdown_ManagerDeletedWithQueuesToShutdown) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   std::vector<TimeTicks> run_times;
   scoped_refptr<TestTaskQueue> main_tq = CreateTaskQueue();
   WeakPtr<TestTaskQueue> main_tq_weak_ptr = main_tq->GetWeakPtr();
 
-  EXPECT_EQ(1u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(0u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(1u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
   for (int i = 1; i <= 5; ++i) {
     main_tq->task_runner()->PostDelayedTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
         TimeDelta::FromMilliseconds(i * 100));
   }
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(250));
+  FastForwardBy(TimeDelta::FromMilliseconds(250));
 
   main_tq = nullptr;
   // Ensure that task queue went away.
   EXPECT_FALSE(main_tq_weak_ptr.get());
 
-  test_task_runner_->FastForwardBy(TimeDelta::FromMilliseconds(1));
+  FastForwardBy(TimeDelta::FromMilliseconds(1));
 
-  EXPECT_EQ(1u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(1u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(1u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(1u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
   // Ensure that all queues-to-gracefully-shutdown are properly unregistered.
-  manager_.reset();
+  DestroySequenceManager();
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(100),
-                          start_time_ + TimeDelta::FromMilliseconds(200)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(100),
+                          kStartTime + TimeDelta::FromMilliseconds(200)));
 }
 
 TEST_P(SequenceManagerTestWithCustomInitialization, DefaultTaskRunnerSupport) {
@@ -3374,8 +3483,8 @@
 TEST_P(SequenceManagerTest, CanceledTasksInQueueCantMakeOtherTasksSkipAhead) {
   auto queues = CreateTaskQueues(2u);
 
-  CancelableTask task1(GetTickClock());
-  CancelableTask task2(GetTickClock());
+  CancelableTask task1(mock_tick_clock());
+  CancelableTask task2(mock_tick_clock());
   std::vector<TimeTicks> run_times;
 
   queues[0]->task_runner()->PostTask(
@@ -3400,6 +3509,7 @@
 }
 
 TEST_P(SequenceManagerTest, TaskRunnerDeletedOnAnotherThread) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   std::vector<TimeTicks> run_times;
   scoped_refptr<TestTaskQueue> main_tq = CreateTaskQueue();
   scoped_refptr<TaskRunner> task_runner =
@@ -3409,13 +3519,13 @@
   int complete_counter = 0;
   SetOnTaskHandlers(main_tq, &start_counter, &complete_counter);
 
-  EXPECT_EQ(1u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(0u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(1u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
   for (int i = 1; i <= 5; ++i) {
     task_runner->PostDelayedTask(
-        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, GetTickClock()),
+        FROM_HERE, BindOnce(&RecordTimeTask, &run_times, mock_tick_clock()),
         TimeDelta::FromMilliseconds(i * 100));
   }
 
@@ -3441,23 +3551,23 @@
                      std::move(task_runner), &task_queue_deleted));
   task_queue_deleted.Wait();
 
-  EXPECT_EQ(1u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(1u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(1u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(1u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
 
   // Even with TaskQueue gone, tasks are executed.
   EXPECT_THAT(run_times,
-              ElementsAre(start_time_ + TimeDelta::FromMilliseconds(100),
-                          start_time_ + TimeDelta::FromMilliseconds(200),
-                          start_time_ + TimeDelta::FromMilliseconds(300),
-                          start_time_ + TimeDelta::FromMilliseconds(400),
-                          start_time_ + TimeDelta::FromMilliseconds(500)));
+              ElementsAre(kStartTime + TimeDelta::FromMilliseconds(100),
+                          kStartTime + TimeDelta::FromMilliseconds(200),
+                          kStartTime + TimeDelta::FromMilliseconds(300),
+                          kStartTime + TimeDelta::FromMilliseconds(400),
+                          kStartTime + TimeDelta::FromMilliseconds(500)));
 
-  EXPECT_EQ(0u, manager_->ActiveQueuesCount());
-  EXPECT_EQ(0u, manager_->QueuesToShutdownCount());
-  EXPECT_EQ(0u, manager_->QueuesToDeleteCount());
+  EXPECT_EQ(0u, sequence_manager()->ActiveQueuesCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToShutdownCount());
+  EXPECT_EQ(0u, sequence_manager()->QueuesToDeleteCount());
 
   thread->Stop();
 }
@@ -3502,7 +3612,7 @@
   std::unique_ptr<Thread> thread = std::make_unique<Thread>("test thread");
   thread->StartAndWaitForTesting();
 
-  manager_.reset();
+  DestroySequenceManager();
 
   thread->task_runner()->PostTask(
       FROM_HERE, BindOnce(
@@ -3549,7 +3659,7 @@
                            RunOnDestruction(base::BindOnce(
                                [](bool* run) { *run = true; }, &run)))));
 
-  manager_.reset();
+  DestroySequenceManager();
 
   EXPECT_TRUE(run);
 }
@@ -3602,29 +3712,31 @@
 #endif
 
   // Only the third task needs high resolution timing.
-  EXPECT_FALSE(manager_->HasPendingHighResolutionTasks());
+  EXPECT_FALSE(sequence_manager()->HasPendingHighResolutionTasks());
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_FALSE(manager_->HasPendingHighResolutionTasks());
+  EXPECT_FALSE(sequence_manager()->HasPendingHighResolutionTasks());
   queue->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                         TimeDelta::FromMilliseconds(100));
-  EXPECT_FALSE(manager_->HasPendingHighResolutionTasks());
+  EXPECT_FALSE(sequence_manager()->HasPendingHighResolutionTasks());
   queue->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                         TimeDelta::FromMilliseconds(10));
-  EXPECT_EQ(manager_->HasPendingHighResolutionTasks(), supports_high_res);
+  EXPECT_EQ(sequence_manager()->HasPendingHighResolutionTasks(),
+            supports_high_res);
 
   // Running immediate tasks doesn't affect pending high resolution tasks.
   RunLoop().RunUntilIdle();
-  EXPECT_EQ(manager_->HasPendingHighResolutionTasks(), supports_high_res);
+  EXPECT_EQ(sequence_manager()->HasPendingHighResolutionTasks(),
+            supports_high_res);
 
   // Advancing to just before a pending low resolution task doesn't mean that we
   // have pending high resolution work.
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(99));
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(99));
   RunLoop().RunUntilIdle();
-  EXPECT_FALSE(manager_->HasPendingHighResolutionTasks());
+  EXPECT_FALSE(sequence_manager()->HasPendingHighResolutionTasks());
 
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(100));
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(100));
   RunLoop().RunUntilIdle();
-  EXPECT_FALSE(manager_->HasPendingHighResolutionTasks());
+  EXPECT_FALSE(sequence_manager()->HasPendingHighResolutionTasks());
 }
 
 namespace {
@@ -3688,17 +3800,17 @@
                                             &tasks_alive, &tasks_deleted)));
 
   EXPECT_THAT(tasks_alive, ElementsAre("task 0"));
-  EXPECT_TRUE(manager_->HasTasks());
+  EXPECT_TRUE(sequence_manager()->HasTasks());
 
-  manager_->DeletePendingTasks();
+  sequence_manager()->DeletePendingTasks();
 
   EXPECT_THAT(tasks_alive, ElementsAre());
   EXPECT_THAT(tasks_deleted, ElementsAre("task 0"));
-  EXPECT_FALSE(manager_->HasTasks());
+  EXPECT_FALSE(sequence_manager()->HasTasks());
 
   // Ensure that |tasks_alive| and |tasks_deleted| outlive |manager_|
   // and we get a test failure instead of a test crash.
-  manager_.reset();
+  DestroySequenceManager();
 }
 
 TEST_P(SequenceManagerTest, DeletePendingTasks_Complex) {
@@ -3748,16 +3860,16 @@
                                             "Q4 D1", queues[1]->task_runner(),
                                             0, &tasks_alive, &tasks_deleted)),
       TimeDelta::FromMilliseconds(10));
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(100));
-  LazyNow lazy_now(test_task_runner_->GetMockTickClock());
-  manager_->WakeUpReadyDelayedQueues(&lazy_now);
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(100));
+  LazyNow lazy_now(mock_tick_clock());
+  sequence_manager()->WakeUpReadyDelayedQueues(&lazy_now);
 
   EXPECT_THAT(tasks_alive,
               UnorderedElementsAre("Q1 I1 1", "Q1 D1 0", "Q2 D1 1", "Q3 I1 0",
                                    "Q3 I2 1", "Q4 D1 0"));
-  EXPECT_TRUE(manager_->HasTasks());
+  EXPECT_TRUE(sequence_manager()->HasTasks());
 
-  manager_->DeletePendingTasks();
+  sequence_manager()->DeletePendingTasks();
 
   // Note that the tasks reposting themselves are still alive.
   EXPECT_THAT(tasks_alive,
@@ -3765,19 +3877,19 @@
   EXPECT_THAT(tasks_deleted,
               UnorderedElementsAre("Q1 I1 1", "Q1 D1 0", "Q2 D1 1", "Q3 I1 0",
                                    "Q3 I2 1", "Q4 D1 0"));
-  EXPECT_TRUE(manager_->HasTasks());
+  EXPECT_TRUE(sequence_manager()->HasTasks());
   tasks_deleted.clear();
 
   // Second call should remove the rest.
-  manager_->DeletePendingTasks();
+  sequence_manager()->DeletePendingTasks();
   EXPECT_THAT(tasks_alive, UnorderedElementsAre());
   EXPECT_THAT(tasks_deleted,
               UnorderedElementsAre("Q1 I1 0", "Q2 D1 0", "Q3 I2 0"));
-  EXPECT_FALSE(manager_->HasTasks());
+  EXPECT_FALSE(sequence_manager()->HasTasks());
 
   // Ensure that |tasks_alive| and |tasks_deleted| outlive |manager_|
   // and we get a test failure instead of a test crash.
-  manager_.reset();
+  DestroySequenceManager();
 }
 
 // TODO(altimin): Add a test that posts an infinite number of other tasks
@@ -3799,33 +3911,34 @@
   auto queue = CreateTaskQueue();
 
   QueueTimeTaskObserver observer;
-  manager_->AddTaskObserver(&observer);
+  sequence_manager()->AddTaskObserver(&observer);
 
   // We do not record task queue time when the setting is false.
-  manager_->SetAddQueueTimeToTasks(false);
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(99));
+  sequence_manager()->SetAddQueueTimeToTasks(false);
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(99));
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   RunLoop().RunUntilIdle();
   EXPECT_TRUE(observer.queue_time().is_null());
 
-  manager_->RemoveTaskObserver(&observer);
+  sequence_manager()->RemoveTaskObserver(&observer);
 }
 
 TEST_P(SequenceManagerTest, RecordsQueueTimeIfSettingTrue) {
+  const auto kStartTime = mock_tick_clock()->NowTicks();
   auto queue = CreateTaskQueue();
 
   QueueTimeTaskObserver observer;
-  manager_->AddTaskObserver(&observer);
+  sequence_manager()->AddTaskObserver(&observer);
 
   // We correctly record task queue time when the setting is true.
-  manager_->SetAddQueueTimeToTasks(true);
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(99));
+  sequence_manager()->SetAddQueueTimeToTasks(true);
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(99));
   queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
   RunLoop().RunUntilIdle();
   EXPECT_EQ(observer.queue_time(),
-            start_time_ + TimeDelta::FromMilliseconds(99));
+            kStartTime + TimeDelta::FromMilliseconds(99));
 
-  manager_->RemoveTaskObserver(&observer);
+  sequence_manager()->RemoveTaskObserver(&observer);
 }
 
 namespace {
@@ -3979,63 +4092,63 @@
 TEST_P(SequenceManagerTest, ThreadName) {
   std::string kThreadName1("foo");
   PlatformThread::SetName(kThreadName1);
-  EXPECT_EQ(kThreadName1, manager_->GetThreadName());
+  EXPECT_EQ(kThreadName1, sequence_manager()->GetThreadName());
 }
 
 TEST_P(SequenceManagerTest, CreateTaskQueue) {
   scoped_refptr<TaskQueue> task_queue =
-      manager_->CreateTaskQueue(TaskQueue::Spec("test"));
+      sequence_manager()->CreateTaskQueue(TaskQueue::Spec("test"));
   EXPECT_THAT(task_queue.get(), testing::NotNull());
 
   task_queue->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_EQ(1u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(1u, sequence_manager()->GetPendingTaskCountForTesting());
 }
 
 TEST_P(SequenceManagerTest, GetPendingTaskCountForTesting) {
   auto queues = CreateTaskQueues(3u);
 
-  EXPECT_EQ(0u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(0u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[0]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_EQ(1u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(1u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[0]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_EQ(2u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(2u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[0]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_EQ(3u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(3u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[1]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_EQ(4u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(4u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[2]->task_runner()->PostTask(FROM_HERE, BindOnce(&NopTask));
-  EXPECT_EQ(5u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(5u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[1]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             TimeDelta::FromMilliseconds(10));
-  EXPECT_EQ(6u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(6u, sequence_manager()->GetPendingTaskCountForTesting());
 
   queues[2]->task_runner()->PostDelayedTask(FROM_HERE, BindOnce(&NopTask),
                                             TimeDelta::FromMilliseconds(20));
-  EXPECT_EQ(7u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(7u, sequence_manager()->GetPendingTaskCountForTesting());
 
   RunLoop().RunUntilIdle();
-  EXPECT_EQ(2u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(2u, sequence_manager()->GetPendingTaskCountForTesting());
 
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(10));
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(10));
   RunLoop().RunUntilIdle();
-  EXPECT_EQ(1u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(1u, sequence_manager()->GetPendingTaskCountForTesting());
 
-  test_task_runner_->AdvanceMockTickClock(TimeDelta::FromMilliseconds(10));
+  AdvanceMockTickClock(TimeDelta::FromMilliseconds(10));
   RunLoop().RunUntilIdle();
-  EXPECT_EQ(0u, manager_->GetPendingTaskCountForTesting());
+  EXPECT_EQ(0u, sequence_manager()->GetPendingTaskCountForTesting());
 }
 
 TEST_P(SequenceManagerTest, PostDelayedTaskFromOtherThread) {
   scoped_refptr<TestTaskQueue> main_tq = CreateTaskQueue();
   scoped_refptr<TaskRunner> task_runner =
       main_tq->CreateTaskRunner(kTaskTypeNone);
-  manager_->SetAddQueueTimeToTasks(true);
+  sequence_manager()->SetAddQueueTimeToTasks(true);
 
   Thread thread("test thread");
   thread.StartAndWaitForTesting();
@@ -4053,7 +4166,7 @@
                      },
                      std::move(task_runner), &task_posted));
   task_posted.Wait();
-  test_task_runner_->FastForwardUntilNoTasksRemain();
+  FastForwardUntilNoTasksRemain();
   RunLoop().RunUntilIdle();
   thread.Stop();
 }
@@ -4083,7 +4196,7 @@
   PostTaskB(queues[1]->task_runner());
   PostTaskC(queues[2]->task_runner());
 
-  std::string description = manager_->DescribeAllPendingTasks();
+  std::string description = sequence_manager()->DescribeAllPendingTasks();
   EXPECT_THAT(description, HasSubstr("PostTaskA@"));
   EXPECT_THAT(description, HasSubstr("PostTaskB@"));
   EXPECT_THAT(description, HasSubstr("PostTaskC@"));
diff --git a/base/task/task_features.cc b/base/task/task_features.cc
index 2156bf1..99462a25 100644
--- a/base/task/task_features.cc
+++ b/base/task/task_features.cc
@@ -17,13 +17,4 @@
 const Feature kNoDetachBelowInitialCapacity = {
     "NoDetachBelowInitialCapacity", base::FEATURE_DISABLED_BY_DEFAULT};
 
-const Feature kMayBlockTimings = {"MayBlockTimings",
-                                  FEATURE_DISABLED_BY_DEFAULT};
-
-const FeatureParam<int> kMayBlockThresholdMicrosecondsParam = {
-    &kMayBlockTimings, "MayBlockThresholdMicroseconds", 10000};
-
-const FeatureParam<int> kBlockedWorkersPollMicrosecondsParam = {
-    &kMayBlockTimings, "BlockedWorkersPollMicroseconds", 50000};
-
 }  // namespace base
diff --git a/base/task/task_features.h b/base/task/task_features.h
index 7075118..f09b642 100644
--- a/base/task/task_features.h
+++ b/base/task/task_features.h
@@ -14,23 +14,11 @@
 
 extern const BASE_EXPORT Feature kAllTasksUserBlocking;
 extern const BASE_EXPORT Feature kMergeBlockingNonBlockingPools;
-extern const BASE_EXPORT Feature kMayBlockTimings;
 
 // Under this feature, unused threads in SchedulerWorkerPool are only detached
 // if the total number of threads in the pool is above the initial capacity.
 extern const BASE_EXPORT Feature kNoDetachBelowInitialCapacity;
 
-// Threshold after which the maximum number of tasks running in a foreground
-// pool can be incremented to compensate for a task that is within a MAY_BLOCK
-// ScopedBlockingCall (a constant is used for background pools).
-extern const BASE_EXPORT FeatureParam<int> kMayBlockThresholdMicrosecondsParam;
-
-// Interval at which the service thread checks for workers in a foreground pool
-// that have been in a MAY_BLOCK ScopedBlockingCall for more than
-// |kMayBlockThresholdMicrosecondsParam| (a constant is used for background
-// pools).
-extern const BASE_EXPORT FeatureParam<int> kBlockedWorkersPollMicrosecondsParam;
-
 }  // namespace base
 
 #endif  // BASE_TASK_TASK_FEATURES_H_
diff --git a/base/task/task_scheduler/scheduler_worker_pool_impl.cc b/base/task/task_scheduler/scheduler_worker_pool_impl.cc
index 056abd8..75a542f 100644
--- a/base/task/task_scheduler/scheduler_worker_pool_impl.cc
+++ b/base/task/task_scheduler/scheduler_worker_pool_impl.cc
@@ -72,6 +72,12 @@
 //    be scheduled concurrently when we believe that a BEST_EFFORT task is
 //    blocked forever.
 // Currently, only 1. is true as the configuration is per pool.
+// TODO(https://crbug.com/927755): Fix racy condition when MayBlockThreshold ==
+// BlockedWorkersPoll.
+constexpr TimeDelta kForegroundMayBlockThreshold =
+    TimeDelta::FromMilliseconds(1000);
+constexpr TimeDelta kForegroundBlockedWorkersPoll =
+    TimeDelta::FromMilliseconds(1200);
 constexpr TimeDelta kBackgroundMayBlockThreshold = TimeDelta::FromSeconds(10);
 constexpr TimeDelta kBackgroundBlockedWorkersPoll = TimeDelta::FromSeconds(12);
 
@@ -191,7 +197,7 @@
       EXCLUSIVE_LOCKS_REQUIRED(outer_->lock_);
 
   // Returns true iff this worker has been within a MAY_BLOCK ScopedBlockingCall
-  // for more than |outer_->MayBlockThreshold()|. The max tasks must be
+  // for more than |may_block_threshold|. The max tasks must be
   // incremented if this returns true.
   bool MustIncrementMaxTasksLockRequired()
       EXCLUSIVE_LOCKS_REQUIRED(outer_->lock_);
@@ -367,17 +373,13 @@
   DCHECK(workers_.empty());
 
   in_start().may_block_threshold =
-      may_block_threshold
-          ? may_block_threshold.value()
-          : (priority_hint_ == ThreadPriority::NORMAL
-                 ? TimeDelta::FromMicroseconds(
-                       kMayBlockThresholdMicrosecondsParam.Get())
-                 : kBackgroundMayBlockThreshold);
+      may_block_threshold ? may_block_threshold.value()
+                          : (priority_hint_ == ThreadPriority::NORMAL
+                                 ? kForegroundMayBlockThreshold
+                                 : kBackgroundMayBlockThreshold);
   in_start().blocked_workers_poll_period =
-      priority_hint_ == ThreadPriority::NORMAL
-          ? TimeDelta::FromMicroseconds(
-                kBlockedWorkersPollMicrosecondsParam.Get())
-          : kBackgroundBlockedWorkersPoll;
+      priority_hint_ == ThreadPriority::NORMAL ? kForegroundBlockedWorkersPoll
+                                               : kBackgroundBlockedWorkersPoll;
 
   max_tasks_ = params.max_tasks();
   DCHECK_GE(max_tasks_, 1U);
@@ -995,7 +997,7 @@
   if (!incremented_max_tasks_since_blocked_ &&
       !read_any().may_block_start_time.is_null() &&
       TimeTicks::Now() - read_any().may_block_start_time >=
-          outer_->MayBlockThreshold()) {
+          outer_->after_start().may_block_threshold) {
     incremented_max_tasks_since_blocked_ = true;
 
     --outer_->num_pending_may_block_workers_;
@@ -1108,7 +1110,7 @@
   const size_t previous_max_tasks = max_tasks_;
 
   // Increment max tasks for each worker that has been within a MAY_BLOCK
-  // ScopedBlockingCall for more than MayBlockThreshold().
+  // ScopedBlockingCall for more than may_block_threshold.
   for (scoped_refptr<SchedulerWorker> worker : workers_) {
     // The delegates of workers inside a SchedulerWorkerPoolImpl should be
     // SchedulerWorkerDelegateImpls.
@@ -1135,14 +1137,6 @@
   MaintainAtLeastOneIdleWorkerLockRequired(&executor);
 }
 
-TimeDelta SchedulerWorkerPoolImpl::MayBlockThreshold() const {
-  // This value is usually smaller than
-  // |after_start().blocked_workers_poll_period| because we hope than when
-  // multiple workers block around the same time, a single AdjustMaxTasks() call
-  // will perform all the necessary max tasks adjustments.
-  return after_start().may_block_threshold;
-}
-
 void SchedulerWorkerPoolImpl::ScheduleAdjustMaxTasks() {
   // |polling_max_tasks_| can't change before the task posted below runs. Skip
   // check on NaCl to avoid unsafe reference acquisition warning.
diff --git a/base/task/task_scheduler/scheduler_worker_pool_impl.h b/base/task/task_scheduler/scheduler_worker_pool_impl.h
index 44e86591..0ee662f 100644
--- a/base/task/task_scheduler/scheduler_worker_pool_impl.h
+++ b/base/task/task_scheduler/scheduler_worker_pool_impl.h
@@ -14,6 +14,7 @@
 #include "base/base_export.h"
 #include "base/compiler_specific.h"
 #include "base/containers/stack.h"
+#include "base/gtest_prod_util.h"
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -163,10 +164,12 @@
   class SchedulerWorkerActionExecutor;
   class SchedulerWorkerDelegateImpl;
 
-  // Friend tests so that they can access |kBlockedWorkersPollPeriod| and
-  // BlockedThreshold().
+  // Friend tests so that they can access |blocked_workers_poll_period| and
+  // may_block_threshold().
   friend class TaskSchedulerWorkerPoolBlockingTest;
   friend class TaskSchedulerWorkerPoolMayBlockTest;
+  FRIEND_TEST_ALL_PREFIXES(TaskSchedulerWorkerPoolBlockingTest,
+                           ThreadBlockUnblockPremature);
 
   // SchedulerWorkerPool:
   void OnCanScheduleSequence(scoped_refptr<Sequence> sequence) override;
@@ -216,7 +219,16 @@
 
   // Returns the threshold after which the max tasks is increased to compensate
   // for a worker that is within a MAY_BLOCK ScopedBlockingCall.
-  TimeDelta MayBlockThreshold() const;
+  TimeDelta may_block_threshold_for_testing() const {
+    return after_start().may_block_threshold;
+  }
+
+  // Interval at which the service thread checks for workers in this pool
+  // that have been in a MAY_BLOCK ScopedBlockingCall for more than
+  // may_block_threshold().
+  TimeDelta blocked_workers_poll_period_for_testing() const {
+    return after_start().blocked_workers_poll_period;
+  }
 
   // Starts calling AdjustMaxTasks() periodically on
   // |service_thread_task_runner_|.
diff --git a/base/task/task_scheduler/scheduler_worker_pool_impl_unittest.cc b/base/task/task_scheduler/scheduler_worker_pool_impl_unittest.cc
index 19c8dfe..13ff4312 100644
--- a/base/task/task_scheduler/scheduler_worker_pool_impl_unittest.cc
+++ b/base/task/task_scheduler/scheduler_worker_pool_impl_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 
+#include <algorithm>
 #include <memory>
 #include <unordered_set>
 #include <vector>
@@ -1061,9 +1062,8 @@
   // Returns how long we can expect a change to |max_tasks_| to occur
   // after a task has become blocked.
   TimeDelta GetMaxTasksChangeSleepTime() {
-    return std::max(TimeDelta::FromMicroseconds(
-                        kBlockedWorkersPollMicrosecondsParam.Get()),
-                    worker_pool_->MayBlockThreshold()) +
+    return std::max(worker_pool_->blocked_workers_poll_period_for_testing(),
+                    worker_pool_->may_block_threshold_for_testing()) +
            TestTimeouts::tiny_timeout();
   }
 
@@ -1266,8 +1266,8 @@
   SaturateWithBlockingTasks(NestedBlockingType(BlockingType::MAY_BLOCK,
                                                OptionalBlockingType::NO_BLOCK,
                                                BlockingType::MAY_BLOCK));
-  PlatformThread::Sleep(2 * TimeDelta::FromMicroseconds(
-                                kBlockedWorkersPollMicrosecondsParam.Get()));
+  PlatformThread::Sleep(
+      2 * worker_pool_->blocked_workers_poll_period_for_testing());
   EXPECT_EQ(worker_pool_->NumberOfWorkersForTesting(), kMaxTasks);
   EXPECT_EQ(worker_pool_->GetMaxTasksForTesting(), kMaxTasks);
 
diff --git a/base/test/test_file_util_win.cc b/base/test/test_file_util_win.cc
index 882734f2..51e8f85b1 100644
--- a/base/test/test_file_util_win.cc
+++ b/base/test/test_file_util_win.cc
@@ -17,6 +17,7 @@
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
 #include "base/threading/platform_thread.h"
 #include "base/win/scoped_handle.h"
 #include "base/win/shlwapi.h"
@@ -38,10 +39,9 @@
   *length = 0;
   PACL dacl = NULL;
   PSECURITY_DESCRIPTOR security_descriptor;
-  if (GetNamedSecurityInfo(const_cast<wchar_t*>(path.value().c_str()),
-                           SE_FILE_OBJECT,
-                           DACL_SECURITY_INFORMATION, NULL, NULL, &dacl,
-                           NULL, &security_descriptor) != ERROR_SUCCESS) {
+  if (GetNamedSecurityInfo(wdata(path.value()), SE_FILE_OBJECT,
+                           DACL_SECURITY_INFORMATION, NULL, NULL, &dacl, NULL,
+                           &security_descriptor) != ERROR_SUCCESS) {
     return NULL;
   }
   DCHECK(dacl != NULL);
@@ -65,7 +65,7 @@
 
   PermissionInfo* perm = reinterpret_cast<PermissionInfo*>(info);
 
-  DWORD rc = SetNamedSecurityInfo(const_cast<wchar_t*>(path.value().c_str()),
+  DWORD rc = SetNamedSecurityInfo(const_cast<wchar_t*>(wdata(path.value())),
                                   SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
                                   NULL, NULL, &perm->dacl, NULL);
   LocalFree(perm->security_descriptor);
@@ -111,8 +111,8 @@
 }
 
 bool EvictFileFromSystemCache(const FilePath& file) {
-  base::win::ScopedHandle file_handle(
-      CreateFile(file.value().c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL,
+  win::ScopedHandle file_handle(
+      CreateFile(wdata(file.value()), GENERIC_READ | GENERIC_WRITE, 0, NULL,
                  OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL));
   if (!file_handle.IsValid())
     return false;
@@ -134,7 +134,7 @@
   PACL old_dacl;
   PSECURITY_DESCRIPTOR security_descriptor;
 
-  std::unique_ptr<TCHAR[]> path_ptr = ToCStr(path.value());
+  std::unique_ptr<TCHAR[]> path_ptr = ToCStr(wdata(path.value()));
   if (GetNamedSecurityInfo(path_ptr.get(), SE_FILE_OBJECT,
                            DACL_SECURITY_INFORMATION, nullptr, nullptr,
                            &old_dacl, nullptr,
diff --git a/base/test/test_reg_util_win.cc b/base/test/test_reg_util_win.cc
index 9ce4ad1..fa963c5d 100644
--- a/base/test/test_reg_util_win.cc
+++ b/base/test/test_reg_util_win.cc
@@ -21,8 +21,9 @@
 
 namespace {
 
-const wchar_t kTimestampDelimiter[] = L"$";
-const wchar_t kTempTestKeyPath[] = L"Software\\Chromium\\TempTestKeys";
+const base::char16 kTimestampDelimiter[] = STRING16_LITERAL("$");
+const base::char16 kTempTestKeyPath[] =
+    STRING16_LITERAL("Software\\Chromium\\TempTestKeys");
 
 void DeleteStaleTestKeys(const base::Time& now,
                          const base::string16& test_key_root) {
@@ -61,7 +62,8 @@
 base::string16 GenerateTempKeyPath(const base::string16& test_key_root,
                                    const base::Time& timestamp) {
   base::string16 key_path = test_key_root;
-  key_path += L"\\" + base::Int64ToString16(timestamp.ToInternalValue());
+  key_path += STRING16_LITERAL("\\") +
+              base::Int64ToString16(timestamp.ToInternalValue());
   key_path += kTimestampDelimiter + base::ASCIIToUTF16(base::GenerateGUID());
 
   return key_path;
@@ -77,7 +79,7 @@
 RegistryOverrideManager::
     ScopedRegistryKeyOverride::~ScopedRegistryKeyOverride() {
   ::RegOverridePredefKey(override_, NULL);
-  base::win::RegKey(HKEY_CURRENT_USER, L"", KEY_QUERY_VALUE)
+  base::win::RegKey(HKEY_CURRENT_USER, STRING16_LITERAL(""), KEY_QUERY_VALUE)
       .DeleteKey(key_path_.c_str());
 }
 
diff --git a/base/test/test_reg_util_win_unittest.cc b/base/test/test_reg_util_win_unittest.cc
index ca3bc99..1cd930fb 100644
--- a/base/test/test_reg_util_win_unittest.cc
+++ b/base/test/test_reg_util_win_unittest.cc
@@ -15,8 +15,9 @@
 namespace registry_util {
 
 namespace {
-const wchar_t kTestKeyPath[] = L"Software\\Chromium\\Foo\\Baz\\TestKey";
-const wchar_t kTestValueName[] = L"TestValue";
+const base::char16 kTestKeyPath[] =
+    STRING16_LITERAL("Software\\Chromium\\Foo\\Baz\\TestKey");
+const base::char16 kTestValueName[] = STRING16_LITERAL("TestValue");
 }  // namespace
 
 class RegistryOverrideManagerTest : public testing::Test {
@@ -60,7 +61,7 @@
   }
 
   base::string16 FakeOverrideManagerPath(const base::Time& time) {
-    return fake_test_key_root_ + L"\\" +
+    return fake_test_key_root_ + STRING16_LITERAL("\\") +
            base::Int64ToString16(time.ToInternalValue());
   }
 
@@ -104,7 +105,8 @@
   base::Time kTestTime;
   EXPECT_TRUE(base::Time::FromUTCExploded(kTestTimeExploded, &kTestTime));
 
-  base::string16 path_garbage = fake_test_key_root_ + L"\\Blah";
+  base::string16 path_garbage =
+      fake_test_key_root_ + STRING16_LITERAL("\\Blah");
   base::string16 path_very_stale =
       FakeOverrideManagerPath(kTestTime - base::TimeDelta::FromDays(100));
   base::string16 path_stale =
diff --git a/base/test/test_shortcut_win.cc b/base/test/test_shortcut_win.cc
index 70cb35b2..28b2465 100644
--- a/base/test/test_shortcut_win.cc
+++ b/base/test/test_shortcut_win.cc
@@ -12,6 +12,7 @@
 
 #include "base/files/file_path.h"
 #include "base/strings/string16.h"
+#include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/scoped_propvariant.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -19,10 +20,10 @@
 namespace base {
 namespace win {
 
-void ValidatePathsAreEqual(const base::FilePath& expected_path,
-                           const base::FilePath& actual_path) {
-  wchar_t long_expected_path_chars[MAX_PATH] = {0};
-  wchar_t long_actual_path_chars[MAX_PATH] = {0};
+void ValidatePathsAreEqual(const FilePath& expected_path,
+                           const FilePath& actual_path) {
+  char16 long_expected_path_chars[MAX_PATH] = {0};
+  char16 long_actual_path_chars[MAX_PATH] = {0};
 
   // If |expected_path| is empty confirm immediately that |actual_path| is also
   // empty.
@@ -32,31 +33,31 @@
   }
 
   // Proceed with LongPathName matching which will also confirm the paths exist.
-  EXPECT_NE(0U, ::GetLongPathName(
-      expected_path.value().c_str(), long_expected_path_chars, MAX_PATH))
-          << "Failed to get LongPathName of " << expected_path.value();
-  EXPECT_NE(0U, ::GetLongPathName(
-      actual_path.value().c_str(), long_actual_path_chars, MAX_PATH))
-          << "Failed to get LongPathName of " << actual_path.value();
+  EXPECT_NE(0U, ::GetLongPathName(wdata(expected_path.value()),
+                                  wdata(long_expected_path_chars), MAX_PATH))
+      << "Failed to get LongPathName of " << expected_path.value();
+  EXPECT_NE(0U, ::GetLongPathName(wdata(actual_path.value()),
+                                  wdata(long_actual_path_chars), MAX_PATH))
+      << "Failed to get LongPathName of " << actual_path.value();
 
-  base::FilePath long_expected_path(long_expected_path_chars);
-  base::FilePath long_actual_path(long_actual_path_chars);
+  FilePath long_expected_path(long_expected_path_chars);
+  FilePath long_actual_path(long_actual_path_chars);
   EXPECT_FALSE(long_expected_path.empty());
   EXPECT_FALSE(long_actual_path.empty());
 
   EXPECT_EQ(long_expected_path, long_actual_path);
 }
 
-void ValidateShortcut(const base::FilePath& shortcut_path,
+void ValidateShortcut(const FilePath& shortcut_path,
                       const ShortcutProperties& properties) {
   Microsoft::WRL::ComPtr<IShellLink> i_shell_link;
   Microsoft::WRL::ComPtr<IPersistFile> i_persist_file;
 
-  wchar_t read_target[MAX_PATH] = {0};
-  wchar_t read_working_dir[MAX_PATH] = {0};
-  wchar_t read_arguments[MAX_PATH] = {0};
-  wchar_t read_description[MAX_PATH] = {0};
-  wchar_t read_icon[MAX_PATH] = {0};
+  char16 read_target[MAX_PATH] = {0};
+  char16 read_working_dir[MAX_PATH] = {0};
+  char16 read_arguments[MAX_PATH] = {0};
+  char16 read_description[MAX_PATH] = {0};
+  char16 read_icon[MAX_PATH] = {0};
   int read_icon_index = 0;
 
   HRESULT hr;
@@ -74,41 +75,40 @@
     return;
 
   // Load the shortcut.
-  EXPECT_TRUE(SUCCEEDED(hr = i_persist_file->Load(
-      shortcut_path.value().c_str(), 0))) << "Failed to load shortcut at "
-                                          << shortcut_path.value();
+  EXPECT_TRUE(
+      SUCCEEDED(hr = i_persist_file->Load(wdata(shortcut_path.value()), 0)))
+      << "Failed to load shortcut at " << shortcut_path.value();
   if (FAILED(hr))
     return;
 
   if (properties.options & ShortcutProperties::PROPERTIES_TARGET) {
-    EXPECT_TRUE(SUCCEEDED(
-        i_shell_link->GetPath(read_target, MAX_PATH, NULL, SLGP_SHORTPATH)));
-    ValidatePathsAreEqual(properties.target, base::FilePath(read_target));
+    EXPECT_TRUE(SUCCEEDED(i_shell_link->GetPath(wdata(read_target), MAX_PATH,
+                                                NULL, SLGP_SHORTPATH)));
+    ValidatePathsAreEqual(properties.target, FilePath(read_target));
   }
 
   if (properties.options & ShortcutProperties::PROPERTIES_WORKING_DIR) {
     EXPECT_TRUE(SUCCEEDED(
-        i_shell_link->GetWorkingDirectory(read_working_dir, MAX_PATH)));
-    ValidatePathsAreEqual(properties.working_dir,
-                          base::FilePath(read_working_dir));
+        i_shell_link->GetWorkingDirectory(wdata(read_working_dir), MAX_PATH)));
+    ValidatePathsAreEqual(properties.working_dir, FilePath(read_working_dir));
   }
 
   if (properties.options & ShortcutProperties::PROPERTIES_ARGUMENTS) {
-    EXPECT_TRUE(SUCCEEDED(
-        i_shell_link->GetArguments(read_arguments, MAX_PATH)));
+    EXPECT_TRUE(
+        SUCCEEDED(i_shell_link->GetArguments(wdata(read_arguments), MAX_PATH)));
     EXPECT_EQ(properties.arguments, read_arguments);
   }
 
   if (properties.options & ShortcutProperties::PROPERTIES_DESCRIPTION) {
     EXPECT_TRUE(SUCCEEDED(
-        i_shell_link->GetDescription(read_description, MAX_PATH)));
+        i_shell_link->GetDescription(wdata(read_description), MAX_PATH)));
     EXPECT_EQ(properties.description, read_description);
   }
 
   if (properties.options & ShortcutProperties::PROPERTIES_ICON) {
-    EXPECT_TRUE(SUCCEEDED(
-        i_shell_link->GetIconLocation(read_icon, MAX_PATH, &read_icon_index)));
-    ValidatePathsAreEqual(properties.icon, base::FilePath(read_icon));
+    EXPECT_TRUE(SUCCEEDED(i_shell_link->GetIconLocation(
+        wdata(read_icon), MAX_PATH, &read_icon_index)));
+    ValidatePathsAreEqual(properties.icon, FilePath(read_icon));
     EXPECT_EQ(properties.icon_index, read_icon_index);
   }
 
@@ -127,7 +127,7 @@
         EXPECT_TRUE(properties.app_id.empty());
         break;
       case VT_LPWSTR:
-        EXPECT_EQ(properties.app_id, pv_app_id.get().pwszVal);
+        EXPECT_EQ(properties.app_id, WideToUTF16(pv_app_id.get().pwszVal));
         break;
       default:
         ADD_FAILURE() << "Unexpected variant type: " << pv_app_id.get().vt;
diff --git a/base/time/time_win_unittest.cc b/base/time/time_win_unittest.cc
index 3255888..4969efd 100644
--- a/base/time/time_win_unittest.cc
+++ b/base/time/time_win_unittest.cc
@@ -12,6 +12,7 @@
 #include <limits>
 #include <vector>
 
+#include "base/strings/string_piece.h"
 #include "base/threading/platform_thread.h"
 #include "base/time/time.h"
 #include "base/win/registry.h"
@@ -253,11 +254,13 @@
     // Read the CPU frequency from the registry.
     base::win::RegKey processor_key(
         HKEY_LOCAL_MACHINE,
-        L"Hardware\\Description\\System\\CentralProcessor\\0", KEY_QUERY_VALUE);
+        STRING16_LITERAL("Hardware\\Description\\System\\CentralProcessor\\0"),
+        KEY_QUERY_VALUE);
     ASSERT_TRUE(processor_key.Valid());
     DWORD processor_mhz_from_registry;
     ASSERT_EQ(ERROR_SUCCESS,
-              processor_key.ReadValueDW(L"~MHz", &processor_mhz_from_registry));
+              processor_key.ReadValueDW(STRING16_LITERAL("~MHz"),
+                                        &processor_mhz_from_registry));
 
     // Expect the measured TSC frequency to be similar to the processor
     // frequency from the registry (0.5% error).
diff --git a/build/android/gyp/compile_resources.py b/build/android/gyp/compile_resources.py
index 153bb42..1cc1878 100755
--- a/build/android/gyp/compile_resources.py
+++ b/build/android/gyp/compile_resources.py
@@ -104,6 +104,14 @@
            'non-final and have their package ID changed at runtime in R.java. '
            'Implies and overrides --shared-resources.')
 
+  input_opts.add_argument(
+      '--shared-resources-whitelist-locales',
+      default='[]',
+      help='Optional GN-list of locales. If provided, all strings corresponding'
+      ' to this locale list will be kept in the final output for the '
+      'resources identified through --shared-resources-whitelist, even '
+      'if --locale-whitelist is being used.')
+
   input_opts.add_argument('--proto-format', action='store_true',
                           help='Compile resources to protocol buffer format.')
 
@@ -189,6 +197,8 @@
   resource_utils.HandleCommonOptions(options)
 
   options.locale_whitelist = build_utils.ParseGnList(options.locale_whitelist)
+  options.shared_resources_whitelist_locales = build_utils.ParseGnList(
+      options.shared_resources_whitelist_locales)
   options.resource_blacklist_exceptions = build_utils.ParseGnList(
       options.resource_blacklist_exceptions)
 
@@ -328,7 +338,7 @@
     support_zh_hk: True if we need to support zh-HK by duplicating
       the zh-TW strings.
   Returns:
-    A list of matching Android config locale qualifier names.
+    A set of matching Android config locale qualifier names.
   """
   ret = set()
   for locale in locale_whitelist:
@@ -347,7 +357,7 @@
     assert not any('HK' in l for l in locale_whitelist), (
         'Remove special logic if zh-HK is now supported (crbug.com/780847).')
     ret.add('zh-rHK')
-  return sorted(ret)
+  return set(ret)
 
 
 def _MoveImagesToNonMdpiFolders(res_root):
@@ -526,8 +536,7 @@
 
 
 def _CreateKeepPredicate(resource_dirs, resource_blacklist_regex,
-                         resource_blacklist_exceptions,
-                         android_locale_whitelist):
+                         resource_blacklist_exceptions):
   """Return a predicate lambda to determine which resource files to keep.
 
   Args:
@@ -537,15 +546,12 @@
       in |resource_blacklist_exceptions|.
     resource_blacklist_exceptions: A list of glob patterns corresponding
       to exceptions to the |resource_blacklist_regex|.
-    android_locale_whitelist: An optional whitelist of Android locale names.
-      If set, any localized string resources that is not in this whitelist
-      will be removed.
   Returns:
     A lambda that takes a path, and returns true if the corresponding file
     must be kept.
   """
   naive_predicate = lambda path: os.path.basename(path)[0] != '.'
-  if resource_blacklist_regex == '' and not android_locale_whitelist:
+  if resource_blacklist_regex == '':
     # Do not extract dotfiles (e.g. ".gitkeep"). aapt ignores them anyways.
     return naive_predicate
 
@@ -566,26 +572,13 @@
       if re.search(r'[/-]drawable[/-]', path) and naive_predicate(path):
         non_filtered_drawables.add(_ResourceNameFromPath(path))
 
-  # NOTE: Defined as a function because when using a lambda definition,
-  # 'git cl format' will expand everything on a very long line that is
-  # much larger than the column limit.
+  # NOTE: Defined as a function, instead of a lambda to avoid the
+  # auto-formatter to put this on a very long line that overflows.
   def drawable_predicate(path):
     return (naive_predicate(path)
             or _ResourceNameFromPath(path) not in non_filtered_drawables)
 
-  if not android_locale_whitelist:
-    return drawable_predicate
-
-  # A simple predicate that removes localized strings .xml files that are
-  # not part of |android_locale_whitelist|.
-  android_locale_whitelist = set(android_locale_whitelist)
-
-  def is_bad_locale(path):
-    """Return true iff |path| is a resource for a non-whitelisted locale."""
-    locale = resource_utils.FindLocaleInStringResourceFilePath(path)
-    return locale and locale not in android_locale_whitelist
-
-  return lambda path: drawable_predicate(path) and not is_bad_locale(path)
+  return drawable_predicate
 
 
 def _ConvertToWebP(webp_binary, png_files):
@@ -657,6 +650,71 @@
     info_file.writelines(sorted(lines))
 
 
+def _RemoveUnwantedLocalizedStrings(dep_subdirs, options):
+  """Remove localized strings that should not go into the final output.
+
+  Args:
+    dep_subdirs: List of resource dependency directories.
+    options: Command-line options namespace.
+  """
+  if (not options.locale_whitelist
+      and not options.shared_resources_whitelist_locales):
+    # Keep everything, there is nothing to do.
+    return
+
+  # Collect locale and file paths from the existing subdirs.
+  # The following variable maps Android locale names to
+  # sets of corresponding xml file paths.
+  locale_to_files_map = collections.defaultdict(set)
+  for directory in dep_subdirs:
+    for f in _IterFiles(directory):
+      locale = resource_utils.FindLocaleInStringResourceFilePath(f)
+      if locale:
+        locale_to_files_map[locale].add(f)
+
+  all_locales = set(locale_to_files_map)
+
+  # Set A: wanted locales, either all of them or the
+  # list provided by --locale-whitelist.
+  wanted_locales = all_locales
+  if options.locale_whitelist:
+    wanted_locales = _ToAndroidLocales(options.locale_whitelist,
+                                       options.support_zh_hk)
+
+  # Set B: shared resources locales, which is either set A
+  # or the list provided by --shared-resources-whitelist-locales
+  shared_resources_locales = wanted_locales
+  shared_names_whitelist = set()
+  if options.shared_resources_whitelist_locales:
+    shared_names_whitelist = set(
+        resource_utils.GetRTxtStringResourceNames(
+            options.shared_resources_whitelist))
+
+    shared_resources_locales = _ToAndroidLocales(
+        options.shared_resources_whitelist_locales, options.support_zh_hk)
+
+  # Remove any file that belongs to a locale not covered by
+  # either A or B.
+  removable_locales = (all_locales - wanted_locales - shared_resources_locales)
+  for locale in removable_locales:
+    for path in locale_to_files_map[locale]:
+      os.remove(path)
+
+  # For any locale in B but not in A, only keep the shared
+  # resource strings in each file.
+  for locale in shared_resources_locales - wanted_locales:
+    for path in locale_to_files_map[locale]:
+      resource_utils.FilterAndroidResourceStringsXml(
+          path, lambda x: x in shared_names_whitelist)
+
+  # For any locale in A but not in B, only keep the strings
+  # that are _not_ from shared resources in the file.
+  for locale in wanted_locales - shared_resources_locales:
+    for path in locale_to_files_map[locale]:
+      resource_utils.FilterAndroidResourceStringsXml(
+          path, lambda x: x not in shared_names_whitelist)
+
+
 def _PackageApk(options, dep_subdirs, temp_dir, gen_dir, r_txt_path):
   """Compile resources with aapt2 and generate intermediate .ap_ file.
 
@@ -674,13 +732,14 @@
   renamed_paths.update(_DuplicateZhResources(dep_subdirs))
   renamed_paths.update(_RenameLocaleResourceDirs(dep_subdirs))
 
+  _RemoveUnwantedLocalizedStrings(dep_subdirs, options)
+
   # Create a function that selects which resource files should be packaged
   # into the final output. Any file that does not pass the predicate will
   # be removed below.
-  keep_predicate = _CreateKeepPredicate(
-      dep_subdirs, options.resource_blacklist_regex,
-      options.resource_blacklist_exceptions,
-      _ToAndroidLocales(options.locale_whitelist, options.support_zh_hk))
+  keep_predicate = _CreateKeepPredicate(dep_subdirs,
+                                        options.resource_blacklist_regex,
+                                        options.resource_blacklist_exceptions)
   png_paths = []
   for directory in dep_subdirs:
     for f in _IterFiles(directory):
diff --git a/build/android/gyp/util/resource_utils.py b/build/android/gyp/util/resource_utils.py
index 17d67ae..f0dc680e 100644
--- a/build/android/gyp/util/resource_utils.py
+++ b/build/android/gyp/util/resource_utils.py
@@ -143,6 +143,10 @@
   return qualifier if IsAndroidLocaleQualifier(qualifier) else None
 
 
+def ToAndroidLocaleList(locale_list):
+  """Convert a list of Chromium locales into the corresponding Android list."""
+  return sorted(ToAndroidLocaleName(locale) for locale in locale_list)
+
 # Represents a line from a R.txt file.
 _TextSymbolEntry = collections.namedtuple('RTextEntry',
     ('java_type', 'resource_type', 'name', 'value'))
@@ -668,3 +672,112 @@
 
   if not options.aapt2_path:
     options.aapt2_path = options.aapt_path + '2'
+
+
+def ParseAndroidResourceStringsFromXml(xml_data):
+  """Parse and Android xml resource file and extract strings from it.
+
+  Args:
+    xml_data: XML file data.
+  Returns:
+    A (dict, namespaces) tuple, where |dict| maps string names to their UTF-8
+    encoded value, and |namespaces| is a dictionary mapping prefixes to URLs
+    corresponding to namespaces declared in the <resources> element.
+  """
+  # NOTE: This uses regular expression matching because parsing with something
+  # like ElementTree makes it tedious to properly parse some of the structured
+  # text found in string resources, e.g.:
+  #      <string msgid="3300176832234831527" \
+  #         name="abc_shareactionprovider_share_with_application">\
+  #             "Condividi tramite <ns1:g id="APPLICATION_NAME">%s</ns1:g>"\
+  #      </string>
+  result = {}
+
+  # Find <resources> start tag and extract namespaces from it.
+  m = re.search('<resources([^>]*)>', xml_data, re.MULTILINE)
+  if not m:
+    raise Exception('<resources> start tag expected: ' + xml_data)
+  input_data = xml_data[m.end():]
+  resource_attrs = m.group(1)
+  re_namespace = re.compile('\s*(xmlns:(\w+)="([^"]+)")')
+  namespaces = {}
+  while resource_attrs:
+    m = re_namespace.match(resource_attrs)
+    if not m:
+      break
+    namespaces[m.group(2)] = m.group(3)
+    resource_attrs = resource_attrs[m.end(1):]
+
+  # Find each string element now.
+  re_string_element_start = re.compile('<string ([^>]* )?name="([^">]+)"[^>]*>')
+  re_string_element_end = re.compile('</string>')
+  while input_data:
+    m = re_string_element_start.search(input_data)
+    if not m:
+      break
+    name = m.group(2)
+    input_data = input_data[m.end():]
+    m2 = re_string_element_end.search(input_data)
+    if not m2:
+      raise Exception('Expected closing string tag: ' + input_data)
+    text = input_data[:m2.start()]
+    input_data = input_data[m2.end():]
+    if len(text) and text[0] == '"' and text[-1] == '"':
+      text = text[1:-1]
+    result[name] = text
+
+  return result, namespaces
+
+
+def GenerateAndroidResourceStringsXml(names_to_utf8_text, namespaces=None):
+  """Generate an XML text corresponding to an Android resource strings map.
+
+  Args:
+    names_to_text: A dictionary mapping resource names to localized
+      text (encoded as UTF-8).
+    namespaces: A map of namespace prefix to URL.
+  Returns:
+    New non-Unicode string containing an XML data structure describing the
+    input as an Android resource .xml file.
+  """
+  result = '<?xml version="1.0" encoding="utf-8"?>\n'
+  result += '<resources'
+  if namespaces:
+    for prefix, url in sorted(namespaces.iteritems()):
+      result += ' xmlns:%s="%s"' % (prefix, url)
+  result += '>\n'
+  if not names_to_utf8_text:
+    result += '<!-- this file intentionally empty -->\n'
+  else:
+    for name, utf8_text in sorted(names_to_utf8_text.iteritems()):
+      result += '<string name="%s">"%s"</string>\n' % (name, utf8_text)
+  result += '</resources>\n'
+  return result
+
+
+def FilterAndroidResourceStringsXml(xml_file_path, string_predicate):
+  """Remove unwanted localized strings from an Android resource .xml file.
+
+  This function takes a |string_predicate| callable object that will
+  receive a resource string name, and should return True iff the
+  corresponding <string> element should be kept in the file.
+
+  Args:
+    xml_file_path: Android resource strings xml file path.
+    string_predicate: A predicate function which will receive the string name
+      and shal
+  """
+  with open(xml_file_path) as f:
+    xml_data = f.read()
+  strings_map, namespaces = ParseAndroidResourceStringsFromXml(xml_data)
+
+  string_deletion = False
+  for name in strings_map.keys():
+    if not string_predicate(name):
+      del strings_map[name]
+      string_deletion = True
+
+  if string_deletion:
+    new_xml_data = GenerateAndroidResourceStringsXml(strings_map, namespaces)
+    with open(xml_file_path, 'wb') as f:
+      f.write(new_xml_data)
diff --git a/build/android/gyp/util/resource_utils_test.py b/build/android/gyp/util/resource_utils_test.py
index 7fa418e9..8aa29d4 100755
--- a/build/android/gyp/util/resource_utils_test.py
+++ b/build/android/gyp/util/resource_utils_test.py
@@ -19,27 +19,42 @@
 
 import resource_utils  # pylint: disable=relative-import
 
-_RES_STRINGS_1 = {
-    'low_memory_error': 'Eelmist toimingut ei saa vähese mälu tõttu lõpetada',
-    'opening_file_error': 'Valit. faili avamine ebaõnnestus',
-    'copy_to_clipboard_failure_message': 'Lõikelauale kopeerimine ebaõnnestus'
-}
-
 # pylint: disable=line-too-long
-_EXPECTED_XML_1 = '''<?xml version="1.0" encoding="utf-8"?>
+
+_TEST_XML_INPUT_1 = '''<?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 <string name="copy_to_clipboard_failure_message">"Lõikelauale kopeerimine ebaõnnestus"</string>
 <string name="low_memory_error">"Eelmist toimingut ei saa vähese mälu tõttu lõpetada"</string>
 <string name="opening_file_error">"Valit. faili avamine ebaõnnestus"</string>
+<string name="structured_text">"This is <android:g id="STRUCTURED_TEXT">%s</android:g>"</string>
 </resources>
 '''
-# pylint: enable=line-too-long
 
-_XML_RESOURCES_PREFIX = r'''<?xml version="1.0" encoding="utf-8"?>
+_TEST_XML_OUTPUT_2 = '''<?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
+<string name="low_memory_error">"Eelmist toimingut ei saa vähese mälu tõttu lõpetada"</string>
+<string name="structured_text">"This is <android:g id="STRUCTURED_TEXT">%s</android:g>"</string>
+</resources>
 '''
 
-_XML_RESOURCES_SUFFIX = '</resources>\n'
+# pylint: enable=line-too-long
+
+_TEST_XML_OUTPUT_EMPTY = '''<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- this file intentionally empty -->
+</resources>
+'''
+
+_TEST_RESOURCES_MAP_1 = {
+    'low_memory_error': 'Eelmist toimingut ei saa vähese mälu tõttu lõpetada',
+    'opening_file_error': 'Valit. faili avamine ebaõnnestus',
+    'copy_to_clipboard_failure_message': 'Lõikelauale kopeerimine ebaõnnestus',
+    'structured_text': 'This is <android:g id="STRUCTURED_TEXT">%s</android:g>',
+}
+
+_TEST_NAMESPACES_1 = {'android': 'http://schemas.android.com/apk/res/android'}
+
+_TEST_RESOURCES_WHITELIST_1 = ['low_memory_error', 'structured_text']
 
 # Extracted from one generated Chromium R.txt file, with string resource
 # names shuffled randomly.
@@ -207,6 +222,45 @@
         resource_utils.FindLocaleInStringResourceFilePath(
             'res/values-foo/ignore-subdirs/whatever.xml'))
 
+  def test_ParseAndroidResourceStringsFromXml(self):
+    ret, namespaces = resource_utils.ParseAndroidResourceStringsFromXml(
+        _TEST_XML_INPUT_1)
+    self.assertDictEqual(ret, _TEST_RESOURCES_MAP_1)
+    self.assertDictEqual(namespaces, _TEST_NAMESPACES_1)
+
+  def test_GenerateAndroidResourceStringsXml(self):
+    # Fist, an empty strings map, with no namespaces
+    result = resource_utils.GenerateAndroidResourceStringsXml({})
+    self.assertEqual(result, _TEST_XML_OUTPUT_EMPTY)
+
+    result = resource_utils.GenerateAndroidResourceStringsXml(
+        _TEST_RESOURCES_MAP_1, _TEST_NAMESPACES_1)
+    self.assertEqual(result, _TEST_XML_INPUT_1)
+
+  @staticmethod
+  def _CreateTestResourceFile(output_dir, locale, string_map, namespaces):
+    values_dir = os.path.join(output_dir, 'values-' + locale)
+    build_utils.MakeDirectory(values_dir)
+    file_path = os.path.join(values_dir, 'strings.xml')
+    with open(file_path, 'w') as f:
+      file_data = resource_utils.GenerateAndroidResourceStringsXml(
+          string_map, namespaces)
+      f.write(file_data)
+    return file_path
+
+  def _CheckTestResourceFile(self, file_path, expected_data):
+    with open(file_path) as f:
+      file_data = f.read()
+    self.assertEqual(file_data, expected_data)
+
+  def test_FilterAndroidResourceStringsXml(self):
+    with build_utils.TempDir() as tmp_path:
+      test_file = self._CreateTestResourceFile(
+          tmp_path, 'foo', _TEST_RESOURCES_MAP_1, _TEST_NAMESPACES_1)
+      resource_utils.FilterAndroidResourceStringsXml(
+          test_file, lambda x: x in _TEST_RESOURCES_WHITELIST_1)
+      self._CheckTestResourceFile(test_file, _TEST_XML_OUTPUT_2)
+
 
 if __name__ == '__main__':
   unittest.main()
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index ee4498a..59fc2c2 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -1978,6 +1978,12 @@
   #     to the list from the input R.txt file. Overrides shared_resources
   #     when both are specified.
   #
+  #   shared_resources_whitelist_locales: (optional)
+  #     If shared_resources_whitelist is used, provide an optional list of
+  #     Chromium locale names to determine which localized shared string
+  #     resources to put in the final output, even if aapt_locale_whitelist
+  #     is defined to a smaller subset.
+  #
   #   support_zh_hk: (optional)
   #     If true, support zh-HK in Chrome on Android by using the resources
   #     from zh-TW. See https://crbug.com/780847.
@@ -2216,6 +2222,10 @@
           rebase_path(invoker.shared_resources_whitelist, root_build_dir),
         ]
       }
+      if (defined(invoker.shared_resources_whitelist_locales)) {
+        args += [ "--shared-resources-whitelist-locales=" +
+                  "${invoker.shared_resources_whitelist_locales}" ]
+      }
 
       if (defined(invoker.proguard_file)) {
         outputs += [ invoker.proguard_file ]
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index 77842a95..e1d6fab5 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -2223,6 +2223,7 @@
                              [
                                "app_as_shared_lib",
                                "shared_resources",
+                               "shared_resources_whitelist_locales",
                                "support_zh_hk",
                                "aapt_locale_whitelist",
                                "package_name",
@@ -2982,6 +2983,7 @@
                                "secondary_native_lib_placeholders",
                                "shared_libraries",
                                "shared_resources",
+                               "shared_resources_whitelist_locales",
                                "shared_resources_whitelist_target",
                                "srcjar_deps",
                                "support_zh_hk",
@@ -3021,6 +3023,7 @@
       assert(!defined(invoker.app_as_shared_lib))
       assert(!defined(invoker.shared_resources))
       assert(!defined(invoker.shared_resources_whitelist_target))
+      assert(!defined(invoker.shared_resources_whitelist_locales))
       assert(!defined(invoker.build_hooks_android_impl_deps))
       assert(!defined(invoker.shared_libraries))
       assert(defined(invoker.base_module_target))
@@ -3087,6 +3090,7 @@
                                "secondary_native_lib_placeholders",
                                "shared_libraries",
                                "shared_resources",
+                               "shared_resources_whitelist_locales",
                                "shared_resources_whitelist_target",
                                "srcjar_deps",
                                "support_zh_hk",
diff --git a/build/config/fuchsia/testing_sandbox_policy b/build/config/fuchsia/testing_sandbox_policy
index dd1c7f9..51946e8f 100644
--- a/build/config/fuchsia/testing_sandbox_policy
+++ b/build/config/fuchsia/testing_sandbox_policy
@@ -7,7 +7,6 @@
       "fuchsia.fonts.Provider",
       "fuchsia.media.Audio",
       "fuchsia.mediacodec.CodecFactory",
-      "fuchsia.net.LegacySocketProvider",
       "fuchsia.net.SocketProvider",
       "fuchsia.netstack.Netstack",
       "fuchsia.process.Launcher",
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index e4feba0..e6a2712 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-578a3808d2e72ead28a22a8b1d605680a59b9fcd
\ No newline at end of file
+cbd2d44f67b0fe018b2ba2fed82e420385c6f1f7
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index d841760..89b3453 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-a7f664353426d4c2fac93abfa9a187c309e15d9e
\ No newline at end of file
+97ad31fed28e73a9e4e123091435e36b604d4aa9
\ No newline at end of file
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index cd4f894..5699f7e3 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -1571,6 +1571,10 @@
       # Resource whitelist used when generating R.java files and causes
       # only the webview subset of resources to be marked as non-final.
       shared_resources_whitelist_target = "//android_webview:system_webview_apk"
+
+      # Ensure the localized resources for all locales are used, even when
+      # a smaller set is specified through aapt_locale_whitelist.
+      shared_resources_whitelist_locales = locales
     }
 
     deps = [
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
index 6084b3e8..af3dcd7c 100644
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -145,7 +145,15 @@
       native_lib_version_rule = "//build/util:chrome_version_json"
     }
     if (!defined(aapt_locale_whitelist)) {
-      aapt_locale_whitelist = locales - android_chrome_omitted_locales
+      if (target_type == "android_apk") {
+        # For APKs, do not include the resource strings files from our
+        # omitted locale list in order to save size.
+        aapt_locale_whitelist = locales - android_chrome_omitted_locales
+      } else {
+        # For bundles, only include resource strings files from our full
+        # locale list, but nothing more.
+        aapt_locale_whitelist = locales
+      }
     }
 
     if (!_is_monochrome) {
@@ -312,9 +320,6 @@
     use_chromium_linker = false
     min_sdk_version = 24
 
-    # Webview supports all locales (has no omitted ones).
-    aapt_locale_whitelist = locales
-
     # Resources config for blocklisting resource names from obfuscation
     resources_config_path = "//android_webview/aapt2.config"
 
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 142d8f73..762c196 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -6807,6 +6807,11 @@
       <message name="IDS_PLUGIN_OUTDATED_PROMPT" desc="Infobar message when an outdated plugin was disabled">
         <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph> was blocked because it is out of date
       </message>
+      <message name="IDS_PLUGIN_DEPRECATED_PROMPT" desc="Infobar message when an deprecated plugin was disabled">
+        <ph name="PLUGIN_NAME">
+          $1<ex>Flash</ex>
+        </ph> was blocked because it is deprecated
+      </message>
       <message name="IDS_PLUGIN_ENABLE_TEMPORARILY" desc="Infobar button to run a blocked outdated plugin">
         Run this time
       </message>
@@ -7102,9 +7107,6 @@
         <message name="IDS_SYNC_SETTINGS_NOT_CONFIRMED" desc="The message that appears in the settings page indicating that user is signed in, but sync hasn't started because the sync settings haven't been confirmed.">
           Confirm sync settings to start sync.
         </message>
-        <message name="IDS_SYNC_ACCOUNT_SYNCING_WITH_MANAGE_LINK" desc="The message that appears in the options dialog indicating that account is syncing along with a link to manage their data (where supported, or not possible through the application)">
-          Manage your synced data on <ph name="BEGIN_LINK">&lt;a href="$1" target=&quot;_blank&quot;&gt;<ex>&lt;a href="$1" target=&quot;_blank&quot;&gt;</ex></ph>Google Dashboard<ph name="END_LINK">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>.
-        </message>
         <message name="IDS_SYNC_AUTHENTICATING_LABEL" desc="Label to display while the user is being authenticated to use sync.">
           Authenticating...
         </message>
diff --git a/chrome/browser/android/customtabs/detached_resource_request_unittest.cc b/chrome/browser/android/customtabs/detached_resource_request_unittest.cc
index 4d2563c..609edf9 100644
--- a/chrome/browser/android/customtabs/detached_resource_request_unittest.cc
+++ b/chrome/browser/android/customtabs/detached_resource_request_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/files/file_path.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/bind_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/android/customtabs/detached_resource_request.h"
diff --git a/chrome/browser/browser_encoding_browsertest.cc b/chrome/browser/browser_encoding_browsertest.cc
index 9bfb242c..1ddcb7f 100644
--- a/chrome/browser/browser_encoding_browsertest.cc
+++ b/chrome/browser/browser_encoding_browsertest.cc
@@ -8,6 +8,7 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/path_service.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
 #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/browser_switcher/browser_switcher_browsertest.cc b/chrome/browser/browser_switcher/browser_switcher_browsertest.cc
index a13ec07..2c07a345 100644
--- a/chrome/browser/browser_switcher/browser_switcher_browsertest.cc
+++ b/chrome/browser/browser_switcher/browser_switcher_browsertest.cc
@@ -12,6 +12,7 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/test_timeouts.h"
 #include "base/threading/platform_thread.h"
diff --git a/chrome/browser/browser_switcher/browser_switcher_service.cc b/chrome/browser/browser_switcher/browser_switcher_service.cc
index 11ba1c4..deed13b2 100644
--- a/chrome/browser/browser_switcher/browser_switcher_service.cc
+++ b/chrome/browser/browser_switcher/browser_switcher_service.cc
@@ -4,8 +4,10 @@
 
 #include "chrome/browser/browser_switcher/browser_switcher_service.h"
 
+#include <sstream>
 #include <string>
 #include <utility>
+#include <vector>
 
 #include "base/bind.h"
 #include "build/build_config.h"
@@ -22,7 +24,14 @@
 #include "services/network/public/cpp/simple_url_loader.h"
 
 #if defined(OS_WIN)
+#include "base/files/file.h"
+#include "base/files/file_util.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/path_service.h"
+#include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/task/post_task.h"
+#include "base/task/task_traits.h"
 #include "base/win/registry.h"
 #endif
 
@@ -77,6 +86,74 @@
             "It needs to be enabled through policies."
         })");
 
+#if defined(OS_WIN)
+const int kCurrentFileVersion = 1;
+
+base::FilePath GetCacheDir() {
+  base::FilePath path;
+  if (!base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path))
+    return path;
+  path = path.AppendASCII("Google");
+  path = path.AppendASCII("BrowserSwitcher");
+  return path;
+}
+
+// Serialize prefs to a string for writing to cache.dat.
+std::string SerializeCacheFile(const BrowserSwitcherPrefs& prefs) {
+  std::ostringstream buffer;
+
+  buffer << kCurrentFileVersion << std::endl;
+
+  buffer << prefs.GetAlternativeBrowserPath() << std::endl;
+  buffer << base::JoinString(prefs.GetAlternativeBrowserParameters(), " ")
+         << std::endl;
+
+  // TODO(nicolaso): Use GetChromePath() and GetChromeParameters once the
+  // policies are implemented. For now, those are just ${chrome} with no
+  // arguments, to ensure the BHO works correctly.
+  buffer << "${chrome}" << std::endl;
+  buffer << base::JoinString(std::vector<std::string>(), " ") << std::endl;
+
+  const auto& rules = prefs.GetRules();
+  buffer << rules.sitelist.size() << std::endl;
+  if (!rules.sitelist.empty())
+    buffer << base::JoinString(rules.sitelist, "\n") << std::endl;
+
+  buffer << rules.greylist.size() << std::endl;
+  if (!rules.greylist.empty())
+    buffer << base::JoinString(rules.greylist, "\n") << std::endl;
+
+  return buffer.str();
+}
+
+void SavePrefsToFile(std::string data) {
+  // Ensure the directory exists
+  base::FilePath dir = GetCacheDir();
+
+  bool success = base::CreateDirectory(dir);
+  UMA_HISTOGRAM_BOOLEAN("BrowserSwitcher.CacheFile.MkDirSuccess", success);
+  if (!success) {
+    LOG(ERROR) << "Could not create directory: " << dir.LossyDisplayName();
+    return;
+  }
+
+  base::FilePath tmp_path;
+  success = base::CreateTemporaryFileInDir(dir, &tmp_path);
+  UMA_HISTOGRAM_BOOLEAN("BrowserSwitcher.CacheFile.MkTempSuccess", success);
+  if (!success) {
+    LOG(ERROR) << "Could not open file for writing: "
+               << tmp_path.LossyDisplayName();
+    return;
+  }
+
+  base::WriteFile(tmp_path, data.c_str(), data.size());
+
+  base::FilePath dest_path = dir.AppendASCII("cache.dat");
+  success = base::Move(tmp_path, dest_path);
+  UMA_HISTOGRAM_BOOLEAN("BrowserSwitcher.CacheFile.MoveSuccess", success);
+}
+#endif
+
 }  // namespace
 
 class XmlDownloader {
@@ -174,6 +251,18 @@
                          weak_ptr_factory_.GetWeakPtr()));
     }
   }
+
+  if (prefs_.IsEnabled()) {
+    // TODO(nicolaso): also write cache.dat when policies change (e.g. after
+    // loading cloud policies or after enabling LBS while Chrome is running).
+    //
+    // Write the cache.dat file.
+    base::PostTaskWithTraits(
+        FROM_HERE,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
+         base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
+        base::BindOnce(&SavePrefsToFile, SerializeCacheFile(prefs_)));
+  }
 #endif
 }
 
diff --git a/chrome/browser/chrome_navigation_browsertest.cc b/chrome/browser/chrome_navigation_browsertest.cc
index 70c714f..44c8213 100644
--- a/chrome/browser/chrome_navigation_browsertest.cc
+++ b/chrome/browser/chrome_navigation_browsertest.cc
@@ -5,6 +5,7 @@
 #include "base/command_line.h"
 #include "base/feature_list.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_timeouts.h"
diff --git a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
index 394ef91..54f3d83d 100644
--- a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
+++ b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.h"
 
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h"
 #include "components/exo/wm_helper.h"
 #include "ui/accessibility/platform/ax_android_constants.h"
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc
index 0ec68edb..b316acf 100644
--- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc
+++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc
@@ -14,6 +14,7 @@
 #include "base/memory/singleton.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h"
+#include "chrome/common/extensions/api/accessibility_private.h"
 #include "chromeos/constants/chromeos_features.h"
 #include "components/arc/arc_bridge_service.h"
 #include "components/arc/arc_browser_context_keyed_service_factory_base.h"
@@ -291,6 +292,21 @@
       }
 
       tree_source = input_method_tree_.get();
+    } else if (event_data->event_type ==
+                   arc::mojom::AccessibilityEventType::ANNOUNCEMENT &&
+               event_data->eventText.has_value()) {
+      extensions::EventRouter* event_router =
+          extensions::EventRouter::Get(profile_);
+      std::unique_ptr<base::ListValue> event_args(
+          extensions::api::accessibility_private::OnAnnounceForAccessibility::
+              Create(*(event_data->eventText)));
+      std::unique_ptr<extensions::Event> event(new extensions::Event(
+          extensions::events::
+              ACCESSIBILITY_PRIVATE_ON_ANNOUNCE_FOR_ACCESSIBILITY,
+          extensions::api::accessibility_private::OnAnnounceForAccessibility::
+              kEventName,
+          std::move(event_args)));
+      event_router->BroadcastEvent(std::move(event));
     } else {
       if (event_data->task_id == kNoTaskId)
         return;
diff --git a/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc b/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
index c686cc92..bbb2b0c 100644
--- a/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
+++ b/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
@@ -9,6 +9,7 @@
 
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/chromeos/arc/icon_decode_request.h"
diff --git a/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_request_unittest.cc b/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_request_unittest.cc
index 0365826f..b3ce107a3 100644
--- a/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_request_unittest.cc
+++ b/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_request_unittest.cc
@@ -9,6 +9,7 @@
 
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcut_item.h"
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler_unittest.cc b/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler_unittest.cc
index 2dcdd30..1468e24 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler_unittest.cc
+++ b/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.h"
 
 #include "base/json/json_reader.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/mock_callback.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/chrome_select_file_policy.h"
diff --git a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
index c6aafd7..2257b367 100644
--- a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
+++ b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
@@ -15,6 +15,7 @@
 #include "base/memory/singleton.h"
 #include "base/path_service.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "chrome/browser/browser_process.h"
diff --git a/chrome/browser/chromeos/crostini/crostini_package_service.cc b/chrome/browser/chromeos/crostini/crostini_package_service.cc
index ac83c31..c9ca0c63 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_service.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_service.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_path.h"
 #include "base/no_destructor.h"
 #include "base/strings/strcat.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/chromeos/crostini/crostini_manager_factory.h"
 #include "chrome/browser/chromeos/crostini/crostini_registry_service_factory.h"
diff --git a/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc b/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc
index 9415d8e4..19c4370 100644
--- a/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc
+++ b/chrome/browser/chromeos/customization/customization_wallpaper_downloader_browsertest.cc
@@ -11,6 +11,7 @@
 #include "base/command_line.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/bind_test_util.h"
 #include "base/time/time.h"
 #include "chrome/browser/chromeos/customization/customization_document.h"
diff --git a/chrome/browser/chromeos/display/output_protection_delegate.cc b/chrome/browser/chromeos/display/output_protection_delegate.cc
index 01d8e8b..4049015 100644
--- a/chrome/browser/chromeos/display/output_protection_delegate.cc
+++ b/chrome/browser/chromeos/display/output_protection_delegate.cc
@@ -29,6 +29,8 @@
   display::Display display =
       screen->GetDisplayNearestView(rfh->GetNativeView());
   *display_id = display.id();
+  DCHECK_NE(*display_id, display::kInvalidDisplayId);
+
   return true;
 }
 
@@ -45,15 +47,45 @@
       window_(nullptr),
       display_id_(display::kInvalidDisplayId),
       weak_ptr_factory_(this) {
-  // This can be constructed on IO or UI thread.
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  display::Screen::GetScreen()->AddObserver(this);
 }
 
 OutputProtectionDelegate::~OutputProtectionDelegate() {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  display::Screen::GetScreen()->RemoveObserver(this);
   if (window_)
     window_->RemoveObserver(this);
 }
 
+void OutputProtectionDelegate::OnDisplayMetricsChanged(
+    const display::Display& display,
+    uint32_t changed_metrics) {
+  // Switching the primary display (either by user or by going into docked
+  // mode), as well as changing mirror mode may change the display on which
+  // the window resides without actually changing the window hierarchy (i.e.
+  // the root window is still the same). Hence we need to watch out for these
+  // situations and update |display_id_| if needed.
+  if (!(changed_metrics &
+        (display::DisplayObserver::DISPLAY_METRIC_PRIMARY |
+         display::DisplayObserver::DISPLAY_METRIC_MIRROR_STATE))) {
+    return;
+  }
+
+  OnWindowMayHaveMovedToAnotherDisplay();
+}
+
+void OutputProtectionDelegate::OnWindowHierarchyChanged(
+    const aura::WindowObserver::HierarchyChangeParams& params) {
+  OnWindowMayHaveMovedToAnotherDisplay();
+}
+
+void OutputProtectionDelegate::OnWindowDestroying(aura::Window* window) {
+  DCHECK_EQ(window, window_);
+  window_->RemoveObserver(this);
+  window_ = nullptr;
+}
+
 void OutputProtectionDelegate::QueryStatus(
     const QueryStatusCallback& callback) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -79,6 +111,32 @@
   desired_method_mask_ = desired_method_mask;
 }
 
+void OutputProtectionDelegate::OnWindowMayHaveMovedToAnotherDisplay() {
+  content::RenderFrameHost* rfh =
+      content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+  if (!rfh) {
+    DLOG(WARNING) << "RenderFrameHost is not alive.";
+    return;
+  }
+
+  int64_t new_display_id = display::kInvalidDisplayId;
+  if (!GetCurrentDisplayId(rfh, &new_display_id))
+    return;
+
+  if (display_id_ == new_display_id)
+    return;
+
+  if (desired_method_mask_ != display::CONTENT_PROTECTION_METHOD_NONE) {
+    DCHECK(controller_);
+    controller_->SetProtection(new_display_id, desired_method_mask_,
+                               base::DoNothing());
+    controller_->SetProtection(display_id_,
+                               display::CONTENT_PROTECTION_METHOD_NONE,
+                               base::DoNothing());
+  }
+  display_id_ = new_display_id;
+}
+
 bool OutputProtectionDelegate::InitializeControllerIfNecessary() {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
@@ -111,37 +169,4 @@
   return true;
 }
 
-void OutputProtectionDelegate::OnWindowHierarchyChanged(
-    const aura::WindowObserver::HierarchyChangeParams& params) {
-  content::RenderFrameHost* rfh =
-      content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
-  if (!rfh) {
-    DLOG(WARNING) << "RenderFrameHost is not alive.";
-    return;
-  }
-
-  int64_t new_display_id = display::kInvalidDisplayId;
-  if (!GetCurrentDisplayId(rfh, &new_display_id))
-    return;
-
-  if (display_id_ == new_display_id)
-    return;
-
-  if (desired_method_mask_ != display::CONTENT_PROTECTION_METHOD_NONE) {
-    DCHECK(controller_);
-    controller_->SetProtection(new_display_id, desired_method_mask_,
-                               base::DoNothing());
-    controller_->SetProtection(display_id_,
-                               display::CONTENT_PROTECTION_METHOD_NONE,
-                               base::DoNothing());
-  }
-  display_id_ = new_display_id;
-}
-
-void OutputProtectionDelegate::OnWindowDestroying(aura::Window* window) {
-  DCHECK_EQ(window, window_);
-  window_->RemoveObserver(this);
-  window_ = nullptr;
-}
-
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/display/output_protection_delegate.h b/chrome/browser/chromeos/display/output_protection_delegate.h
index 2ff55a4..f28971a5 100644
--- a/chrome/browser/chromeos/display/output_protection_delegate.h
+++ b/chrome/browser/chromeos/display/output_protection_delegate.h
@@ -13,12 +13,14 @@
 #include "base/memory/weak_ptr.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_observer.h"
+#include "ui/display/display_observer.h"
 
 namespace chromeos {
 
 // A class to query output protection status and/or enable output protection.
 // All methods except constructor should be invoked in UI thread.
-class OutputProtectionDelegate : public aura::WindowObserver {
+class OutputProtectionDelegate : public aura::WindowObserver,
+                                 public display::DisplayObserver {
  public:
   typedef base::Callback<void(bool /* success */,
                               uint32_t /* link_mask */,
@@ -29,7 +31,11 @@
   OutputProtectionDelegate(int render_process_id, int render_frame_id);
   ~OutputProtectionDelegate() override;
 
-  // aura::WindowObserver overrides.
+  // display::DisplayObserver:
+  void OnDisplayMetricsChanged(const display::Display& display,
+                               uint32_t changed_metrics) override;
+
+  // aura::WindowObserver:
   void OnWindowHierarchyChanged(
       const aura::WindowObserver::HierarchyChangeParams& params) override;
   void OnWindowDestroying(aura::Window* window) override;
@@ -54,6 +60,8 @@
   };
 
  private:
+  void OnWindowMayHaveMovedToAnotherDisplay();
+
   bool InitializeControllerIfNecessary();
 
   // Used to lookup the WebContents associated with the render frame.
diff --git a/chrome/browser/chromeos/extensions/info_private_api.cc b/chrome/browser/chromeos/extensions/info_private_api.cc
index 3d9c3221..5d0c79a 100644
--- a/chrome/browser/chromeos/extensions/info_private_api.cc
+++ b/chrome/browser/chromeos/extensions/info_private_api.cc
@@ -12,6 +12,7 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/stylus_utils.h"
 #include "base/memory/ptr_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "base/values.h"
 #include "chrome/browser/app_mode/app_mode_utils.h"
diff --git a/chrome/browser/chromeos/file_manager/file_manager_uitest.cc b/chrome/browser/chromeos/file_manager/file_manager_uitest.cc
index fac8fe7f02..2729d47c 100644
--- a/chrome/browser/chromeos/file_manager/file_manager_uitest.cc
+++ b/chrome/browser/chromeos/file_manager/file_manager_uitest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/path_service.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
diff --git a/chrome/browser/chromeos/file_manager/path_util.cc b/chrome/browser/chromeos/file_manager/path_util.cc
index 6ac18c7..709b989 100644
--- a/chrome/browser/chromeos/file_manager/path_util.cc
+++ b/chrome/browser/chromeos/file_manager/path_util.cc
@@ -12,6 +12,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.h"
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader_unittest.cc b/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader_unittest.cc
index 37e34632..572e407 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader_unittest.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader_unittest.cc
@@ -20,6 +20,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "base/version.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
index 1f7dc6a..df625e7 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
@@ -16,6 +16,7 @@
 #include "base/linux_util.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/default_clock.h"
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
index f3e47ea9..3c8f88f 100644
--- a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
@@ -15,6 +15,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/timer/timer.h"
diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc
index 1b098cd..20b3223 100644
--- a/chrome/browser/chromeos/login/kiosk_browsertest.cc
+++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc
@@ -16,6 +16,7 @@
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/chromeos/app_mode/fake_cws.h"
diff --git a/chrome/browser/chromeos/login/sync_consent_interactive_ui_test.cc b/chrome/browser/chromeos/login/sync_consent_interactive_ui_test.cc
index d7543f4..310ca0a 100644
--- a/chrome/browser/chromeos/login/sync_consent_interactive_ui_test.cc
+++ b/chrome/browser/chromeos/login/sync_consent_interactive_ui_test.cc
@@ -5,6 +5,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chrome_notification_types.h"
diff --git a/chrome/browser/chromeos/login/webview_login_browsertest.cc b/chrome/browser/chromeos/login/webview_login_browsertest.cc
index 5446e5b..4606b1a9 100644
--- a/chrome/browser/chromeos/login/webview_login_browsertest.cc
+++ b/chrome/browser/chromeos/login/webview_login_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/json/json_writer.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/threading/thread_restrictions.h"
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
index 30cf4e2..69585de4 100644
--- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
diff --git a/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc b/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc
index be5b6ba..0a9b051 100644
--- a/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc
+++ b/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc
@@ -269,15 +269,12 @@
   std::string onc_blob;
   value->GetAsString(&onc_blob);
 
-  std::unique_ptr<base::ListValue> network_configs(new base::ListValue);
+  base::ListValue network_configs;
   base::ListValue certificates;
   base::DictionaryValue global_network_config;
-  chromeos::onc::ParseAndValidateOncForImport(onc_blob,
-                                              onc_source_,
-                                              "",
-                                              network_configs.get(),
-                                              &global_network_config,
-                                              &certificates);
+  chromeos::onc::ParseAndValidateOncForImport(
+      onc_blob, onc_source_, "", &network_configs, &global_network_config,
+      &certificates);
 
   // Currently, only the per-network configuration is stored in a pref. Ignore
   // |global_network_config| and |certificates|.
@@ -351,15 +348,14 @@
 void PinnedLauncherAppsPolicyHandler::ApplyList(
     std::unique_ptr<base::ListValue> filtered_list,
     PrefValueMap* prefs) {
-  std::unique_ptr<base::ListValue> pinned_apps_list(new base::ListValue());
+  std::vector<base::Value> pinned_apps_list;
   for (const base::Value& entry : filtered_list->GetList()) {
-    const std::string& app_id = entry.GetString();
-    auto app_dict = std::make_unique<base::DictionaryValue>();
-    app_dict->SetString(kPinnedAppsPrefAppIDPath, app_id);
-    pinned_apps_list->Append(std::move(app_dict));
+    base::Value app_dict(base::Value::Type::DICTIONARY);
+    app_dict.SetKey(kPinnedAppsPrefAppIDPath, entry.Clone());
+    pinned_apps_list.push_back(std::move(app_dict));
   }
   prefs->SetValue(prefs::kPolicyPinnedLauncherApps,
-                  std::move(pinned_apps_list));
+                  base::Value(std::move(pinned_apps_list)));
 }
 
 ScreenMagnifierPolicyHandler::ScreenMagnifierPolicyHandler()
@@ -415,10 +411,9 @@
   const base::Value* value = policies.GetValue(policy_name());
   if (value && EnsureInRange(value, nullptr, nullptr)) {
     if (!prefs->GetValue(ash::prefs::kPowerAcIdleAction, nullptr))
-      prefs->SetValue(ash::prefs::kPowerAcIdleAction, value->CreateDeepCopy());
+      prefs->SetValue(ash::prefs::kPowerAcIdleAction, value->Clone());
     if (!prefs->GetValue(ash::prefs::kPowerBatteryIdleAction, nullptr)) {
-      prefs->SetValue(ash::prefs::kPowerBatteryIdleAction,
-                      value->CreateDeepCopy());
+      prefs->SetValue(ash::prefs::kPowerBatteryIdleAction, value->Clone());
     }
   }
 }
@@ -449,42 +444,54 @@
   std::unique_ptr<base::Value> value;
 
   value = GetValue(dict, kScreenDimDelayAC);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerAcScreenDimDelayMs, std::move(value));
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerAcScreenDimDelayMs,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetValue(dict, kScreenOffDelayAC);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerAcScreenOffDelayMs, std::move(value));
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerAcScreenOffDelayMs,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetValue(dict, kIdleWarningDelayAC);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerAcIdleWarningDelayMs, std::move(value));
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerAcIdleWarningDelayMs,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetValue(dict, kIdleDelayAC);
   if (value)
-    prefs->SetValue(ash::prefs::kPowerAcIdleDelayMs, std::move(value));
+    prefs->SetValue(ash::prefs::kPowerAcIdleDelayMs,
+                    base::Value::FromUniquePtrValue(std::move(value)));
   value = GetAction(dict, kIdleActionAC);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerAcIdleAction, std::move(value));
-
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerAcIdleAction,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetValue(dict, kScreenDimDelayBattery);
   if (value) {
     prefs->SetValue(ash::prefs::kPowerBatteryScreenDimDelayMs,
-                    std::move(value));
+                    base::Value::FromUniquePtrValue(std::move(value)));
   }
   value = GetValue(dict, kScreenOffDelayBattery);
   if (value) {
     prefs->SetValue(ash::prefs::kPowerBatteryScreenOffDelayMs,
-                    std::move(value));
+                    base::Value::FromUniquePtrValue(std::move(value)));
   }
   value = GetValue(dict, kIdleWarningDelayBattery);
   if (value) {
     prefs->SetValue(ash::prefs::kPowerBatteryIdleWarningDelayMs,
-                    std::move(value));
+                    base::Value::FromUniquePtrValue(std::move(value)));
   }
   value = GetValue(dict, kIdleDelayBattery);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerBatteryIdleDelayMs, std::move(value));
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerBatteryIdleDelayMs,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetAction(dict, kIdleActionBattery);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerBatteryIdleAction, std::move(value));
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerBatteryIdleAction,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
 }
 
 ScreenLockDelayPolicyHandler::ScreenLockDelayPolicyHandler(
@@ -512,12 +519,15 @@
   std::unique_ptr<base::Value> value;
 
   value = GetValue(dict, kScreenLockDelayAC);
-  if (value)
-    prefs->SetValue(ash::prefs::kPowerAcScreenLockDelayMs, std::move(value));
+  if (value) {
+    prefs->SetValue(ash::prefs::kPowerAcScreenLockDelayMs,
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetValue(dict, kScreenLockDelayBattery);
-  if (value)
+  if (value) {
     prefs->SetValue(ash::prefs::kPowerBatteryScreenLockDelayMs,
-                    std::move(value));
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
 }
 
 ScreenBrightnessPercentPolicyHandler::ScreenBrightnessPercentPolicyHandler(
@@ -546,13 +556,15 @@
 
   std::unique_ptr<base::Value> value;
   value = GetValue(dict, kScreenBrightnessPercentAC);
-  if (value)
+  if (value) {
     prefs->SetValue(ash::prefs::kPowerAcScreenBrightnessPercent,
-                    std::move(value));
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
   value = GetValue(dict, kScreenBrightnessPercentBattery);
-  if (value)
+  if (value) {
     prefs->SetValue(ash::prefs::kPowerBatteryScreenBrightnessPercent,
-                    std::move(value));
+                    base::Value::FromUniquePtrValue(std::move(value)));
+  }
 }
 
 ArcServicePolicyHandler::ArcServicePolicyHandler(const char* policy,
diff --git a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
index a23e5f4..ad828acd 100644
--- a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
+++ b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
@@ -19,6 +19,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/chromeos/printing/cups_printers_manager.cc b/chrome/browser/chromeos/printing/cups_printers_manager.cc
index 0ed89655..846a268 100644
--- a/chrome/browser/chromeos/printing/cups_printers_manager.cc
+++ b/chrome/browser/chromeos/printing/cups_printers_manager.cc
@@ -16,6 +16,7 @@
 #include "base/observer_list.h"
 #include "base/scoped_observer.h"
 #include "base/sequence_checker.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/chromeos/printing/ppd_provider_factory.h"
 #include "chrome/browser/chromeos/printing/printer_event_tracker_factory.h"
 #include "chrome/browser/chromeos/printing/synced_printers_manager.h"
@@ -80,7 +81,7 @@
 
 // Return true if this is a USB printer.
 bool IsUsbPrinter(const Printer& printer) {
-  return base::StringPiece(printer.uri()).starts_with("usb://");
+  return printer.GetProtocol() == Printer::kUsb;
 }
 
 class CupsPrintersManagerImpl : public CupsPrintersManager,
diff --git a/chrome/browser/component_updater/recovery_improved_component_installer.cc b/chrome/browser/component_updater/recovery_improved_component_installer.cc
index 4fa305b..b70fe8f 100644
--- a/chrome/browser/component_updater/recovery_improved_component_installer.cc
+++ b/chrome/browser/component_updater/recovery_improved_component_installer.cc
@@ -16,10 +16,13 @@
 #if defined(OS_WIN)
 #include <windows.h>
 #include <wrl/client.h>
-#include "chrome/elevation_service/elevation_service_idl.h"
 #include "chrome/install_static/install_util.h"
 #endif
 
+#if defined(OS_WIN) && defined(GOOGLE_CHROME_BUILD)
+#include "chrome/elevation_service/elevation_service_idl.h"
+#endif
+
 // This component is behind a Finch experiment. To enable the registration of
 // the component, run Chrome with --enable-features=ImprovedRecoveryComponent.
 namespace component_updater {
diff --git a/chrome/browser/conflicts/incompatible_applications_browsertest.cc b/chrome/browser/conflicts/incompatible_applications_browsertest.cc
index 12666d3d..3e89cb0f 100644
--- a/chrome/browser/conflicts/incompatible_applications_browsertest.cc
+++ b/chrome/browser/conflicts/incompatible_applications_browsertest.cc
@@ -10,6 +10,7 @@
 #include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/scoped_native_library.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_reg_util_win.h"
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc
index 3d49b06..5df8fe2 100644
--- a/chrome/browser/devtools/devtools_sanity_browsertest.cc
+++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -22,6 +22,7 @@
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 8482334..2f2061b1 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -16,6 +16,7 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/rand_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/task_runner.h"
diff --git a/chrome/browser/extensions/active_tab_apitest.cc b/chrome/browser/extensions/active_tab_apitest.cc
index 7452270..25cc74e 100644
--- a/chrome/browser/extensions/active_tab_apitest.cc
+++ b/chrome/browser/extensions/active_tab_apitest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/extensions/extension_action_runner.h"
 #include "chrome/browser/extensions/extension_apitest.h"
diff --git a/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api_unittest.cc b/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api_unittest.cc
index d9f6b862..9529f7e 100644
--- a/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api_unittest.cc
+++ b/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.h"
 
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/extensions/extension_service_test_base.h"
diff --git a/chrome/browser/extensions/api/bookmarks/bookmarks_api_unittest.cc b/chrome/browser/extensions/api/bookmarks/bookmarks_api_unittest.cc
index 792089a..ba165a8 100644
--- a/chrome/browser/extensions/api/bookmarks/bookmarks_api_unittest.cc
+++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h"
 
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/extensions/extension_service_test_base.h"
diff --git a/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc b/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
index ec327a4..29f627d 100644
--- a/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
+++ b/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/version_info/channel.h"
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
index 2d37b135..5047185 100644
--- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
+++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
@@ -20,6 +20,7 @@
 #include "base/path_service.h"
 #include "base/rand_util.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/synchronization/lock.h"
 #include "base/task/post_task.h"
diff --git a/chrome/browser/extensions/api/declarative_net_request/rule_indexing_unittest.cc b/chrome/browser/extensions/api/declarative_net_request/rule_indexing_unittest.cc
index 7fcc0f3..bb209fc 100644
--- a/chrome/browser/extensions/api/declarative_net_request/rule_indexing_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_net_request/rule_indexing_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/files/file_util.h"
 #include "base/memory/ref_counted.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/extensions/api/declarative_net_request/dnr_test_base.h"
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
index 9633920..bd2f24d2 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/macros.h"
 #include "base/scoped_observer.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/extensions/chrome_test_extension_loader.h"
 #include "chrome/browser/extensions/error_console/error_console.h"
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc b/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc
index 06d3f56..06904bb 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/json/json_reader.h"
 #include "base/json/string_escape.h"
+#include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "build/build_config.h"
 #include "chrome/browser/extensions/api/enterprise_reporting_private/prefs.h"
diff --git a/chrome/browser/extensions/api/font_settings/font_settings_api.cc b/chrome/browser/extensions/api/font_settings/font_settings_api.cc
index 483d0a9..45dc5941 100644
--- a/chrome/browser/extensions/api/font_settings/font_settings_api.cc
+++ b/chrome/browser/extensions/api/font_settings/font_settings_api.cc
@@ -262,7 +262,7 @@
 
   PreferenceAPI::Get(profile)->SetExtensionControlledPref(
       extension_id(), pref_path, kExtensionPrefsScopeRegular,
-      new base::Value(params->details.font_id));
+      base::Value(params->details.font_id));
   return RespondNow(NoArguments());
 }
 
@@ -355,7 +355,7 @@
 
   PreferenceAPI::Get(profile)->SetExtensionControlledPref(
       extension_id(), GetPrefName(), kExtensionPrefsScopeRegular,
-      value->DeepCopy());
+      value->Clone());
   return RespondNow(NoArguments());
 }
 
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc
index efa3a1e..d933c45 100644
--- a/chrome/browser/extensions/api/identity/identity_apitest.cc
+++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -48,7 +48,6 @@
 #include "components/prefs/pref_service.h"
 #include "components/signin/core/browser/account_fetcher_service.h"
 #include "components/signin/core/browser/account_reconcilor.h"
-#include "components/signin/core/browser/fake_gaia_cookie_manager_service.h"
 #include "components/signin/core/browser/signin_pref_names.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/notification_source.h"
@@ -465,7 +464,7 @@
 
     GaiaCookieManagerServiceFactory::GetInstance()->SetTestingFactory(
         context,
-        base::BindRepeating(&BuildFakeGaiaCookieManagerServiceWithURLLoader,
+        base::BindRepeating(&BuildGaiaCookieManagerServiceWithURLLoader,
                             &test_url_loader_factory_));
 
     // Ensure that AccountFetcherService is (1) created at all and (2) created
@@ -759,12 +758,7 @@
   void SetUpOnMainThread() override {
     IdentityTestWithSignin::SetUpOnMainThread();
     identity_test_env()->identity_manager()->AddDiagnosticsObserver(this);
-
-    FakeGaiaCookieManagerService* fake_gcms =
-        static_cast<FakeGaiaCookieManagerService*>(
-            GaiaCookieManagerServiceFactory::GetForProfile(
-                browser()->profile()));
-    fake_gcms->SetListAccountsResponseNoAccounts();
+    signin::SetListAccountsResponseNoAccounts(&test_url_loader_factory_);
   }
 
   void TearDownOnMainThread() override {
@@ -1544,12 +1538,11 @@
   AccountInfo account_info =
       identity_test_env()->MakeAccountAvailable("email@example.com");
   content::RunAllTasksUntilIdle();  // Flush pending ListAccounts calls.
-  FakeGaiaCookieManagerService* fake_gcms =
-      static_cast<FakeGaiaCookieManagerService*>(
-          GaiaCookieManagerServiceFactory::GetForProfile(profile));
-  fake_gcms->SetListAccountsResponseOneAccount(account_info.email,
-                                               account_info.gaia);
-  fake_gcms->set_list_accounts_stale_for_testing(true);
+  signin::SetListAccountsResponseOneAccount(
+      account_info.email, account_info.gaia, &test_url_loader_factory_);
+  GaiaCookieManagerService* gcms =
+      GaiaCookieManagerServiceFactory::GetForProfile(profile);
+  gcms->set_list_accounts_stale_for_testing(true);
 
   scoped_refptr<const Extension> extension(CreateExtension(CLIENT_ID | SCOPES));
   scoped_refptr<FakeGetAuthTokenFunction> func(new FakeGetAuthTokenFunction());
diff --git a/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc b/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc
index e8de61c..32853d9 100644
--- a/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc
+++ b/chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/api/identity/identity_constants.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/extensions/api/identity.h"
diff --git a/chrome/browser/extensions/api/management/management_api_unittest.cc b/chrome/browser/extensions/api/management/management_api_unittest.cc
index 55a022c..9b7ea704 100644
--- a/chrome/browser/extensions/api/management/management_api_unittest.cc
+++ b/chrome/browser/extensions/api/management/management_api_unittest.cc
@@ -8,6 +8,7 @@
 #include "base/bind.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/extension_function_test_utils.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/extensions/extension_service_test_base.h"
diff --git a/chrome/browser/extensions/api/permissions/permissions_api_unittest.cc b/chrome/browser/extensions/api/permissions/permissions_api_unittest.cc
index bb62775..351f1dc 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api_unittest.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/extensions/extension_api_unittest.h"
 #include "chrome/browser/extensions/extension_function_test_utils.h"
diff --git a/chrome/browser/extensions/api/preference/preference_api.cc b/chrome/browser/extensions/api/preference/preference_api.cc
index 2445494f..287a4d9 100644
--- a/chrome/browser/extensions/api/preference/preference_api.cc
+++ b/chrome/browser/extensions/api/preference/preference_api.cc
@@ -461,13 +461,13 @@
     const std::string& extension_id,
     const std::string& pref_key,
     ExtensionPrefsScope scope,
-    base::Value* value) {
+    base::Value value) {
 #ifndef NDEBUG
   const PrefService::Preference* pref =
       extension_prefs()->pref_service()->FindPreference(pref_key);
   DCHECK(pref) << "Extension controlled preference key " << pref_key
                << " not registered.";
-  DCHECK_EQ(pref->GetType(), value->type())
+  DCHECK_EQ(pref->GetType(), value.type())
       << "Extension controlled preference " << pref_key << " has wrong type.";
 #endif
 
@@ -480,10 +480,10 @@
                                                   extension_id,
                                                   scope_string);
     auto preference = update.Create();
-    preference->SetWithoutPathExpansion(pref_key, value->CreateDeepCopy());
+    preference->SetWithoutPathExpansion(pref_key, value.CreateDeepCopy());
   }
-  extension_pref_value_map()->SetExtensionPref(
-      extension_id, pref_key, scope, value);
+  extension_pref_value_map()->SetExtensionPref(extension_id, pref_key, scope,
+                                               std::move(value));
 }
 
 void PreferenceAPIBase::RemoveExtensionControlledPref(
@@ -796,14 +796,15 @@
     // |SetExtensionControlledPref| takes ownership of the base::Value pointer.
     preference_api->SetExtensionControlledPref(
         extension_id(), autofill::prefs::kAutofillCreditCardEnabled, scope,
-        new base::Value(browser_pref_value->GetBool()));
+        base::Value(browser_pref_value->GetBool()));
     preference_api->SetExtensionControlledPref(
         extension_id(), autofill::prefs::kAutofillProfileEnabled, scope,
-        new base::Value(browser_pref_value->GetBool()));
+        base::Value(browser_pref_value->GetBool()));
   }
 
   preference_api->SetExtensionControlledPref(
-      extension_id(), browser_pref, scope, browser_pref_value.release());
+      extension_id(), browser_pref, scope,
+      base::Value::FromUniquePtrValue(std::move(browser_pref_value)));
 
   return RespondNow(NoArguments());
 }
diff --git a/chrome/browser/extensions/api/preference/preference_api.h b/chrome/browser/extensions/api/preference/preference_api.h
index 78ba18d2..80d27cc 100644
--- a/chrome/browser/extensions/api/preference/preference_api.h
+++ b/chrome/browser/extensions/api/preference/preference_api.h
@@ -68,11 +68,10 @@
   // but rather about something global the extension wants to override.
 
   // Set a new extension-controlled preference value.
-  // Takes ownership of |value|.
   void SetExtensionControlledPref(const std::string& extension_id,
                                   const std::string& pref_key,
                                   ExtensionPrefsScope scope,
-                                  base::Value* value);
+                                  base::Value value);
 
   // Remove an extension-controlled preference value.
   void RemoveExtensionControlledPref(const std::string& extension_id,
diff --git a/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc b/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
index 4440fce..54ad94c2 100644
--- a/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
+++ b/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
@@ -75,14 +75,14 @@
   void RegisterPreferences(user_prefs::PrefRegistrySyncable* registry) override;
   void InstallExtensionControlledPref(Extension* extension,
                                       const std::string& key,
-                                      base::Value* value);
+                                      base::Value value);
   void InstallExtensionControlledPrefIncognito(Extension* extension,
                                                const std::string& key,
-                                               base::Value* value);
+                                               base::Value value);
   void InstallExtensionControlledPrefIncognitoSessionOnly(
       Extension* extension,
       const std::string& key,
-      base::Value* value);
+      base::Value value);
   void InstallExtension(Extension* extension);
   void UninstallExtension(const std::string& extension_id);
 
@@ -120,28 +120,30 @@
 void ExtensionControlledPrefsTest::InstallExtensionControlledPref(
     Extension* extension,
     const std::string& key,
-    base::Value* value) {
+    base::Value value) {
   EnsureExtensionInstalled(extension);
   test_preference_api_.SetExtensionControlledPref(
-      extension->id(), key, kExtensionPrefsScopeRegular, value);
+      extension->id(), key, kExtensionPrefsScopeRegular, std::move(value));
 }
 
 void ExtensionControlledPrefsTest::InstallExtensionControlledPrefIncognito(
     Extension* extension,
     const std::string& key,
-    base::Value* value) {
+    base::Value value) {
   EnsureExtensionInstalled(extension);
   test_preference_api_.SetExtensionControlledPref(
-      extension->id(), key, kExtensionPrefsScopeIncognitoPersistent, value);
+      extension->id(), key, kExtensionPrefsScopeIncognitoPersistent,
+      std::move(value));
 }
 
 void ExtensionControlledPrefsTest::
-InstallExtensionControlledPrefIncognitoSessionOnly(Extension* extension,
-                                                   const std::string& key,
-                                                   base::Value* value) {
+    InstallExtensionControlledPrefIncognitoSessionOnly(Extension* extension,
+                                                       const std::string& key,
+                                                       base::Value value) {
   EnsureExtensionInstalled(extension);
   test_preference_api_.SetExtensionControlledPref(
-      extension->id(), key, kExtensionPrefsScopeIncognitoSessionOnly, value);
+      extension->id(), key, kExtensionPrefsScopeIncognitoSessionOnly,
+      std::move(value));
 }
 
 void ExtensionControlledPrefsTest::InstallExtension(Extension* extension) {
@@ -187,8 +189,7 @@
 class ControlledPrefsInstallOneExtension
     : public ExtensionControlledPrefsTest {
   void Initialize() override {
-    InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("val1"));
+    InstallExtensionControlledPref(extension1(), kPref1, base::Value("val1"));
   }
   void Verify() override {
     std::string actual = prefs()->pref_service()->GetString(kPref1);
@@ -203,10 +204,9 @@
     : public ExtensionControlledPrefsTest {
  public:
   void Initialize() override {
-    InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("val1"));
+    InstallExtensionControlledPref(extension1(), kPref1, base::Value("val1"));
     InstallExtensionControlledPrefIncognito(extension1(), kPref1,
-                                            new base::Value("val2"));
+                                            base::Value("val2"));
     std::unique_ptr<PrefService> incog_prefs =
         prefs_.CreateIncognitoPrefService();
     std::string actual = incog_prefs->GetString(kPref1);
@@ -234,10 +234,9 @@
   ControlledPrefsInstallIncognitoSessionOnly() : iteration_(0) {}
 
   void Initialize() override {
-    InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("val1"));
+    InstallExtensionControlledPref(extension1(), kPref1, base::Value("val1"));
     InstallExtensionControlledPrefIncognitoSessionOnly(extension1(), kPref1,
-                                                       new base::Value("val2"));
+                                                       base::Value("val2"));
     std::unique_ptr<PrefService> incog_prefs =
         prefs_.CreateIncognitoPrefService();
     std::string actual = incog_prefs->GetString(kPref1);
@@ -267,10 +266,8 @@
 
 class ControlledPrefsUninstallExtension : public ExtensionControlledPrefsTest {
   void Initialize() override {
-    InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("val1"));
-    InstallExtensionControlledPref(extension1(), kPref2,
-                                   new base::Value("val2"));
+    InstallExtensionControlledPref(extension1(), kPref1, base::Value("val1"));
+    InstallExtensionControlledPref(extension1(), kPref2, base::Value("val2"));
     scoped_refptr<ContentSettingsStore> store = content_settings_store();
     ContentSettingsPattern pattern =
         ContentSettingsPattern::FromString("http://[*.]example.com");
@@ -319,7 +316,7 @@
     EXPECT_CALL(observer, OnPreferenceChanged(_));
     EXPECT_CALL(incognito_observer, OnPreferenceChanged(_));
     InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("https://www.chromium.org"));
+                                   base::Value("https://www.chromium.org"));
     Mock::VerifyAndClearExpectations(&observer);
     Mock::VerifyAndClearExpectations(&incognito_observer);
 
@@ -327,7 +324,7 @@
     EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0);
     EXPECT_CALL(incognito_observer, OnPreferenceChanged(_)).Times(0);
     InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("https://www.chromium.org"));
+                                   base::Value("https://www.chromium.org"));
     Mock::VerifyAndClearExpectations(&observer);
     Mock::VerifyAndClearExpectations(&incognito_observer);
 
@@ -335,22 +332,22 @@
     EXPECT_CALL(observer, OnPreferenceChanged(_));
     EXPECT_CALL(incognito_observer, OnPreferenceChanged(_));
     InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("chrome://newtab"));
+                                   base::Value("chrome://newtab"));
     Mock::VerifyAndClearExpectations(&observer);
     Mock::VerifyAndClearExpectations(&incognito_observer);
     // Change only incognito persistent value.
     EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0);
     EXPECT_CALL(incognito_observer, OnPreferenceChanged(_));
-    InstallExtensionControlledPrefIncognito(
-        extension1(), kPref1, new base::Value("chrome://newtab2"));
+    InstallExtensionControlledPrefIncognito(extension1(), kPref1,
+                                            base::Value("chrome://newtab2"));
     Mock::VerifyAndClearExpectations(&observer);
     Mock::VerifyAndClearExpectations(&incognito_observer);
 
     // Change only incognito session-only value.
     EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0);
     EXPECT_CALL(incognito_observer, OnPreferenceChanged(_));
-    InstallExtensionControlledPrefIncognito(
-        extension1(), kPref1, new base::Value("chrome://newtab3"));
+    InstallExtensionControlledPrefIncognito(extension1(), kPref1,
+                                            base::Value("chrome://newtab3"));
     Mock::VerifyAndClearExpectations(&observer);
     Mock::VerifyAndClearExpectations(&incognito_observer);
 
@@ -375,8 +372,7 @@
 // Tests disabling an extension.
 class ControlledPrefsDisableExtension : public ExtensionControlledPrefsTest {
   void Initialize() override {
-    InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("val1"));
+    InstallExtensionControlledPref(extension1(), kPref1, base::Value("val1"));
     std::string actual = prefs()->pref_service()->GetString(kPref1);
     EXPECT_EQ("val1", actual);
     prefs()->SetExtensionDisabled(extension1()->id(),
@@ -392,8 +388,7 @@
 // Tests disabling and reenabling an extension.
 class ControlledPrefsReenableExtension : public ExtensionControlledPrefsTest {
   void Initialize() override {
-    InstallExtensionControlledPref(extension1(), kPref1,
-                                   new base::Value("val1"));
+    InstallExtensionControlledPref(extension1(), kPref1, base::Value("val1"));
     prefs()->SetExtensionDisabled(extension1()->id(),
                                   disable_reason::DISABLE_USER_ACTION);
     prefs()->SetExtensionEnabled(extension1()->id());
@@ -409,16 +404,10 @@
     : public ExtensionControlledPrefsTest {
  public:
   void Initialize() override {
-    base::Value* v1 = new base::Value("https://www.chromium.org");
-    base::Value* v2 = new base::Value("https://www.chromium.org");
-    base::Value* v1i = new base::Value("https://www.chromium.org");
-    base::Value* v2i = new base::Value("https://www.chromium.org");
-    // Ownership is taken, value shall not be deleted.
-    InstallExtensionControlledPref(extension1(), kPref1, v1);
-    InstallExtensionControlledPrefIncognito(extension1(), kPref1, v1i);
-    // Make sure there is no memory leak and both values are deleted.
-    InstallExtensionControlledPref(extension1(), kPref1, v2);
-    InstallExtensionControlledPrefIncognito(extension1(), kPref1, v2i);
+    InstallExtensionControlledPref(extension1(), kPref1,
+                                   base::Value("https://www.chromium.org"));
+    InstallExtensionControlledPrefIncognito(
+        extension1(), kPref1, base::Value("https://www.chromium.org"));
     prefs_.RecreateExtensionPrefs();
   }
 
@@ -436,11 +425,11 @@
   ~ControlledPrefsDisableExtensions() override {}
   void Initialize() override {
     InstallExtensionControlledPref(internal_extension(), kPref1,
-                                   new base::Value("internal extension value"));
+                                   base::Value("internal extension value"));
 
     EXPECT_TRUE(Manifest::IsExternalLocation(extension1()->location()));
     InstallExtensionControlledPref(extension1(), kPref2,
-                                   new base::Value("external extension value"));
+                                   base::Value("external extension value"));
     // This becomes only active in the second verification phase.
     prefs_.set_extensions_disabled(true);
   }
diff --git a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
index dd1e77d7..706e3a5 100644
--- a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
+++ b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
@@ -129,8 +129,10 @@
   PreferenceAPI* prefs = PreferenceAPI::Get(profile_);
   if (!prefs)
     return;  // Expected in unit tests.
+  DCHECK(value);
   prefs->SetExtensionControlledPref(
-      extension_id, pref_key, kExtensionPrefsScopeRegular, value.release());
+      extension_id, pref_key, kExtensionPrefsScopeRegular,
+      base::Value::FromUniquePtrValue(std::move(value)));
 }
 
 void SettingsOverridesAPI::UnsetPref(const std::string& extension_id,
diff --git a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
index c523220..159e5fc 100644
--- a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
+++ b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
@@ -11,6 +11,7 @@
 #include "base/hash.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/supports_user_data.h"
 #include "base/task/post_task.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc
index 8baacd8..b544f0d 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_util.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/extensions/app_process_apitest.cc b/chrome/browser/extensions/app_process_apitest.cc
index 6579e8e2..fd1b73d 100644
--- a/chrome/browser/extensions/app_process_apitest.cc
+++ b/chrome/browser/extensions/app_process_apitest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/command_line.h"
+#include "base/strings/stringprintf.h"
 #include "build/build_config.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/extensions/extension_apitest.h"
diff --git a/chrome/browser/extensions/autoplay_browsertest.cc b/chrome/browser/extensions/autoplay_browsertest.cc
index 6fadfc6a..accbc33 100644
--- a/chrome/browser/extensions/autoplay_browsertest.cc
+++ b/chrome/browser/extensions/autoplay_browsertest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/extension_apitest.h"
 #include "chrome/browser/ui/extensions/browser_action_test_util.h"
 #include "chrome/test/base/ui_test_utils.h"
diff --git a/chrome/browser/extensions/bookmark_app_navigation_browsertest.cc b/chrome/browser/extensions/bookmark_app_navigation_browsertest.cc
index e905a7c..2937ec5 100644
--- a/chrome/browser/extensions/bookmark_app_navigation_browsertest.cc
+++ b/chrome/browser/extensions/bookmark_app_navigation_browsertest.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/profiles/profile_io_data.h"
 #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc b/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc
index 7d925d1..50ead5c58 100644
--- a/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc
+++ b/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/bind.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/extensions/chrome_app_api_browsertest.cc b/chrome/browser/extensions/chrome_app_api_browsertest.cc
index e0ffd05..de3b87f 100644
--- a/chrome/browser/extensions/chrome_app_api_browsertest.cc
+++ b/chrome/browser/extensions/chrome_app_api_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/command_line.h"
 #include "base/json/json_reader.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
 #include "chrome/browser/extensions/extension_service.h"
diff --git a/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc b/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc
index 0adbe344..54291e3 100644
--- a/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc
+++ b/chrome/browser/extensions/chrome_test_extension_loader_browsertest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/extensions/chrome_test_extension_loader.h"
 
 #include "base/strings/strcat.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/extension_apitest.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
index 05c6e19..a642984 100644
--- a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
+++ b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/files/file_path.h"
 #include "base/json/json_reader.h"
 #include "base/strings/string16.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/extensions/events_apitest.cc b/chrome/browser/extensions/events_apitest.cc
index 5f1689e3..e8f0830 100644
--- a/chrome/browser/extensions/events_apitest.cc
+++ b/chrome/browser/extensions/events_apitest.cc
@@ -4,6 +4,7 @@
 
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
+#include "base/strings/stringprintf.h"
 #include "build/build_config.h"
 #include "chrome/browser/extensions/chrome_extension_test_notification_observer.h"
 #include "chrome/browser/extensions/chrome_extensions_browser_client.h"
diff --git a/chrome/browser/extensions/extension_context_menu_model_unittest.cc b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
index 255c750c..56c426c 100644
--- a/chrome/browser/extensions/extension_context_menu_model_unittest.cc
+++ b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
index e28ea61..7deff738 100644
--- a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
+++ b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
@@ -326,7 +326,7 @@
         false);  // is_incognito_enabled.
     extension_prefs_value_map->SetExtensionPref(id, proxy_config::prefs::kProxy,
                                                 kExtensionPrefsScopeRegular,
-                                                new base::Value(id));
+                                                base::Value(id));
 
     if (ExtensionRegistry::Get(profile())->enabled_extensions().GetByID(id))
       return testing::AssertionSuccess();
diff --git a/chrome/browser/extensions/extension_modules_apitest.cc b/chrome/browser/extensions/extension_modules_apitest.cc
index 9871112..4cc54e9 100644
--- a/chrome/browser/extensions/extension_modules_apitest.cc
+++ b/chrome/browser/extensions/extension_modules_apitest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/bind.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/extension_apitest.h"
 #include "components/network_session_configurator/common/network_switches.h"
 #include "content/public/test/test_host_resolver.h"
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 2aea7db3..ec17434 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -32,6 +32,7 @@
 #include "base/strings/string16.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "base/values.h"
diff --git a/chrome/browser/extensions/extension_storage_monitor_browsertest.cc b/chrome/browser/extensions/extension_storage_monitor_browsertest.cc
index 8aebcca..29596dd 100644
--- a/chrome/browser/extensions/extension_storage_monitor_browsertest.cc
+++ b/chrome/browser/extensions/extension_storage_monitor_browsertest.cc
@@ -13,6 +13,7 @@
 #include "base/optional.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/extensions/extension_storage_monitor.h"
diff --git a/chrome/browser/extensions/file_iframe_apitest.cc b/chrome/browser/extensions/file_iframe_apitest.cc
index 9bda8ed..8b74152 100644
--- a/chrome/browser/extensions/file_iframe_apitest.cc
+++ b/chrome/browser/extensions/file_iframe_apitest.cc
@@ -5,6 +5,7 @@
 #include "base/bind.h"
 #include "base/files/file_util.h"
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/threading/thread_restrictions.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
 #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/extensions/native_bindings_apitest.cc b/chrome/browser/extensions/native_bindings_apitest.cc
index 11a4898..82a0709 100644
--- a/chrome/browser/extensions/native_bindings_apitest.cc
+++ b/chrome/browser/extensions/native_bindings_apitest.cc
@@ -6,6 +6,7 @@
 
 #include "base/command_line.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
 #include "chrome/browser/extensions/extension_action.h"
diff --git a/chrome/browser/extensions/permissions_updater_unittest.cc b/chrome/browser/extensions/permissions_updater_unittest.cc
index 1723926..59c7fd9 100644
--- a/chrome/browser/extensions/permissions_updater_unittest.cc
+++ b/chrome/browser/extensions/permissions_updater_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/json/json_file_value_serializer.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/values.h"
 #include "chrome/browser/chrome_notification_types.h"
diff --git a/chrome/browser/extensions/process_management_browsertest.cc b/chrome/browser/extensions/process_management_browsertest.cc
index 4d4b7f5c..b0927c10 100644
--- a/chrome/browser/extensions/process_management_browsertest.cc
+++ b/chrome/browser/extensions/process_management_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include <stddef.h>
 
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "chrome/browser/chrome_notification_types.h"
diff --git a/chrome/browser/extensions/process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc
index acaedf86..6918f0b 100644
--- a/chrome/browser/extensions/process_manager_browsertest.cc
+++ b/chrome/browser/extensions/process_manager_browsertest.cc
@@ -13,6 +13,7 @@
 #include "base/run_loop.h"
 #include "base/stl_util.h"
 #include "base/strings/strcat.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/extensions/updater/update_service_browsertest.cc b/chrome/browser/extensions/updater/update_service_browsertest.cc
index af8f073..3d5136b 100644
--- a/chrome/browser/extensions/updater/update_service_browsertest.cc
+++ b/chrome/browser/extensions/updater/update_service_browsertest.cc
@@ -5,6 +5,7 @@
 #include "base/command_line.h"
 #include "base/json/json_reader.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/bind_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/extensions/content_verifier_test_utils.h"
diff --git a/chrome/browser/history/history_tab_helper_unittest.cc b/chrome/browser/history/history_tab_helper_unittest.cc
index 7d44220..290557a 100644
--- a/chrome/browser/history/history_tab_helper_unittest.cc
+++ b/chrome/browser/history/history_tab_helper_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/history/history_tab_helper.h"
 
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/cancelable_task_tracker.h"
 #include "base/test/bind_test_util.h"
diff --git a/chrome/browser/media/router/discovery/dial/dial_url_fetcher.cc b/chrome/browser/media/router/discovery/dial/dial_url_fetcher.cc
index a396b8e..e27e7ac74 100644
--- a/chrome/browser/media/router/discovery/dial/dial_url_fetcher.cc
+++ b/chrome/browser/media/router/discovery/dial/dial_url_fetcher.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/media/router/discovery/dial/dial_url_fetcher.h"
 
 #include "base/bind.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/net/system_network_context_manager.h"
diff --git a/chrome/browser/media/router/providers/dial/dial_media_route_provider_unittest.cc b/chrome/browser/media/router/providers/dial/dial_media_route_provider_unittest.cc
index 5b988f14..d8ddd7d 100644
--- a/chrome/browser/media/router/providers/dial/dial_media_route_provider_unittest.cc
+++ b/chrome/browser/media/router/providers/dial/dial_media_route_provider_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/media/router/test/mock_mojo_media_router.h"
 
 #include "base/run_loop.h"
diff --git a/chrome/browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc b/chrome/browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc
index 0248cfe..5a13b4e 100644
--- a/chrome/browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include <string>
 
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/media/webrtc/webrtc_browsertest_base.h"
 #include "chrome/common/chrome_switches.h"
 #include "content/public/browser/web_contents.h"
diff --git a/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc b/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc
index 2d828a19..22b11c09 100644
--- a/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include <algorithm>
 
+#include "base/strings/stringprintf.h"
 #include "base/test/trace_event_analyzer.h"
 #include "chrome/browser/media/webrtc/webrtc_browsertest_base.h"
 #include "chrome/browser/media/webrtc/webrtc_browsertest_common.h"
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
index d43dca3e49..85b818a 100644
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
@@ -173,14 +173,6 @@
   UMA_TOUCH_EVENT_FEATURE_DETECTION_STATE_COUNT
 };
 
-#if defined(OS_ANDROID) && defined(__arm__)
-enum UMAAndroidArmFpu {
-  UMA_ANDROID_ARM_FPU_VFPV3_D16,  // The ARM CPU only supports vfpv3-d16.
-  UMA_ANDROID_ARM_FPU_NEON,       // The Arm CPU supports NEON.
-  UMA_ANDROID_ARM_FPU_COUNT
-};
-#endif  // defined(OS_ANDROID) && defined(__arm__)
-
 void RecordMicroArchitectureStats() {
 #if defined(ARCH_CPU_X86_FAMILY)
   base::CPU cpu;
@@ -188,19 +180,6 @@
   UMA_HISTOGRAM_ENUMERATION("Platform.IntelMaxMicroArchitecture", arch,
                             base::CPU::MAX_INTEL_MICRO_ARCHITECTURE);
 #endif  // defined(ARCH_CPU_X86_FAMILY)
-#if defined(OS_ANDROID) && defined(__arm__)
-  // Detect NEON support.
-  // TODO(fdegans): Remove once non-NEON support has been removed.
-  if (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) {
-    UMA_HISTOGRAM_ENUMERATION("Android.ArmFpu",
-                              UMA_ANDROID_ARM_FPU_NEON,
-                              UMA_ANDROID_ARM_FPU_COUNT);
-  } else {
-    UMA_HISTOGRAM_ENUMERATION("Android.ArmFpu",
-                              UMA_ANDROID_ARM_FPU_VFPV3_D16,
-                              UMA_ANDROID_ARM_FPU_COUNT);
-  }
-#endif  // defined(OS_ANDROID) && defined(__arm__)
   base::UmaHistogramSparse("Platform.LogicalCpuCount",
                            base::SysInfo::NumberOfProcessors());
 }
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter_browsertest.cc b/chrome/browser/metrics/process_memory_metrics_emitter_browsertest.cc
index 035ffbb..7bd6e4a 100644
--- a/chrome/browser/metrics/process_memory_metrics_emitter_browsertest.cc
+++ b/chrome/browser/metrics/process_memory_metrics_emitter_browsertest.cc
@@ -8,6 +8,7 @@
 
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/trace_event_analyzer.h"
diff --git a/chrome/browser/net/cookie_policy_browsertest.cc b/chrome/browser/net/cookie_policy_browsertest.cc
index 1d2cf31..8045036 100644
--- a/chrome/browser/net/cookie_policy_browsertest.cc
+++ b/chrome/browser/net/cookie_policy_browsertest.cc
@@ -5,6 +5,7 @@
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
diff --git a/chrome/browser/net/load_timing_browsertest.cc b/chrome/browser/net/load_timing_browsertest.cc
index f5d68b3..a1f22de 100644
--- a/chrome/browser/net/load_timing_browsertest.cc
+++ b/chrome/browser/net/load_timing_browsertest.cc
@@ -10,6 +10,7 @@
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/single_thread_task_runner.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/net/profile_network_context_service.h"
diff --git a/chrome/browser/notifications/notification_interactive_uitest_support.cc b/chrome/browser/notifications/notification_interactive_uitest_support.cc
index 9c836a51..564b439 100644
--- a/chrome/browser/notifications/notification_interactive_uitest_support.cc
+++ b/chrome/browser/notifications/notification_interactive_uitest_support.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/notifications/notification_interactive_uitest_support.h"
 
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/notifications/notification_permission_context.h"
 #include "chrome/browser/permissions/permission_request_manager.h"
diff --git a/chrome/browser/notifications/notification_platform_bridge_win.cc b/chrome/browser/notifications/notification_platform_bridge_win.cc
index 12aba339..dabed06 100644
--- a/chrome/browser/notifications/notification_platform_bridge_win.cc
+++ b/chrome/browser/notifications/notification_platform_bridge_win.cc
@@ -20,6 +20,7 @@
 #include "base/sequenced_task_runner.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/win/core_winrt_util.h"
diff --git a/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc b/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc
index 21b23ac..249030f 100644
--- a/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc
+++ b/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc
@@ -16,6 +16,7 @@
 #include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/strings/string16.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/win/scoped_hstring.h"
diff --git a/chrome/browser/offline_pages/background_loader_offliner.cc b/chrome/browser/offline_pages/background_loader_offliner.cc
index ef7add7..ced2785 100644
--- a/chrome/browser/offline_pages/background_loader_offliner.cc
+++ b/chrome/browser/offline_pages/background_loader_offliner.cc
@@ -10,6 +10,7 @@
 #include "base/json/json_writer.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
diff --git a/chrome/browser/offline_pages/offline_page_request_handler.cc b/chrome/browser/offline_pages/offline_page_request_handler.cc
index a8abf85..8516800 100644
--- a/chrome/browser/offline_pages/offline_page_request_handler.cc
+++ b/chrome/browser/offline_pages/offline_page_request_handler.cc
@@ -13,6 +13,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "base/task_runner_util.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer_browsertest.cc
index 5d175714..a60e0563 100644
--- a/chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer_browsertest.cc
+++ b/chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer_browsertest.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc b/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc
index d523c3f..dce5d40 100644
--- a/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc
@@ -7,6 +7,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/optional.h"
+#include "base/strings/stringprintf.h"
 #include "base/time/time.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h"
diff --git a/chrome/browser/password_manager/password_generation_interactive_uitest.cc b/chrome/browser/password_manager/password_generation_interactive_uitest.cc
index 5184789..0fae796 100644
--- a/chrome/browser/password_manager/password_generation_interactive_uitest.cc
+++ b/chrome/browser/password_manager/password_generation_interactive_uitest.cc
@@ -4,6 +4,7 @@
 
 #include "base/command_line.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc b/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc
index 79c8e31..d029221 100644
--- a/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc
+++ b/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc
@@ -7,6 +7,7 @@
 
 #include "base/files/file_enumerator.h"
 #include "base/path_service.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/autofill/captured_sites_test_utils.h"
 #include "chrome/browser/password_manager/password_manager_test_base.h"
diff --git a/chrome/browser/password_manager/password_manager_interactive_test_base.cc b/chrome/browser/password_manager/password_manager_interactive_test_base.cc
index 805ac44..f0727f0 100644
--- a/chrome/browser/password_manager/password_manager_interactive_test_base.cc
+++ b/chrome/browser/password_manager/password_manager_interactive_test_base.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/password_manager/password_manager_interactive_test_base.h"
 
+#include "base/strings/stringprintf.h"
 #include "content/public/test/browser_test_utils.h"
 #include "ui/events/keycodes/dom_us_layout_data.h"
 #include "ui/events/keycodes/keyboard_code_conversion.h"
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
index 7a08fdf6..c61152e 100644
--- a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
+++ b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
@@ -1921,22 +1921,19 @@
 
   content::WebContents* active_web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
-  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
-                                     "setMediaSessionSkipAdActionHandler();"));
 
   // Skip Ad button is not displayed if video is not playing even if mouse is
   // hovering over the window and media session action handler has been set.
+  ASSERT_TRUE(content::ExecuteScript(
+      active_web_contents, "setMediaSessionActionHandler('skipad');"));
   base::RunLoop().RunUntilIdle();
   MoveMouseOver(overlay_window);
   EXPECT_FALSE(
       overlay_window->skip_ad_controls_view_for_testing()->layer()->visible());
 
-  EXPECT_FALSE(
-      overlay_window->skip_ad_controls_view_for_testing()->layer()->visible());
-  ASSERT_TRUE(content::ExecuteScript(active_web_contents, "video.play();"));
-
-  // Set action handler and check that Skip Ad button is now displayed when
+  // Play video and check that Skip Ad button is now displayed when
   // video plays and mouse is hovering over the window.
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents, "video.play();"));
   base::RunLoop().RunUntilIdle();
   MoveMouseOver(overlay_window);
   EXPECT_TRUE(
@@ -1945,12 +1942,87 @@
   // Unset action handler and check that Skip Ad button is not displayed when
   // video plays and mouse is hovering over the window.
   ASSERT_TRUE(content::ExecuteScript(
-      active_web_contents, "unsetMediaSessionSkipAdActionHandler();"));
+      active_web_contents, "unsetMediaSessionActionHandler('skipad');"));
   base::RunLoop().RunUntilIdle();
   MoveMouseOver(overlay_window);
   EXPECT_FALSE(
       overlay_window->skip_ad_controls_view_for_testing()->layer()->visible());
 }
+
+// Tests that the Play/Plause button is displayed in the Picture-in-Picture
+// window when Media Session actions "play" and "pause" are handled by the
+// website even if video is a media stream.
+IN_PROC_BROWSER_TEST_F(MediaSessionPictureInPictureWindowControllerBrowserTest,
+                       PlayPauseButtonVisibility) {
+  LoadTabAndEnterPictureInPicture(browser());
+
+  OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>(
+      window_controller()->GetWindowForTesting());
+  ASSERT_TRUE(overlay_window);
+
+  content::WebContents* active_web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+
+  // Play/Pause button is hidden if playing video is a mediastream and mouse is
+  // hovering over the window.
+  bool result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+      active_web_contents, "changeVideoSrcToMediaStream();", &result));
+  EXPECT_TRUE(result);
+  base::RunLoop().RunUntilIdle();
+  MoveMouseOver(overlay_window);
+  EXPECT_FALSE(
+      overlay_window->play_pause_controls_view_for_testing()->IsDrawn());
+
+  // Play second video (non-muted) so that Media Session becomes active.
+  ASSERT_TRUE(
+      content::ExecuteScript(active_web_contents, "secondVideo.play();"));
+
+  // Set Media Session action "play" handler and check that Play/Pause button
+  // is still hidden when mouse is hovering over the window.
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
+                                     "setMediaSessionActionHandler('play');"));
+  base::RunLoop().RunUntilIdle();
+  MoveMouseOver(overlay_window);
+  EXPECT_FALSE(
+      overlay_window->play_pause_controls_view_for_testing()->IsDrawn());
+
+  // Set Media Session action "pause" handler and check that Play/Pause button
+  // is now displayed when mouse is hovering over the window.
+  base::RunLoop().RunUntilIdle();
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
+                                     "setMediaSessionActionHandler('pause');"));
+  base::RunLoop().RunUntilIdle();
+  MoveMouseOver(overlay_window);
+  EXPECT_TRUE(
+      overlay_window->play_pause_controls_view_for_testing()->IsDrawn());
+
+  // Unset Media Session action "pause" handler and check that Play/Pause button
+  // is hidden when mouse is hovering over the window.
+  ASSERT_TRUE(content::ExecuteScript(
+      active_web_contents, "unsetMediaSessionActionHandler('pause');"));
+  base::RunLoop().RunUntilIdle();
+  MoveMouseOver(overlay_window);
+  EXPECT_FALSE(
+      overlay_window->play_pause_controls_view_for_testing()->IsDrawn());
+
+  ASSERT_TRUE(
+      content::ExecuteScript(active_web_contents, "exitPictureInPicture();"));
+
+  // Reset Media Session action "pause" handler and check that Play/Pause button
+  // is now displayed when mouse is hovering over the window when it enters
+  // Picture-in-Picture again.
+  base::RunLoop().RunUntilIdle();
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
+                                     "setMediaSessionActionHandler('pause');"));
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+      active_web_contents, "enterPictureInPicture();", &result));
+  EXPECT_TRUE(result);
+  base::RunLoop().RunUntilIdle();
+  MoveMouseOver(overlay_window);
+  EXPECT_TRUE(
+      overlay_window->play_pause_controls_view_for_testing()->IsDrawn());
+}
 #endif
 
 // Tests that clicking the Skip Ad button in the Picture-in-Picture window
@@ -1961,8 +2033,8 @@
   content::WebContents* active_web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
   ASSERT_TRUE(content::ExecuteScript(active_web_contents, "video.play();"));
-  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
-                                     "setMediaSessionSkipAdActionHandler();"));
+  ASSERT_TRUE(content::ExecuteScript(
+      active_web_contents, "setMediaSessionActionHandler('skipad');"));
   base::RunLoop().RunUntilIdle();
 
   // Simulates user clicking "Skip Ad" and check the handler function is called.
@@ -1973,6 +2045,39 @@
                 .WaitAndGetTitle());
 }
 
+// Tests that clicking the Play/Pause button in the Picture-in-Picture window
+// calls the Media Session actions "play" and "pause" handler functions.
+IN_PROC_BROWSER_TEST_F(MediaSessionPictureInPictureWindowControllerBrowserTest,
+                       PlayPauseHandlersCalled) {
+  LoadTabAndEnterPictureInPicture(browser());
+  content::WebContents* active_web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents, "video.play();"));
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
+                                     "setMediaSessionActionHandler('play');"));
+  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
+                                     "setMediaSessionActionHandler('pause');"));
+  base::RunLoop().RunUntilIdle();
+
+  // Simulates user clicking "Play/Pause" and check that the "pause" handler
+  // function is called.
+  window_controller()->TogglePlayPause();
+  base::string16 expected_title = base::ASCIIToUTF16("pause");
+  EXPECT_EQ(expected_title,
+            content::TitleWatcher(active_web_contents, expected_title)
+                .WaitAndGetTitle());
+
+  EXPECT_TRUE(content::ExecuteScript(active_web_contents, "video.pause();"));
+
+  // Simulates user clicking "Play/Pause" and check that the "play" handler
+  // function is called.
+  window_controller()->TogglePlayPause();
+  expected_title = base::ASCIIToUTF16("play");
+  EXPECT_EQ(expected_title,
+            content::TitleWatcher(active_web_contents, expected_title)
+                .WaitAndGetTitle());
+}
+
 // Show/hide page and check that Auto Picture-in-Picture is not triggered. This
 // test is most likely going to be flaky the day the tested thing fails.
 // Do NOT disable test. Ping /chrome/browser/picture_in_picture/OWNERS instead.
diff --git a/chrome/browser/plugins/plugin_infobar_delegates.cc b/chrome/browser/plugins/plugin_infobar_delegates.cc
index e564fa0..122a8adf 100644
--- a/chrome/browser/plugins/plugin_infobar_delegates.cc
+++ b/chrome/browser/plugins/plugin_infobar_delegates.cc
@@ -38,19 +38,28 @@
 
 using base::UserMetricsAction;
 
+namespace {
+
+base::string16 GetInfoBarMessage(const PluginMetadata& metadata) {
+  return l10n_util::GetStringFUTF16(metadata.IsPluginDeprecated()
+                                        ? IDS_PLUGIN_DEPRECATED_PROMPT
+                                        : IDS_PLUGIN_OUTDATED_PROMPT,
+                                    metadata.name());
+}
+
+}  // namespace
+
 // OutdatedPluginInfoBarDelegate ----------------------------------------------
 
 void OutdatedPluginInfoBarDelegate::Create(
     InfoBarService* infobar_service,
     PluginInstaller* installer,
     std::unique_ptr<PluginMetadata> plugin_metadata) {
-  // Copy the name out of |plugin_metadata| now, since the Pass() call below
-  // will make it impossible to get at.
-  base::string16 name(plugin_metadata->name());
-  infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate>(new OutdatedPluginInfoBarDelegate(
-          installer, std::move(plugin_metadata),
-          l10n_util::GetStringFUTF16(IDS_PLUGIN_OUTDATED_PROMPT, name)))));
+  std::unique_ptr<ConfirmInfoBarDelegate> delegate_ptr;
+  delegate_ptr.reset(
+      new OutdatedPluginInfoBarDelegate(installer, std::move(plugin_metadata)));
+  infobar_service->AddInfoBar(
+      infobar_service->CreateConfirmInfoBar(std::move(delegate_ptr)));
 }
 
 OutdatedPluginInfoBarDelegate::OutdatedPluginInfoBarDelegate(
@@ -61,7 +70,8 @@
       WeakPluginInstallerObserver(installer),
       identifier_(plugin_metadata->identifier()),
       plugin_metadata_(std::move(plugin_metadata)),
-      message_(message) {
+      message_(message.empty() ? GetInfoBarMessage(*plugin_metadata_)
+                               : message) {
   base::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Shown"));
   std::string name = base::UTF16ToUTF8(plugin_metadata_->name());
   if (name == PluginMetadata::kJavaGroupName) {
@@ -104,6 +114,13 @@
   return message_;
 }
 
+int OutdatedPluginInfoBarDelegate::GetButtons() const {
+  if (plugin_metadata_->IsPluginDeprecated())
+    return BUTTON_CANCEL;
+
+  return BUTTON_OK | BUTTON_CANCEL;
+}
+
 base::string16 OutdatedPluginInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
   return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
@@ -162,20 +179,11 @@
   // keep replacing infobar delegates infinitely).
   if ((message_ == message) || !infobar()->owner())
     return;
-  Replace(infobar(), installer(), plugin_metadata_->Clone(), message);
-}
 
-// static
-void OutdatedPluginInfoBarDelegate::Replace(
-    infobars::InfoBar* infobar,
-    PluginInstaller* installer,
-    std::unique_ptr<PluginMetadata> plugin_metadata,
-    const base::string16& message) {
-  DCHECK(infobar->owner());
-  infobar->owner()->ReplaceInfoBar(
-      infobar, infobar->owner()->CreateConfirmInfoBar(
-                   std::unique_ptr<ConfirmInfoBarDelegate>(
-                       new OutdatedPluginInfoBarDelegate(
-                           installer, std::move(plugin_metadata), message))));
+  std::unique_ptr<ConfirmInfoBarDelegate> delegate_ptr;
+  delegate_ptr.reset(new OutdatedPluginInfoBarDelegate(
+      installer(), std::move(plugin_metadata_), message));
+  infobar()->owner()->ReplaceInfoBar(
+      infobar(),
+      infobar()->owner()->CreateConfirmInfoBar(std::move(delegate_ptr)));
 }
-
diff --git a/chrome/browser/plugins/plugin_infobar_delegates.h b/chrome/browser/plugins/plugin_infobar_delegates.h
index cb63ddd..f1ab84c 100644
--- a/chrome/browser/plugins/plugin_infobar_delegates.h
+++ b/chrome/browser/plugins/plugin_infobar_delegates.h
@@ -5,6 +5,9 @@
 #ifndef CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_
 #define CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_
 
+#include <memory>
+#include <string>
+
 #include "base/callback.h"
 #include "base/macros.h"
 #include "build/build_config.h"
@@ -18,7 +21,7 @@
 class PluginInstaller;
 class PluginMetadata;
 
-// Infobar that's shown when a plugin is out of date.
+// Infobar that's shown when a plugin is out of date or deprecated.
 class OutdatedPluginInfoBarDelegate : public ConfirmInfoBarDelegate,
                                       public WeakPluginInstallerObserver {
  public:
@@ -28,17 +31,11 @@
                      PluginInstaller* installer,
                      std::unique_ptr<PluginMetadata> metadata);
 
-  // Replaces |infobar|, which must currently be owned, with an infobar asking
-  // the user to update a particular plugin.
-  static void Replace(infobars::InfoBar* infobar,
-                      PluginInstaller* installer,
-                      std::unique_ptr<PluginMetadata> plugin_metadata,
-                      const base::string16& message);
-
  private:
-  OutdatedPluginInfoBarDelegate(PluginInstaller* installer,
-                                std::unique_ptr<PluginMetadata> metadata,
-                                const base::string16& message);
+  OutdatedPluginInfoBarDelegate(
+      PluginInstaller* installer,
+      std::unique_ptr<PluginMetadata> metadata,
+      const base::string16& message_override = base::string16());
   ~OutdatedPluginInfoBarDelegate() override;
 
   // ConfirmInfoBarDelegate:
@@ -46,6 +43,7 @@
   void InfoBarDismissed() override;
   const gfx::VectorIcon& GetVectorIcon() const override;
   base::string16 GetMessageText() const override;
+  int GetButtons() const override;
   base::string16 GetButtonLabel(InfoBarButton button) const override;
   bool Accept() override;
   bool Cancel() override;
diff --git a/chrome/browser/plugins/plugin_metadata.cc b/chrome/browser/plugins/plugin_metadata.cc
index b6d662b..4324079 100644
--- a/chrome/browser/plugins/plugin_metadata.cc
+++ b/chrome/browser/plugins/plugin_metadata.cc
@@ -63,6 +63,12 @@
   return base::ContainsValue(all_mime_types_, mime_type);
 }
 
+bool PluginMetadata::IsPluginDeprecated() const {
+  // TODO(crbug/918427): this is a placeholder behavior; please replace once
+  // the metadata standard for blocking plugins has been finalized.
+  return plugin_url().is_empty();
+}
+
 bool PluginMetadata::MatchesPlugin(const content::WebPluginInfo& plugin) {
   for (size_t i = 0; i < matching_mime_types_.size(); ++i) {
     // To have a match, every one of the |matching_mime_types_|
diff --git a/chrome/browser/plugins/plugin_metadata.h b/chrome/browser/plugins/plugin_metadata.h
index c9dfb57..b93e2ea 100644
--- a/chrome/browser/plugins/plugin_metadata.h
+++ b/chrome/browser/plugins/plugin_metadata.h
@@ -7,6 +7,8 @@
 
 #include <map>
 #include <memory>
+#include <string>
+#include <vector>
 
 #include "base/macros.h"
 #include "base/strings/string16.h"
@@ -67,6 +69,9 @@
 
   const std::string& language() const { return language_; }
 
+  // Returns whether the plugin has been deprecated and cannot be updated.
+  bool IsPluginDeprecated() const;
+
   bool HasMimeType(const std::string& mime_type) const;
   void AddMimeType(const std::string& mime_type);
   void AddMatchingMimeType(const std::string& mime_type);
diff --git a/chrome/browser/plugins/plugin_test_utils.cc b/chrome/browser/plugins/plugin_test_utils.cc
index f735eb889..94b4c30 100644
--- a/chrome/browser/plugins/plugin_test_utils.cc
+++ b/chrome/browser/plugins/plugin_test_utils.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/plugins/plugin_test_utils.h"
 
+#include "base/strings/stringprintf.h"
 #include "content/public/test/browser_test_utils.h"
 
 // static
diff --git a/chrome/browser/predictors/loading_predictor_browsertest.cc b/chrome/browser/predictors/loading_predictor_browsertest.cc
index 88a2795..0cc57446 100644
--- a/chrome/browser/predictors/loading_predictor_browsertest.cc
+++ b/chrome/browser/predictors/loading_predictor_browsertest.cc
@@ -15,6 +15,7 @@
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/single_thread_task_runner.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/predictors/loading_predictor.h"
 #include "chrome/browser/predictors/loading_predictor_factory.h"
diff --git a/chrome/browser/predictors/loading_stats_collector_unittest.cc b/chrome/browser/predictors/loading_stats_collector_unittest.cc
index eeeab97d..8720f5b 100644
--- a/chrome/browser/predictors/loading_stats_collector_unittest.cc
+++ b/chrome/browser/predictors/loading_stats_collector_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <vector>
 
+#include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/predictors/loading_test_util.h"
 #include "chrome/browser/predictors/preconnect_manager.h"
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
index a206afc5..52c4081 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
@@ -11,6 +11,7 @@
 
 #include "base/memory/ref_counted.h"
 #include "base/sequenced_task_runner.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/time/time.h"
diff --git a/chrome/browser/prefetch/prefetch_browsertest.cc b/chrome/browser/prefetch/prefetch_browsertest.cc
index 8f91a6e9..a4069db 100644
--- a/chrome/browser/prefetch/prefetch_browsertest.cc
+++ b/chrome/browser/prefetch/prefetch_browsertest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/base_switches.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/net/prediction_options.h"
diff --git a/chrome/browser/previews/previews_browsertest.cc b/chrome/browser/previews/previews_browsertest.cc
index 12d0489..f876c11 100644
--- a/chrome/browser/previews/previews_browsertest.cc
+++ b/chrome/browser/previews/previews_browsertest.cc
@@ -7,6 +7,7 @@
 #include "base/metrics/field_trial_param_associator.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "base/task/task_scheduler/task_scheduler.h"
 #include "base/test/metrics/histogram_tester.h"
diff --git a/chrome/browser/previews/previews_infobar_delegate.cc b/chrome/browser/previews/previews_infobar_delegate.cc
index 24668f1..61c9feb 100644
--- a/chrome/browser/previews/previews_infobar_delegate.cc
+++ b/chrome/browser/previews/previews_infobar_delegate.cc
@@ -8,6 +8,7 @@
 #include "base/metrics/histogram.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h"
diff --git a/chrome/browser/previews/previews_lite_page_navigation_throttle.cc b/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
index fedd391..5beb187 100644
--- a/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
+++ b/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
@@ -18,6 +18,7 @@
 #include "base/strings/safe_sprintf.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
index aef779ef..d63edf4 100644
--- a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
+++ b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
@@ -21,6 +21,7 @@
 #include "base/rand_util.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
+#include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/task/post_task.h"
 #include "base/test/multiprocess_test.h"
diff --git a/chrome/browser/printing/print_browsertest.cc b/chrome/browser/printing/print_browsertest.cc
index 704ef69..eca14d3 100644
--- a/chrome/browser/printing/print_browsertest.cc
+++ b/chrome/browser/printing/print_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/files/file_path.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/threading/thread_restrictions.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
 #include "chrome/browser/printing/print_view_manager_common.h"
diff --git a/chrome/browser/profiles/profile_avatar_icon_util.cc b/chrome/browser/profiles/profile_avatar_icon_util.cc
index aa5e089b2..1c310f9 100644
--- a/chrome/browser/profiles/profile_avatar_icon_util.cc
+++ b/chrome/browser/profiles/profile_avatar_icon_util.cc
@@ -13,6 +13,7 @@
 #include "base/macros.h"
 #include "base/path_service.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "cc/paint/paint_flags.h"
 #include "chrome/browser/browser_process.h"
diff --git a/chrome/browser/profiles/profile_downloader.cc b/chrome/browser/profiles/profile_downloader.cc
index 7927ce9..9ac131c 100644
--- a/chrome/browser/profiles/profile_downloader.cc
+++ b/chrome/browser/profiles/profile_downloader.cc
@@ -21,7 +21,6 @@
 #include "chrome/browser/profiles/profile_downloader_delegate.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/signin/account_fetcher_service_factory.h"
-#include "chrome/browser/signin/account_tracker_service_factory.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "components/data_use_measurement/core/data_use_user_data.h"
 #include "components/signin/core/browser/account_fetcher_service.h"
@@ -49,14 +48,13 @@
 ProfileDownloader::ProfileDownloader(ProfileDownloaderDelegate* delegate)
     : delegate_(delegate),
       picture_status_(PICTURE_FAILED),
-      account_tracker_service_(AccountTrackerServiceFactory::GetForProfile(
-          delegate_->GetBrowserProfile())),
       identity_manager_(IdentityManagerFactory::GetForProfile(
           delegate_->GetBrowserProfile())),
       identity_manager_observer_(this),
-      waiting_for_account_info_(false) {
+      waiting_for_account_info_(false),
+      waiting_for_refresh_token_(false) {
   DCHECK(delegate_);
-  account_tracker_service_->AddObserver(this);
+  identity_manager_observer_.Add(identity_manager_);
 }
 
 void ProfileDownloader::Start() {
@@ -80,7 +78,7 @@
   if (identity_manager_->HasAccountWithRefreshToken(account_id_))
     StartFetchingOAuth2AccessToken();
   else
-    identity_manager_observer_.Add(identity_manager_);
+    waiting_for_refresh_token_ = true;
 }
 
 base::string16 ProfileDownloader::GetProfileHostedDomain() const {
@@ -120,7 +118,11 @@
 
 void ProfileDownloader::StartFetchingImage() {
   VLOG(1) << "Fetching user entry with token: " << auth_token_;
-  account_info_ = account_tracker_service_->GetAccountInfo(account_id_);
+  auto maybe_account_info =
+      identity_manager_->FindAccountInfoForAccountWithRefreshTokenByAccountId(
+          account_id_);
+  if (maybe_account_info.has_value())
+    account_info_ = maybe_account_info.value();
 
   if (delegate_->IsPreSignin()) {
     AccountFetcherServiceFactory::GetForProfile(delegate_->GetBrowserProfile())
@@ -153,7 +155,7 @@
 
 ProfileDownloader::~ProfileDownloader() {
   oauth2_access_token_fetcher_.reset();
-  account_tracker_service_->RemoveObserver(this);
+  identity_manager_observer_.Remove(identity_manager_);
 }
 
 void ProfileDownloader::FetchImageData() {
@@ -292,10 +294,10 @@
 
 void ProfileDownloader::OnRefreshTokenUpdatedForAccount(
     const AccountInfo& account_info) {
-  if (account_info.account_id != account_id_)
+  if (account_info.account_id != account_id_ || !waiting_for_refresh_token_)
     return;
 
-  identity_manager_observer_.Remove(identity_manager_);
+  waiting_for_refresh_token_ = false;
   StartFetchingOAuth2AccessToken();
 }
 
diff --git a/chrome/browser/profiles/profile_downloader.h b/chrome/browser/profiles/profile_downloader.h
index cbfd8bf..b1f663a8 100644
--- a/chrome/browser/profiles/profile_downloader.h
+++ b/chrome/browser/profiles/profile_downloader.h
@@ -14,7 +14,6 @@
 #include "base/strings/string16.h"
 #include "chrome/browser/image_decoder.h"
 #include "components/signin/core/browser/account_info.h"
-#include "components/signin/core/browser/account_tracker_service.h"
 #include "services/identity/public/cpp/identity_manager.h"
 #include "services/network/public/cpp/simple_url_loader.h"
 #include "services/network/public/mojom/url_loader_factory.mojom.h"
@@ -29,8 +28,7 @@
 // Downloads user profile information. The profile picture is decoded in a
 // sandboxed process.
 class ProfileDownloader : public ImageDecoder::ImageRequest,
-                          public identity::IdentityManager::Observer,
-                          public AccountTrackerService::Observer {
+                          public identity::IdentityManager::Observer {
  public:
   enum PictureStatus {
     PICTURE_SUCCESS,
@@ -99,8 +97,6 @@
   // Overriden from identity::IdentityManager::Observer:
   void OnRefreshTokenUpdatedForAccount(
       const AccountInfo& account_info) override;
-
-  // Implementation of AccountTrackerService::Observer.
   void OnAccountUpdated(const AccountInfo& info) override;
 
   // Callback for AccessTokenFetcher.
@@ -125,11 +121,11 @@
   AccountInfo account_info_;
   SkBitmap profile_picture_;
   PictureStatus picture_status_;
-  AccountTrackerService* account_tracker_service_;
   identity::IdentityManager* identity_manager_;
   ScopedObserver<identity::IdentityManager, identity::IdentityManager::Observer>
       identity_manager_observer_;
   bool waiting_for_account_info_;
+  bool waiting_for_refresh_token_;
 
   DISALLOW_COPY_AND_ASSIGN(ProfileDownloader);
 };
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 16c5000..9c88ffd 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -38,7 +38,6 @@
 #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h"
 #include "chrome/browser/download/download_core_service.h"
 #include "chrome/browser/download/download_core_service_factory.h"
-#include "chrome/browser/invalidation/deprecated_profile_invalidation_provider_factory.h"
 #include "chrome/browser/password_manager/password_store_factory.h"
 #include "chrome/browser/prefs/incognito_mode_prefs.h"
 #include "chrome/browser/previews/previews_service.h"
@@ -79,8 +78,6 @@
 #include "components/bookmarks/common/bookmark_pref_names.h"
 #include "components/browser_sync/profile_sync_service.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
-#include "components/invalidation/impl/profile_invalidation_provider.h"
-#include "components/invalidation/public/invalidation_service.h"
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/prefs/pref_service.h"
 #include "components/prefs/scoped_user_pref_update.h"
@@ -1348,16 +1345,7 @@
       profile->GetPath());
 
   GaiaCookieManagerServiceFactory::GetForProfile(profile)->InitCookieListener();
-  invalidation::ProfileInvalidationProvider* invalidation_provider =
-      invalidation::DeprecatedProfileInvalidationProviderFactory::GetForProfile(
-          profile);
-  // Chrome OS login and guest profiles do not support invalidation. This is
-  // fine as they do not have GAIA credentials anyway. http://crbug.com/358169
-  invalidation::InvalidationService* invalidation_service =
-      invalidation_provider ? invalidation_provider->GetInvalidationService()
-                            : nullptr;
-  AccountFetcherServiceFactory::GetForProfile(profile)
-      ->SetupInvalidationsOnProfileLoad(invalidation_service);
+  AccountFetcherServiceFactory::GetForProfile(profile)->OnProfileLoaded();
   AccountReconcilorFactory::GetForProfile(profile);
 
   // Initialization needs to happen after the browser context is available
diff --git a/chrome/browser/profiles/profile_window_browsertest.cc b/chrome/browser/profiles/profile_window_browsertest.cc
index 7ccd5dc3..7b3598c 100644
--- a/chrome/browser/profiles/profile_window_browsertest.cc
+++ b/chrome/browser/profiles/profile_window_browsertest.cc
@@ -21,7 +21,7 @@
 #include "chrome/browser/profiles/profile_attributes_storage.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_list.h"
@@ -208,11 +208,11 @@
 IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestCannotSignin) {
   Browser* guest_browser = OpenGuestBrowser();
 
-  SigninManager* signin_manager = SigninManagerFactory::GetForProfile(
-      guest_browser->profile());
+  identity::IdentityManager* identity_manager =
+      IdentityManagerFactory::GetForProfile(guest_browser->profile());
 
-  // Guest profiles can't sign in without a SigninManager.
-  ASSERT_FALSE(signin_manager);
+  // Guest profiles can't sign in without a IdentityManager.
+  ASSERT_FALSE(identity_manager);
 }
 
 IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestAppMenuLacksBookmarks) {
diff --git a/chrome/browser/profiling_host/profiling_process_host.cc b/chrome/browser/profiling_host/profiling_process_host.cc
index a33e687..48af3cf 100644
--- a/chrome/browser/profiling_host/profiling_process_host.cc
+++ b/chrome/browser/profiling_host/profiling_process_host.cc
@@ -15,6 +15,7 @@
 #include "base/memory/ref_counted_memory.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/system/sys_info.h"
 #include "base/task/post_task.h"
 #include "base/trace_event/trace_log.h"
diff --git a/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc b/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
index 4ba4215b..af3be2b3 100644
--- a/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
+++ b/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
index 68a5b21d..d87ed43 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
@@ -151,6 +151,11 @@
   FindHandler.init();
 
   Notifications.onStartup();
+
+  chrome.accessibilityPrivate.onAnnounceForAccessibility.addListener(
+      (announceText) => {
+        cvox.ChromeVox.tts.speak(announceText.join(' '), cvox.QueueMode.FLUSH);
+      });
 };
 
 Background.prototype = {
diff --git a/chrome/browser/resources/quota_internals/BUILD.gn b/chrome/browser/resources/quota_internals/BUILD.gn
index 64d352f..80a2959 100644
--- a/chrome/browser/resources/quota_internals/BUILD.gn
+++ b/chrome/browser/resources/quota_internals/BUILD.gn
@@ -14,7 +14,6 @@
 js_library("event_handler") {
   deps = [
     "//ui/webui/resources/js:cr",
-    "//ui/webui/resources/js:i18n_template_no_process",
     "//ui/webui/resources/js:util",
     "//ui/webui/resources/js/cr/ui:tabs",
     "//ui/webui/resources/js/cr/ui:tree",
diff --git a/chrome/browser/resources/quota_internals/event_handler.js b/chrome/browser/resources/quota_internals/event_handler.js
index 3f87618..ef5d3c1 100644
--- a/chrome/browser/resources/quota_internals/event_handler.js
+++ b/chrome/browser/resources/quota_internals/event_handler.js
@@ -39,17 +39,6 @@
 }
 
 /**
- * Apply localization to |element| with i18n_template.js if available.
- * @param {Element} element Element to be localized.
- * @private
- */
-function localize_(element) {
-  if (window.i18nTemplate && window.loadTimeData) {
-    i18nTemplate.process(element, loadTimeData);
-  }
-}
-
-/**
  * Returns 'N/A' (Not Available) text if |value| is undefined.
  * @param {*} value Object to print.
  * @return {string} 'N/A' or ''.
@@ -396,7 +385,6 @@
     entry.detail = data[key];
     entry.innerHTML = '<td>' + stringToText_(key) + '</td>' +
         '<td>' + stringToText_(entry.detail) + '</td>';
-    localize_(entry);
   }
 }
 
@@ -432,7 +420,6 @@
       const row = cr.doc.createElement('tr');
       row.innerHTML = '<td>' + label + '</td>' +
           '<td>' + normalize(entry) + '</td>';
-      localize_(row);
       tbody.appendChild(row);
     }
   }
diff --git a/chrome/browser/resources/quota_internals/main.html b/chrome/browser/resources/quota_internals/main.html
index 9197fca..668327151 100644
--- a/chrome/browser/resources/quota_internals/main.html
+++ b/chrome/browser/resources/quota_internals/main.html
@@ -4,7 +4,7 @@
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file.
 -->
-<html i18n-values="dir:textdirection;lang:language">
+<html dir="$i18n{textdirection}" lang="$i18n{language}">
 <title>Quota Internals</title>
 <meta charset="utf-8">
 <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
@@ -73,6 +73,5 @@
   </tabpanels>
 </tabbox>
 
-<script src="chrome://resources/js/i18n_template.js"></script>
 </body>
 </html>
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.cc b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
index 4ee3160..103f74f8 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
@@ -11,6 +11,7 @@
 #include "base/rand_util.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
index e8daf37a1..dbea3de 100644
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
@@ -10,6 +10,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/rand_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/history/history_service_factory.h"
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
index a633182..3b1b23a4 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
@@ -56,9 +56,9 @@
       const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
       override {
     // Create appropriate display options for this blocking page.
-    Profile* profile =
-        Profile::FromBrowserContext(web_contents->GetBrowserContext());
-    PrefService* prefs = profile->GetPrefs();
+    PrefService* prefs =
+        Profile::FromBrowserContext(web_contents->GetBrowserContext())
+            ->GetPrefs();
     bool is_extended_reporting_opt_in_allowed =
         IsExtendedReportingOptInAllowed(*prefs);
     bool is_proceed_anyway_disabled =
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.h b/chrome/browser/safe_browsing/safe_browsing_blocking_page.h
index 0a896bc..e5f17a1 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.h
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.h
@@ -36,7 +36,6 @@
 #include "base/macros.h"
 #include "components/safe_browsing/base_blocking_page.h"
 #include "components/safe_browsing/base_ui_manager.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 
 namespace safe_browsing {
 
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
index 7a90921..798e575 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -331,9 +331,9 @@
       const GURL& main_frame_url,
       const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
       override {
-    Profile* profile =
-        Profile::FromBrowserContext(web_contents->GetBrowserContext());
-    PrefService* prefs = profile->GetPrefs();
+    PrefService* prefs =
+        Profile::FromBrowserContext(web_contents->GetBrowserContext())
+            ->GetPrefs();
     bool is_extended_reporting_opt_in_allowed =
         prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingOptInAllowed);
     bool is_proceed_anyway_disabled =
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
index 141d81d..5788482 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
@@ -18,10 +18,7 @@
 #include "chrome/test/base/scoped_testing_local_state.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/metrics/metrics_pref_names.h"
-#include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
-#include "components/prefs/testing_pref_service.h"
 #include "components/safe_browsing/browser/threat_details.h"
 #include "components/safe_browsing/common/safe_browsing_prefs.h"
 #include "components/security_interstitials/content/security_interstitial_controller_client.h"
@@ -108,9 +105,9 @@
       const GURL& main_frame_url,
       const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
       override {
-    Profile* profile =
-        Profile::FromBrowserContext(web_contents->GetBrowserContext());
-    PrefService* prefs = profile->GetPrefs();
+    PrefService* prefs =
+        Profile::FromBrowserContext(web_contents->GetBrowserContext())
+            ->GetPrefs();
     bool is_extended_reporting_opt_in_allowed =
         prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingOptInAllowed);
     bool is_proceed_anyway_disabled =
@@ -183,9 +180,9 @@
       const GURL& main_frame_url,
       const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
       override {
-    Profile* profile =
-        Profile::FromBrowserContext(web_contents->GetBrowserContext());
-    PrefService* prefs = profile->GetPrefs();
+    PrefService* prefs =
+        Profile::FromBrowserContext(web_contents->GetBrowserContext())
+            ->GetPrefs();
     bool is_extended_reporting_opt_in_allowed =
         prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingOptInAllowed);
     bool is_proceed_anyway_disabled =
diff --git a/chrome/browser/safe_browsing/telemetry/android/android_telemetry_service.cc b/chrome/browser/safe_browsing/telemetry/android/android_telemetry_service.cc
index a9e340d..cab0ec9 100644
--- a/chrome/browser/safe_browsing/telemetry/android/android_telemetry_service.cc
+++ b/chrome/browser/safe_browsing/telemetry/android/android_telemetry_service.cc
@@ -259,6 +259,7 @@
   report->set_type(
       safe_browsing::ClientSafeBrowsingReportRequest::APK_DOWNLOAD);
   report->set_url(item->GetOriginalUrl().spec());
+  report->set_page_url(item->GetTabUrl().spec());
 
   // Fill referrer chain.
   content::WebContents* web_contents =
diff --git a/chrome/browser/search/background/ntp_background_service.cc b/chrome/browser/search/background/ntp_background_service.cc
index 7301c39..8008970 100644
--- a/chrome/browser/search/background/ntp_background_service.cc
+++ b/chrome/browser/search/background/ntp_background_service.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/search/background/ntp_background_service.h"
 
 #include "base/bind.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/net/system_network_context_manager.h"
 #include "chrome/browser/search/background/ntp_background.pb.h"
diff --git a/chrome/browser/search/ntp_icon_source.cc b/chrome/browser/search/ntp_icon_source.cc
index d0db7807..2f54984 100644
--- a/chrome/browser/search/ntp_icon_source.cc
+++ b/chrome/browser/search/ntp_icon_source.cc
@@ -13,6 +13,7 @@
 #include "base/memory/ref_counted_memory.h"
 #include "base/sha1.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "build/build_config.h"
 #include "cc/paint/skia_paint_canvas.h"
 #include "chrome/browser/favicon/favicon_service_factory.h"
diff --git a/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.cc b/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.cc
index f123f9e..0f6dc16 100644
--- a/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.cc
+++ b/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.cc
@@ -30,7 +30,7 @@
   BrowserList::RemoveObserver(this);
 #endif
 
-  SigninManagerFactory* factory = SigninManagerFactory::GetInstance();
+  auto* factory = IdentityManagerFactory::GetInstance();
   if (factory)
     factory->RemoveObserver(this);
 }
@@ -43,7 +43,7 @@
   BrowserList::AddObserver(this);
 #endif
 
-  SigninManagerFactory* factory = SigninManagerFactory::GetInstance();
+  auto* factory = IdentityManagerFactory::GetInstance();
   if (factory)
     factory->AddObserver(this);
 }
@@ -73,17 +73,17 @@
   return accounts_status;
 }
 
-std::vector<SigninManager*>
-ChromeSigninStatusMetricsProviderDelegate::GetSigninManagersForAllAccounts() {
+std::vector<identity::IdentityManager*>
+ChromeSigninStatusMetricsProviderDelegate::GetIdentityManagersForAllAccounts() {
   ProfileManager* profile_manager = g_browser_process->profile_manager();
   std::vector<Profile*> profiles = profile_manager->GetLoadedProfiles();
 
-  std::vector<SigninManager*> managers;
+  std::vector<identity::IdentityManager*> managers;
   for (Profile* profile : profiles) {
-    SigninManager* manager =
-        SigninManagerFactory::GetForProfileIfExists(profile);
-    if (manager)
-      managers.push_back(manager);
+    auto* identity_manager =
+        IdentityManagerFactory::GetForProfileIfExists(profile);
+    if (identity_manager)
+      managers.push_back(identity_manager);
   }
 
   return managers;
@@ -102,14 +102,14 @@
   UpdateStatusWhenBrowserAdded(signed_in);
 }
 
-void ChromeSigninStatusMetricsProviderDelegate::SigninManagerCreated(
-    SigninManagerBase* manager) {
-  owner()->OnSigninManagerCreated(manager);
+void ChromeSigninStatusMetricsProviderDelegate::IdentityManagerCreated(
+    identity::IdentityManager* identity_manager) {
+  owner()->OnIdentityManagerCreated(identity_manager);
 }
 
-void ChromeSigninStatusMetricsProviderDelegate::SigninManagerShutdown(
-    SigninManagerBase* manager) {
-  owner()->OnSigninManagerShutdown(manager);
+void ChromeSigninStatusMetricsProviderDelegate::IdentityManagerShutdown(
+    identity::IdentityManager* identity_manager) {
+  owner()->OnIdentityManagerShutdown(identity_manager);
 }
 
 void ChromeSigninStatusMetricsProviderDelegate::UpdateStatusWhenBrowserAdded(
diff --git a/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.h b/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.h
index ca9985e..2ebec71 100644
--- a/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.h
+++ b/chrome/browser/signin/chrome_signin_status_metrics_provider_delegate.h
@@ -5,16 +5,18 @@
 #ifndef CHROME_BROWSER_SIGNIN_CHROME_SIGNIN_STATUS_METRICS_PROVIDER_DELEGATE_H_
 #define CHROME_BROWSER_SIGNIN_CHROME_SIGNIN_STATUS_METRICS_PROVIDER_DELEGATE_H_
 
+#include <vector>
+
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/ui/browser_list_observer.h"
 #include "components/signin/core/browser/signin_status_metrics_provider_delegate.h"
 
 class ChromeSigninStatusMetricsProviderDelegate
     : public SigninStatusMetricsProviderDelegate,
       public BrowserListObserver,
-      public SigninManagerFactory::Observer {
+      public IdentityManagerFactory::Observer {
  public:
   ChromeSigninStatusMetricsProviderDelegate();
   ~ChromeSigninStatusMetricsProviderDelegate() override;
@@ -26,14 +28,17 @@
   // SigninStatusMetricsProviderDelegate:
   void Initialize() override;
   AccountsStatus GetStatusOfAllAccounts() override;
-  std::vector<SigninManager*> GetSigninManagersForAllAccounts() override;
+  std::vector<identity::IdentityManager*> GetIdentityManagersForAllAccounts()
+      override;
 
   // BrowserListObserver:
   void OnBrowserAdded(Browser* browser) override;
 
-  // SigninManagerFactoryObserver:
-  void SigninManagerCreated(SigninManagerBase* manager) override;
-  void SigninManagerShutdown(SigninManagerBase* manager) override;
+  // IdentityManagerFactoryObserver:
+  void IdentityManagerCreated(
+      identity::IdentityManager* identity_manager) override;
+  void IdentityManagerShutdown(
+      identity::IdentityManager* identity_manager) override;
 
   // Updates the sign-in status right after a new browser is opened.
   void UpdateStatusWhenBrowserAdded(bool signed_in);
diff --git a/chrome/browser/signin/dice_response_handler.cc b/chrome/browser/signin/dice_response_handler.cc
index dde6ec7..08aef0c4 100644
--- a/chrome/browser/signin/dice_response_handler.cc
+++ b/chrome/browser/signin/dice_response_handler.cc
@@ -10,6 +10,7 @@
 #include "base/logging.h"
 #include "base/memory/singleton.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/signin/dice_response_handler_unittest.cc b/chrome/browser/signin/dice_response_handler_unittest.cc
index 1e106139..970555f 100644
--- a/chrome/browser/signin/dice_response_handler_unittest.cc
+++ b/chrome/browser/signin/dice_response_handler_unittest.cc
@@ -21,6 +21,7 @@
 #include "components/signin/core/browser/account_reconcilor.h"
 #include "components/signin/core/browser/account_tracker_service.h"
 #include "components/signin/core/browser/dice_account_reconcilor_delegate.h"
+#include "components/signin/core/browser/fake_account_fetcher_service.h"
 #include "components/signin/core/browser/fake_gaia_cookie_manager_service.h"
 #include "components/signin/core/browser/fake_signin_manager.h"
 #include "components/signin/core/browser/mutable_profile_oauth2_token_service_delegate.h"
@@ -104,6 +105,7 @@
                         nullptr),
         cookie_service_(&token_service_, &signin_client_),
         identity_test_env_(&account_tracker_service_,
+                           &account_fetcher_service_,
                            &token_service_,
                            &signin_manager_,
                            &cookie_service_),
@@ -121,8 +123,13 @@
     EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
     AboutSigninInternals::RegisterPrefs(pref_service_.registry());
     AccountTrackerService::RegisterPrefs(pref_service_.registry());
+    AccountFetcherService::RegisterPrefs(pref_service_.registry());
     ProfileOAuth2TokenService::RegisterProfilePrefs(pref_service_.registry());
     SigninManager::RegisterProfilePrefs(pref_service_.registry());
+    account_tracker_service_.Initialize(&pref_service_, base::FilePath());
+    account_fetcher_service_.Initialize(&signin_client_, &token_service_,
+                                        &account_tracker_service_,
+                                        std::make_unique<TestImageDecoder>());
     auto account_reconcilor_delegate =
         std::make_unique<signin::DiceAccountReconcilorDelegate>(
             &signin_client_, signin::AccountConsistencyMethod::kDiceMigration);
@@ -130,7 +137,6 @@
         identity_test_env_.identity_manager(), &signin_client_, nullptr,
         std::move(account_reconcilor_delegate));
     about_signin_internals_.Initialize(&signin_client_);
-    account_tracker_service_.Initialize(&pref_service_, base::FilePath());
     account_reconcilor_->AddObserver(this);
   }
 
@@ -141,6 +147,7 @@
     cookie_service_.Shutdown();
     signin_error_controller_.Shutdown();
     signin_manager_.Shutdown();
+    account_fetcher_service_.Shutdown();
     account_tracker_service_.Shutdown();
     token_service_.Shutdown();
     signin_client_.Shutdown();
@@ -200,6 +207,7 @@
   DiceTestSigninClient signin_client_;
   FakeProfileOAuth2TokenService token_service_;
   AccountTrackerService account_tracker_service_;
+  FakeAccountFetcherService account_fetcher_service_;
   FakeSigninManager signin_manager_;
   GaiaCookieManagerService cookie_service_;
   identity::IdentityTestEnvironment identity_test_env_;
diff --git a/chrome/browser/signin/identity_test_environment_profile_adaptor.cc b/chrome/browser/signin/identity_test_environment_profile_adaptor.cc
index 4c529b9..fed033d 100644
--- a/chrome/browser/signin/identity_test_environment_profile_adaptor.cc
+++ b/chrome/browser/signin/identity_test_environment_profile_adaptor.cc
@@ -5,7 +5,9 @@
 #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h"
 
 #include "base/bind.h"
+#include "chrome/browser/signin/account_fetcher_service_factory.h"
 #include "chrome/browser/signin/account_tracker_service_factory.h"
+#include "chrome/browser/signin/chrome_signin_client_factory.h"
 #include "chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h"
 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
 #include "chrome/browser/signin/fake_signin_manager_builder.h"
@@ -14,6 +16,21 @@
 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
 #include "chrome/browser/signin/signin_manager_factory.h"
 
+namespace {
+// Testing factory that creates a FakeAccountFetcherService.
+std::unique_ptr<KeyedService> BuildFakeAccountFetcherService(
+    content::BrowserContext* context) {
+  Profile* profile = Profile::FromBrowserContext(context);
+  auto account_fetcher_service = std::make_unique<FakeAccountFetcherService>();
+  account_fetcher_service->Initialize(
+      ChromeSigninClientFactory::GetForProfile(profile),
+      ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
+      AccountTrackerServiceFactory::GetForProfile(profile),
+      std::make_unique<TestImageDecoder>());
+  return account_fetcher_service;
+}
+}  // namespace
+
 // static
 std::unique_ptr<TestingProfile> IdentityTestEnvironmentProfileAdaptor::
     CreateProfileForIdentityTestEnvironment() {
@@ -68,7 +85,9 @@
 // static
 TestingProfile::TestingFactories
 IdentityTestEnvironmentProfileAdaptor::GetIdentityTestEnvironmentFactories() {
-  return {{ProfileOAuth2TokenServiceFactory::GetInstance(),
+  return {{AccountFetcherServiceFactory::GetInstance(),
+           base::BindRepeating(&BuildFakeAccountFetcherService)},
+          {ProfileOAuth2TokenServiceFactory::GetInstance(),
            base::BindRepeating(&BuildFakeProfileOAuth2TokenService)},
           {SigninManagerFactory::GetInstance(),
            base::BindRepeating(&BuildFakeSigninManagerForTesting)}};
@@ -93,6 +112,8 @@
     Profile* profile)
     : identity_test_env_(
           AccountTrackerServiceFactory::GetForProfile(profile),
+          static_cast<FakeAccountFetcherService*>(
+              AccountFetcherServiceFactory::GetForProfile(profile)),
           static_cast<FakeProfileOAuth2TokenService*>(
               ProfileOAuth2TokenServiceFactory::GetForProfile(profile)),
 #if defined(OS_CHROMEOS)
diff --git a/chrome/browser/site_per_process_interactive_browsertest.cc b/chrome/browser/site_per_process_interactive_browsertest.cc
index a673af0..59a5601 100644
--- a/chrome/browser/site_per_process_interactive_browsertest.cc
+++ b/chrome/browser/site_per_process_interactive_browsertest.cc
@@ -5,6 +5,7 @@
 #include "base/command_line.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_timeouts.h"
 #include "build/build_config.h"
diff --git a/chrome/browser/ssl/cert_report_helper.cc b/chrome/browser/ssl/cert_report_helper.cc
index bd9d0447..aee221b 100644
--- a/chrome/browser/ssl/cert_report_helper.cc
+++ b/chrome/browser/ssl/cert_report_helper.cc
@@ -16,7 +16,6 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ssl/ssl_cert_reporter.h"
-#include "chrome/browser/unified_consent/unified_consent_service_factory.h"
 #include "chrome/common/channel_info.h"
 #include "chrome/common/pref_names.h"
 #include "components/prefs/pref_service.h"
@@ -24,7 +23,6 @@
 #include "components/security_interstitials/core/controller_client.h"
 #include "components/security_interstitials/core/metrics_helper.h"
 #include "components/strings/grit/components_strings.h"
-#include "components/unified_consent/unified_consent_service.h"
 #include "components/variations/variations_associated_data.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/web_contents.h"
@@ -141,6 +139,9 @@
 }
 
 void CertReportHelper::FinishCertCollection() {
+  if (!ShouldShowCertificateReporterCheckbox())
+    return;
+
   if (!safe_browsing::IsExtendedReportingEnabled(
           *GetProfile(web_contents_)->GetPrefs()))
     return;
@@ -183,13 +184,11 @@
 }
 
 bool CertReportHelper::ShouldShowCertificateReporterCheckbox() {
-  // Only show the checkbox or send reports iff the user is part of the
-  // respective Finch group and the window is not incognito and the feature is
-  // not disabled by policy.
+  // Only show the checkbox iff the user is part of the respective Finch group
+  // and the window is not incognito and the feature is not disabled by policy.
   const bool in_incognito =
       web_contents_->GetBrowserContext()->IsOffTheRecord();
-  Profile* profile = GetProfile(web_contents_);
-  const PrefService* pref_service = profile->GetPrefs();
+  const PrefService* pref_service = GetProfile(web_contents_)->GetPrefs();
   bool can_show_checkbox =
       safe_browsing::IsExtendedReportingOptInAllowed(*pref_service) &&
       !safe_browsing::IsExtendedReportingPolicyManaged(*pref_service);
@@ -200,8 +199,7 @@
 }
 
 bool CertReportHelper::ShouldReportCertificateError() {
-  if (!ShouldShowCertificateReporterCheckbox())
-    return false;
+  DCHECK(ShouldShowCertificateReporterCheckbox());
 
   bool is_official_build = g_is_fake_official_build_for_cert_report_testing;
 #if defined(OFFICIAL_BUILD) && defined(GOOGLE_CHROME_BUILD)
diff --git a/chrome/browser/ssl/cert_report_helper.h b/chrome/browser/ssl/cert_report_helper.h
index 0e9577d..f609a4f 100644
--- a/chrome/browser/ssl/cert_report_helper.h
+++ b/chrome/browser/ssl/cert_report_helper.h
@@ -79,15 +79,12 @@
   void FinishCertCollection();
 
  private:
-  // Returns false if we shouldn't show the checkbox nor send reports. Holds
-  // checks that are common to showing the checbox and reporting (Incognito
-  // mode, policy, and whether the user is in the correct Finch group).
+  // Checks whether a checkbox should be shown on the page that allows
+  // the user to opt in to Safe Browsing extended reporting.
   bool ShouldShowCertificateReporterCheckbox();
 
   // Returns true if a certificate report should be sent for the SSL
-  // error for this page. There are cases (e.g., certain variations
-  // configurations) where the checkbox will be shown but reports will not be
-  // sent.
+  // error for this page.
   bool ShouldReportCertificateError();
 
   // Handles reports of invalid SSL certificates.
diff --git a/chrome/browser/subresource_filter/subresource_filter_popup_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_popup_browsertest.cc
index 9608429..91fc10c 100644
--- a/chrome/browser/subresource_filter/subresource_filter_popup_browsertest.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_popup_browsertest.cc
@@ -8,6 +8,7 @@
 
 #include "base/lazy_instance.h"
 #include "base/logging.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
diff --git a/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc b/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc
index cc8db80..e00a7cb 100644
--- a/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc
+++ b/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc
@@ -17,7 +17,7 @@
 #include "net/base/load_flags.h"
 #include "net/http/http_status_code.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
-#include "services/identity/public/cpp/identity_manager.h"
+#include "services/identity/public/cpp/primary_account_access_token_fetcher.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/cpp/simple_url_loader.h"
@@ -90,11 +90,7 @@
       url_loader_factory_(std::move(url_loader_factory)),
       access_token_expired_(false) {}
 
-FamilyInfoFetcher::~FamilyInfoFetcher() {
-  // Ensures IdentityManager observation is cleared when FamilyInfoFetcher is
-  // destructed before refresh token is available.
-  identity_manager_->RemoveObserver(this);
-}
+FamilyInfoFetcher::~FamilyInfoFetcher() {}
 
 // static
 std::string FamilyInfoFetcher::RoleToString(FamilyMemberRole role) {
@@ -116,56 +112,25 @@
 
 void FamilyInfoFetcher::StartGetFamilyProfile() {
   request_path_ = kGetFamilyProfileApiPath;
-  StartFetching();
+  StartFetchingAccessToken();
 }
 
 void FamilyInfoFetcher::StartGetFamilyMembers() {
   request_path_ = kGetFamilyMembersApiPath;
-  StartFetching();
-}
-
-void FamilyInfoFetcher::StartFetching() {
-  if (identity_manager_->HasAccountWithRefreshToken(primary_account_id_)) {
-    StartFetchingAccessToken();
-  } else {
-    // Wait until we get a refresh token.
-    identity_manager_->AddObserver(this);
-  }
-}
-
-void FamilyInfoFetcher::StartFetchingAccessToken() {
-  OAuth2TokenService::ScopeSet scopes;
-  scopes.insert(kScope);
-  access_token_fetcher_ = identity_manager_->CreateAccessTokenFetcherForAccount(
-      primary_account_id_, "family_info_fetcher", scopes,
-      base::BindOnce(&FamilyInfoFetcher::OnAccessTokenFetchCompleteForAccount,
-                     base::Unretained(this), primary_account_id_),
-      identity::AccessTokenFetcher::Mode::kImmediate);
-}
-
-void FamilyInfoFetcher::OnRefreshTokenUpdatedForAccount(
-    const AccountInfo& account_info) {
-  // Wait until we get a refresh token for the requested account.
-  if (account_info.account_id != primary_account_id_)
-    return;
-
-  identity_manager_->RemoveObserver(this);
-
   StartFetchingAccessToken();
 }
 
-void FamilyInfoFetcher::OnRefreshTokensLoaded() {
-  identity_manager_->RemoveObserver(this);
-
-  // The PO2TS has loaded all tokens, but we didn't get one for the account we
-  // want. We probably won't get one any time soon, so report an error.
-  DLOG(WARNING) << "Did not get a refresh token for account "
-                << primary_account_id_;
-  consumer_->OnFailure(TOKEN_ERROR);
+void FamilyInfoFetcher::StartFetchingAccessToken() {
+  OAuth2TokenService::ScopeSet scopes{kScope};
+  access_token_fetcher_ = std::make_unique<
+      identity::PrimaryAccountAccessTokenFetcher>(
+      "family_info_fetcher", identity_manager_, scopes,
+      base::BindOnce(&FamilyInfoFetcher::OnAccessTokenFetchComplete,
+                     base::Unretained(this)),
+      identity::PrimaryAccountAccessTokenFetcher::Mode::kWaitUntilAvailable);
 }
 
-void FamilyInfoFetcher::OnAccessTokenFetchCompleteForAccount(
-    std::string account_id,
+void FamilyInfoFetcher::OnAccessTokenFetchComplete(
     GoogleServiceAuthError error,
     identity::AccessTokenInfo access_token_info) {
   access_token_fetcher_.reset();
@@ -253,7 +218,7 @@
     scopes.insert(kScope);
     identity_manager_->RemoveAccessTokenFromCache(primary_account_id_, scopes,
                                                   access_token_);
-    StartFetching();
+    StartFetchingAccessToken();
     return;
   }
 
diff --git a/chrome/browser/supervised_user/child_accounts/family_info_fetcher.h b/chrome/browser/supervised_user/child_accounts/family_info_fetcher.h
index 5b96fc2b..d79fd2a 100644
--- a/chrome/browser/supervised_user/child_accounts/family_info_fetcher.h
+++ b/chrome/browser/supervised_user/child_accounts/family_info_fetcher.h
@@ -20,7 +20,7 @@
 }
 
 namespace identity {
-class AccessTokenFetcher;
+class PrimaryAccountAccessTokenFetcher;
 }
 
 namespace network {
@@ -31,7 +31,7 @@
 // Fetches information about the family of the signed-in user. It can get
 // information about the family itself (e.g. a name), as well as a list of
 // family members and their properties.
-class FamilyInfoFetcher : public identity::IdentityManager::Observer {
+class FamilyInfoFetcher {
  public:
   enum ErrorCode {
     TOKEN_ERROR,    // Failed to get OAuth2 token.
@@ -86,7 +86,7 @@
       Consumer* consumer,
       identity::IdentityManager* identity_manager,
       scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
-  ~FamilyInfoFetcher() override;
+  ~FamilyInfoFetcher();
 
   // Public so tests can use them.
   static std::string RoleToString(FamilyMemberRole role);
@@ -103,15 +103,8 @@
                                       const std::string& response_body);
 
  private:
-  // IdentityManager::Observer implementation:
-  void OnRefreshTokenUpdatedForAccount(
-      const AccountInfo& account_info) override;
-  void OnRefreshTokensLoaded() override;
-
-  void OnAccessTokenFetchCompleteForAccount(
-      std::string account_id,
-      GoogleServiceAuthError error,
-      identity::AccessTokenInfo access_token_info);
+  void OnAccessTokenFetchComplete(GoogleServiceAuthError error,
+                                  identity::AccessTokenInfo access_token_info);
 
   void OnSimpleLoaderComplete(std::unique_ptr<std::string> response_body);
 
@@ -122,7 +115,6 @@
   static void ParseProfile(const base::DictionaryValue* dict,
                            FamilyMember* member);
 
-  void StartFetching();
   void StartFetchingAccessToken();
   void FamilyProfileFetched(const std::string& response);
   void FamilyMembersFetched(const std::string& response);
@@ -133,7 +125,8 @@
   scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
 
   std::string request_path_;
-  std::unique_ptr<identity::AccessTokenFetcher> access_token_fetcher_;
+  std::unique_ptr<identity::PrimaryAccountAccessTokenFetcher>
+      access_token_fetcher_;
   std::string access_token_;
   bool access_token_expired_;
   std::unique_ptr<network::SimpleURLLoader> simple_url_loader_;
diff --git a/chrome/browser/supervised_user/child_accounts/family_info_fetcher_unittest.cc b/chrome/browser/supervised_user/child_accounts/family_info_fetcher_unittest.cc
index 6b53167..154bc48 100644
--- a/chrome/browser/supervised_user/child_accounts/family_info_fetcher_unittest.cc
+++ b/chrome/browser/supervised_user/child_accounts/family_info_fetcher_unittest.cc
@@ -288,11 +288,6 @@
   EXPECT_CALL(access_token_requested, Run()).Times(0);
   identity_test_env_.SetCallbackForNextAccessTokenRequest(
       access_token_requested.Get());
-
-  // After all refresh tokens have been loaded, there is still no token for our
-  // user, so we expect a token error.
-  EXPECT_CALL(*this, OnFailure(FamilyInfoFetcher::TOKEN_ERROR));
-  identity_test_env_.ReloadAccountsFromDisk();
 }
 
 TEST_F(FamilyInfoFetcherTest, GetTokenFailure) {
diff --git a/chrome/browser/sync/sync_ui_util.cc b/chrome/browser/sync/sync_ui_util.cc
index 72f9c79..4ab0fda 100644
--- a/chrome/browser/sync/sync_ui_util.cc
+++ b/chrome/browser/sync/sync_ui_util.cc
@@ -33,7 +33,6 @@
 // and can connect to the sync server. If the user hasn't yet authenticated, an
 // empty string is returned.
 base::string16 GetSyncedStateStatusLabel(const syncer::SyncService* service,
-                                         StatusLabelStyle style,
                                          bool sync_everything) {
   if (!service || service->HasDisableReason(
                       syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY)) {
@@ -50,20 +49,9 @@
     return base::string16();
   }
 
-  // Message may also carry additional advice with an HTML link, if acceptable.
-  switch (style) {
-    case PLAIN_TEXT:
-      return l10n_util::GetStringUTF16(
-          sync_everything ? IDS_SYNC_ACCOUNT_SYNCING
-                          : IDS_SYNC_ACCOUNT_SYNCING_CUSTOM_DATA_TYPES);
-    case WITH_HTML:
-      return l10n_util::GetStringFUTF16(
-          IDS_SYNC_ACCOUNT_SYNCING_WITH_MANAGE_LINK,
-          base::ASCIIToUTF16(chrome::kSyncGoogleDashboardURL));
-    default:
-      NOTREACHED();
-      return nullptr;
-  }
+  return l10n_util::GetStringUTF16(
+      sync_everything ? IDS_SYNC_ACCOUNT_SYNCING
+                      : IDS_SYNC_ACCOUNT_SYNCING_CUSTOM_DATA_TYPES);
 }
 
 void GetStatusForActionableError(const syncer::SyncProtocolError& error,
@@ -163,7 +151,6 @@
 MessageType GetStatusInfo(Profile* profile,
                           const syncer::SyncService* service,
                           identity::IdentityManager* identity_manager,
-                          StatusLabelStyle style,
                           base::string16* status_label,
                           base::string16* link_label,
                           ActionType* action_type) {
@@ -249,7 +236,7 @@
           status.sync_protocol_error.error_type == syncer::NOT_MY_BIRTHDAY) {
         if (status_label) {
           status_label->assign(
-              GetSyncedStateStatusLabel(service, style, sync_everything));
+              GetSyncedStateStatusLabel(service, sync_everything));
         }
         return PRE_SYNCED;
       }
@@ -257,8 +244,7 @@
 
     // There is no error. Display "Last synced..." message.
     if (status_label) {
-      status_label->assign(
-          GetSyncedStateStatusLabel(service, style, sync_everything));
+      status_label->assign(GetSyncedStateStatusLabel(service, sync_everything));
     }
     return SYNCED;
   } else {
@@ -326,8 +312,8 @@
                             ActionType* action_type) {
   DCHECK(status_label);
   DCHECK(link_label);
-  return GetStatusInfo(profile, service, identity_manager, PLAIN_TEXT,
-                       status_label, link_label, action_type);
+  return GetStatusInfo(profile, service, identity_manager, status_label,
+                       link_label, action_type);
 }
 
 #if !defined(OS_CHROMEOS)
@@ -418,8 +404,8 @@
                       const syncer::SyncService* service,
                       identity::IdentityManager* identity_manager) {
   ActionType action_type = NO_ACTION;
-  return GetStatusInfo(profile, service, identity_manager, WITH_HTML, nullptr,
-                       nullptr, &action_type);
+  return GetStatusInfo(profile, service, identity_manager, nullptr, nullptr,
+                       &action_type);
 }
 
 bool ShouldRequestSyncConfirmation(const syncer::SyncService* service) {
diff --git a/chrome/browser/sync/sync_ui_util.h b/chrome/browser/sync/sync_ui_util.h
index cbbc5a7d2..12a492a4 100644
--- a/chrome/browser/sync/sync_ui_util.h
+++ b/chrome/browser/sync/sync_ui_util.h
@@ -38,11 +38,6 @@
   CONFIRM_SYNC_SETTINGS,  // User needs to confirm sync settings.
 };
 
-enum StatusLabelStyle {
-  PLAIN_TEXT,  // Label will be plain-text only.
-  WITH_HTML    // Label may contain an HTML-formatted link.
-};
-
 // Sync errors that should be exposed to the user through the avatar button.
 enum AvatarSyncErrorType {
   NO_SYNC_ERROR,                     // No sync error.
diff --git a/chrome/browser/ui/app_list/app_context_menu_unittest.cc b/chrome/browser/ui/app_list/app_context_menu_unittest.cc
index 6357970..bf14261 100644
--- a/chrome/browser/ui/app_list/app_context_menu_unittest.cc
+++ b/chrome/browser/ui/app_list/app_context_menu_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/bind.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind_test_util.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/chrome/browser/ui/app_list/arc/arc_app_utils.cc b/chrome/browser/ui/app_list/arc/arc_app_utils.cc
index 1c75372..21e65f78 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_utils.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_utils.cc
@@ -13,6 +13,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/values.h"
 #include "chrome/browser/browser_process.h"
diff --git a/chrome/browser/ui/app_list/search/answer_card/answer_card_search_provider_unittest.cc b/chrome/browser/ui/app_list/search/answer_card/answer_card_search_provider_unittest.cc
index 17de127..6019159 100644
--- a/chrome/browser/ui/app_list/search/answer_card/answer_card_search_provider_unittest.cc
+++ b/chrome/browser/ui/app_list/search/answer_card/answer_card_search_provider_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/macros.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/field_trial_params.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
diff --git a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider_unittest.cc b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider_unittest.cc
index 3633712..2a90eda 100644
--- a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider_unittest.cc
+++ b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider_unittest.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/chromeos/arc/icon_decode_request.h"
 #include "chrome/browser/ui/app_list/app_list_test_util.h"
diff --git a/chrome/browser/ui/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc b/chrome/browser/ui/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc
index 38047649..9af600e9 100644
--- a/chrome/browser/ui/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc
+++ b/chrome/browser/ui/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/chromeos/arc/icon_decode_request.h"
 #include "chrome/browser/ui/app_list/app_list_test_util.h"
diff --git a/chrome/browser/ui/app_list/search/arc/arc_playstore_search_provider_unittest.cc b/chrome/browser/ui/app_list/search/arc/arc_playstore_search_provider_unittest.cc
index af187c7..867c80a9 100644
--- a/chrome/browser/ui/app_list/search/arc/arc_playstore_search_provider_unittest.cc
+++ b/chrome/browser/ui/app_list/search/arc/arc_playstore_search_provider_unittest.cc
@@ -9,6 +9,7 @@
 #include <utility>
 
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/chromeos/arc/icon_decode_request.h"
 #include "chrome/browser/extensions/extension_service.h"
diff --git a/chrome/browser/ui/app_list/search/tests/app_search_provider_unittest.cc b/chrome/browser/ui/app_list/search/tests/app_search_provider_unittest.cc
index 2adca0f..d1ff28461 100644
--- a/chrome/browser/ui/app_list/search/tests/app_search_provider_unittest.cc
+++ b/chrome/browser/ui/app_list/search/tests/app_search_provider_unittest.cc
@@ -14,6 +14,7 @@
 #include "ash/public/cpp/app_list/app_list_features.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
diff --git a/chrome/browser/ui/content_settings/framebust_block_browsertest.cc b/chrome/browser/ui/content_settings/framebust_block_browsertest.cc
index 73aa9022..82a67686 100644
--- a/chrome/browser/ui/content_settings/framebust_block_browsertest.cc
+++ b/chrome/browser/ui/content_settings/framebust_block_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/optional.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
diff --git a/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc b/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
index a4521d4..450173b 100644
--- a/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
+++ b/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind_helpers.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/extensions/extension_service.h"
diff --git a/chrome/browser/ui/libgtkui/native_theme_gtk.cc b/chrome/browser/ui/libgtkui/native_theme_gtk.cc
index 4e6196d..504a0685 100644
--- a/chrome/browser/ui/libgtkui/native_theme_gtk.cc
+++ b/chrome/browser/ui/libgtkui/native_theme_gtk.cc
@@ -126,7 +126,6 @@
     case ui::NativeTheme::kColorId_HighlightedMenuItemForegroundColor:
     case ui::NativeTheme::kColorId_FocusedHighlightedMenuItemBackgroundColor:
     case ui::NativeTheme::kColorId_MenuItemAlertBackgroundColor:
-    case ui::NativeTheme::kColorId_DefaultIconColor:
       return ui::NativeTheme::GetInstanceForNativeUi()->GetSystemColor(
           color_id);
 
@@ -322,6 +321,11 @@
       return fallback_theme->GetSystemColor(color_id);
     }
 
+    case ui::NativeTheme::kColorId_DefaultIconColor:
+      if (GtkVersionCheck(3, 20))
+        return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem #radio");
+      return GetFgColor("GtkMenu#menu GtkMenuItem#menuitem.radio");
+
     case ui::NativeTheme::kColorId_NumColors:
       NOTREACHED();
       break;
diff --git a/chrome/browser/ui/page_info/page_info.cc b/chrome/browser/ui/page_info/page_info.cc
index 5c09e8c..c46a986 100644
--- a/chrome/browser/ui/page_info/page_info.cc
+++ b/chrome/browser/ui/page_info/page_info.cc
@@ -301,6 +301,7 @@
 const PageInfo::ChooserUIInfo kChooserUIInfo[] = {
     {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext,
      IDS_PAGE_INFO_USB_DEVICE_LABEL, IDS_PAGE_INFO_USB_DEVICE_SECONDARY_LABEL,
+     IDS_PAGE_INFO_USB_DEVICE_ALLOWED_BY_POLICY_LABEL,
      IDS_PAGE_INFO_DELETE_USB_DEVICE, "name"},
 };
 
@@ -899,13 +900,6 @@
 
     auto chosen_objects = context->GetGrantedObjects(origin, origin);
     for (std::unique_ptr<ChooserContextBase::Object>& object : chosen_objects) {
-      // Ignore policy allowed devices until the UI is able to display them
-      // properly.
-      // TODO(https://crbug.com/854329): Remove this condition when the UI is
-      // capable of displaying policy chooser objects.
-      if (object->source == content_settings::SETTING_SOURCE_POLICY)
-        continue;
-
       chosen_object_info_list.push_back(
           std::make_unique<PageInfoUI::ChosenObjectInfo>(ui_info,
                                                          std::move(object)));
diff --git a/chrome/browser/ui/page_info/page_info.h b/chrome/browser/ui/page_info/page_info.h
index 69b09a1..4dfe8ee 100644
--- a/chrome/browser/ui/page_info/page_info.h
+++ b/chrome/browser/ui/page_info/page_info.h
@@ -5,6 +5,8 @@
 #ifndef CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_H_
 #define CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_H_
 
+#include <vector>
+
 #include "base/macros.h"
 #include "base/strings/string16.h"
 #include "build/build_config.h"
@@ -128,8 +130,9 @@
   struct ChooserUIInfo {
     ContentSettingsType content_settings_type;
     ChooserContextBase* (*get_context)(Profile*);
-    int label_string_id;
-    int secondary_label_string_id;
+    int name_string_id;
+    int description_string_id;
+    int allowed_by_policy_description_string_id;
     int delete_tooltip_string_id;
     const char* ui_name_key;
   };
diff --git a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
index 877a93b..87a4e7b5 100644
--- a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
+++ b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
@@ -11,6 +11,7 @@
 #include "base/bind_helpers.h"
 #include "base/run_loop.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
diff --git a/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc b/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
index 281041f..7739464 100644
--- a/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
@@ -8,6 +8,7 @@
 #include "base/command_line.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
diff --git a/chrome/browser/ui/views/frame/browser_view_unittest.cc b/chrome/browser/ui/views/frame/browser_view_unittest.cc
index b13a8ef..2e7f4f5 100644
--- a/chrome/browser/ui/views/frame/browser_view_unittest.cc
+++ b/chrome/browser/ui/views/frame/browser_view_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/ui/views/frame/browser_view.h"
 
 #include "base/macros.h"
+#include "base/strings/stringprintf.h"
 #include "build/build_config.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/ui/browser_commands.h"
diff --git a/chrome/browser/ui/views/page_info/chosen_object_view.cc b/chrome/browser/ui/views/page_info/chosen_object_view.cc
index c514bba..525614b 100644
--- a/chrome/browser/ui/views/page_info/chosen_object_view.cc
+++ b/chrome/browser/ui/views/page_info/chosen_object_view.cc
@@ -4,6 +4,9 @@
 
 #include "chrome/browser/ui/views/page_info/chosen_object_view.h"
 
+#include <memory>
+#include <utility>
+
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/chrome_typography.h"
 #include "chrome/browser/ui/views/page_info/chosen_object_view_observer.h"
@@ -64,14 +67,16 @@
   // Create the chosen object icon.
   icon_ = new views::ImageView();
   layout->AddView(icon_);
+
   // Create the label that displays the chosen object name.
   views::Label* label = new views::Label(
-      l10n_util::GetStringFUTF16(info_->ui_info.label_string_id,
+      l10n_util::GetStringFUTF16(info_->ui_info.name_string_id,
                                  PageInfoUI::ChosenObjectToUIString(*info_)),
       CONTEXT_BODY_TEXT_LARGE);
   icon_->SetImage(
       PageInfoUI::GetChosenObjectIcon(*info_, false, label->enabled_color()));
   layout->AddView(label);
+
   // Create the delete button.
   delete_button_ = views::CreateVectorImageButton(this);
   views::SetImageFromVectorIcon(
@@ -87,11 +92,38 @@
   // Display secondary text underneath the name of the chosen object to describe
   // what the chosen object actually is.
   layout->StartRow(1.0, column_set_id);
-  views::Label* secondary_label = new views::Label(
-      l10n_util::GetStringUTF16(info_->ui_info.secondary_label_string_id));
-  secondary_label->SetEnabledColor(PageInfoUI::GetSecondaryTextColor());
   layout->SkipColumns(1);
-  layout->AddView(secondary_label);
+
+  // Disable the delete button for policy controlled objects and display the
+  // allowed by policy string below for |secondary_label|.
+  views::Label* secondary_label = nullptr;
+  if (info_->chooser_object->source ==
+      content_settings::SettingSource::SETTING_SOURCE_POLICY) {
+    delete_button_->SetEnabled(false);
+    secondary_label = new views::Label(l10n_util::GetStringUTF16(
+        info_->ui_info.allowed_by_policy_description_string_id));
+  } else {
+    secondary_label = new views::Label(
+        l10n_util::GetStringUTF16(info_->ui_info.description_string_id));
+  }
+
+  secondary_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+  secondary_label->SetEnabledColor(PageInfoUI::GetSecondaryTextColor());
+  secondary_label->SetMultiLine(true);
+
+  // Long labels that cannot fit in the existing space under the permission
+  // label should be allowed to use up to |kMaxSecondaryLabelWidth| for display.
+  int preferred_width = secondary_label->GetPreferredSize().width();
+  constexpr int kMaxSecondaryLabelWidth = 140;
+  if (preferred_width > kMaxSecondaryLabelWidth) {
+    layout->AddView(secondary_label, /*col_span=*/1, /*row_span=*/1,
+                    views::GridLayout::LEADING, views::GridLayout::CENTER,
+                    kMaxSecondaryLabelWidth, /*pref_height=*/0);
+  } else {
+    layout->AddView(secondary_label, /*col_span=*/1, /*row_span=*/1,
+                    views::GridLayout::FILL, views::GridLayout::CENTER);
+  }
+
   layout->AddPaddingRow(column_set_id, list_item_padding);
 }
 
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc
index 1b2f4899..a75049a 100644
--- a/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc
+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/ui/views/page_info/page_info_bubble_view.h"
 
+#include "base/json/json_reader.h"
 #include "base/macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -17,6 +18,7 @@
 #include "chrome/browser/usb/usb_chooser_context_factory.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/pref_names.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/ssl_status.h"
 #include "content/public/test/test_browser_thread_bundle.h"
@@ -321,6 +323,152 @@
   EXPECT_FALSE(store->HasDevicePermission(origin, origin, *device_info));
 }
 
+namespace {
+
+constexpr char kPolicySetting[] = R"(
+    [
+      {
+        "devices": [{ "vendor_id": 6353, "product_id": 5678 }],
+        "urls": ["http://www.example.com"]
+      }
+    ])";
+
+}  // namespace
+
+// Test UI construction and reconstruction with policy USB devices.
+TEST_F(PageInfoBubbleViewTest, SetPermissionInfoWithPolicyUsbDevices) {
+  const int kExpectedChildren = 0;
+  EXPECT_EQ(kExpectedChildren, api_->permissions_view()->child_count());
+
+  const GURL origin = GURL(kUrl).GetOrigin();
+
+  // Add the policy setting to prefs.
+  Profile* profile = web_contents_helper_.profile();
+  profile->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                           *base::JSONReader::Read(kPolicySetting));
+  UsbChooserContext* store = UsbChooserContextFactory::GetForProfile(profile);
+
+  auto objects = store->GetGrantedObjects(origin, origin);
+  EXPECT_EQ(objects.size(), 1u);
+
+  PermissionInfoList list;
+  api_->SetPermissionInfo(list);
+  EXPECT_EQ(kExpectedChildren + 1, api_->permissions_view()->child_count());
+
+  ChosenObjectView* object_view = static_cast<ChosenObjectView*>(
+      api_->permissions_view()->child_at(kExpectedChildren));
+  EXPECT_EQ(4, object_view->child_count());
+
+  const int kLabelIndex = 1;
+  views::Label* label =
+      static_cast<views::Label*>(object_view->child_at(kLabelIndex));
+  EXPECT_EQ(base::ASCIIToUTF16("Unknown product 0x162E from Google Inc."),
+            label->text());
+
+  const int kButtonIndex = 2;
+  views::Button* button =
+      static_cast<views::Button*>(object_view->child_at(kButtonIndex));
+  EXPECT_EQ(button->state(), views::Button::STATE_DISABLED);
+
+  const int kDescIndex = 3;
+  views::Label* desc_label =
+      static_cast<views::Label*>(object_view->child_at(kDescIndex));
+  EXPECT_EQ(base::ASCIIToUTF16("USB device allowed by your administrator"),
+            desc_label->text());
+
+  // Policy granted USB permissions should not be able to be deleted.
+  const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
+                             ui::EventTimeForNow(), 0, 0);
+  views::ButtonListener* button_listener =
+      static_cast<views::ButtonListener*>(object_view);
+  button_listener->ButtonPressed(button, event);
+  api_->SetPermissionInfo(list);
+  EXPECT_EQ(kExpectedChildren + 1, api_->permissions_view()->child_count());
+}
+
+// Test UI construction and reconstruction with both user and policy USB
+// devices.
+TEST_F(PageInfoBubbleViewTest, SetPermissionInfoWithUserAndPolicyUsbDevices) {
+  const int kExpectedChildren = 0;
+  EXPECT_EQ(kExpectedChildren, api_->permissions_view()->child_count());
+
+  const GURL origin = GURL(kUrl).GetOrigin();
+
+  // Add the policy setting to prefs.
+  Profile* profile = web_contents_helper_.profile();
+  profile->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                           *base::JSONReader::Read(kPolicySetting));
+
+  // Connect the UsbChooserContext with FakeUsbDeviceManager.
+  device::FakeUsbDeviceManager usb_device_manager;
+  device::mojom::UsbDeviceManagerPtr device_manager_ptr;
+  usb_device_manager.AddBinding(mojo::MakeRequest(&device_manager_ptr));
+  UsbChooserContext* store = UsbChooserContextFactory::GetForProfile(profile);
+  store->SetDeviceManagerForTesting(std::move(device_manager_ptr));
+
+  auto device_info = usb_device_manager.CreateAndAddDevice(
+      0, 0, "Google", "Gizmo", "1234567890");
+  store->GrantDevicePermission(origin, origin, *device_info);
+
+  auto objects = store->GetGrantedObjects(origin, origin);
+  EXPECT_EQ(objects.size(), 2u);
+
+  PermissionInfoList list;
+  api_->SetPermissionInfo(list);
+  EXPECT_EQ(kExpectedChildren + 2, api_->permissions_view()->child_count());
+
+  // The first object is the user granted permission for the "Gizmo" device.
+  ChosenObjectView* object_view = static_cast<ChosenObjectView*>(
+      api_->permissions_view()->child_at(kExpectedChildren));
+  EXPECT_EQ(4, object_view->child_count());
+
+  const int kLabelIndex = 1;
+  views::Label* label =
+      static_cast<views::Label*>(object_view->child_at(kLabelIndex));
+  EXPECT_EQ(base::ASCIIToUTF16("Gizmo"), label->text());
+
+  const int kButtonIndex = 2;
+  views::Button* button =
+      static_cast<views::Button*>(object_view->child_at(kButtonIndex));
+  EXPECT_NE(button->state(), views::Button::STATE_DISABLED);
+
+  const int kDescIndex = 3;
+  views::Label* desc_label =
+      static_cast<views::Label*>(object_view->child_at(kDescIndex));
+  EXPECT_EQ(base::ASCIIToUTF16("USB device"), desc_label->text());
+
+  const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
+                             ui::EventTimeForNow(), 0, 0);
+  views::ButtonListener* button_listener =
+      static_cast<views::ButtonListener*>(object_view);
+  button_listener->ButtonPressed(button, event);
+  api_->SetPermissionInfo(list);
+  EXPECT_EQ(kExpectedChildren + 1, api_->permissions_view()->child_count());
+  EXPECT_FALSE(store->HasDevicePermission(origin, origin, *device_info));
+
+  // The policy granted permission should now be the first child, since the user
+  // permission was deleted.
+  object_view = static_cast<ChosenObjectView*>(
+      api_->permissions_view()->child_at(kExpectedChildren));
+  EXPECT_EQ(4, object_view->child_count());
+
+  label = static_cast<views::Label*>(object_view->child_at(kLabelIndex));
+  EXPECT_EQ(base::ASCIIToUTF16("Unknown product 0x162E from Google Inc."),
+            label->text());
+
+  button = static_cast<views::Button*>(object_view->child_at(kButtonIndex));
+  EXPECT_EQ(button->state(), views::Button::STATE_DISABLED);
+
+  desc_label = static_cast<views::Label*>(object_view->child_at(kDescIndex));
+  EXPECT_EQ(base::ASCIIToUTF16("USB device allowed by your administrator"),
+            desc_label->text());
+
+  button_listener = static_cast<views::ButtonListener*>(object_view);
+  button_listener->ButtonPressed(button, event);
+  api_->SetPermissionInfo(list);
+  EXPECT_EQ(kExpectedChildren + 1, api_->permissions_view()->child_count());
+}
+
 TEST_F(PageInfoBubbleViewTest, SetPermissionInfoForUsbGuard) {
   // This test exercises PermissionSelectorRow in a way that it is not used in
   // practice. In practice, every setting in PermissionSelectorRow starts off
diff --git a/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc b/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc
index 46eac0b..922d77c 100644
--- a/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc
+++ b/chrome/browser/ui/views/sync/inline_login_ui_browsertest.cc
@@ -7,6 +7,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/discover/discover_browser_test.cc b/chrome/browser/ui/webui/chromeos/login/discover/discover_browser_test.cc
index 2efc63d..c4d5e68a 100644
--- a/chrome/browser/ui/webui/chromeos/login/discover/discover_browser_test.cc
+++ b/chrome/browser/ui/webui/chromeos/login/discover/discover_browser_test.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/ui/webui/chromeos/login/discover/discover_browser_test.h"
 
+#include "base/strings/stringprintf.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/webui/chromeos/login/discover/discover_ui.h"
diff --git a/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc b/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
index e08e6c0..60d291c 100644
--- a/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/extension_printer_handler.cc
@@ -13,6 +13,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/strings/string_split.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "chrome/browser/printing/pwg_raster_converter.h"
 #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
index a489f776..4566be07 100644
--- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
@@ -14,6 +14,7 @@
 #include "base/i18n/file_util_icu.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/values.h"
diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
index 759c07ed..9e9ca06 100644
--- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
@@ -15,6 +15,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/path_service.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/values.h"
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
index 5e01286..a6791dbe 100644
--- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -10,6 +10,7 @@
 #include "base/feature_list.h"
 #include "base/i18n/number_formatting.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "build/buildflag.h"
diff --git a/chrome/browser/usb/usb_chooser_context.cc b/chrome/browser/usb/usb_chooser_context.cc
index a4429ea9..c84f71fd 100644
--- a/chrome/browser/usb/usb_chooser_context.cc
+++ b/chrome/browser/usb/usb_chooser_context.cc
@@ -10,6 +10,7 @@
 #include "base/bind.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/stl_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/values.h"
@@ -237,6 +238,62 @@
     }
   }
 
+  // Iterate through the user granted objects and create a mapping of device IDs
+  // to device object if the object is also allowed by policy. Any objects that
+  // have been granted by policy are removed from |objects| to avoid duplicate
+  // permissions from being displayed.
+  // TODO(https://crbug.com/926984): This logic is very similar to the logic for
+  // GetAllGrantedObjects(), so it could potentially be centralized.
+  std::map<std::pair<int, int>, base::Value> device_ids_to_object_map;
+  for (auto it = objects.begin(); it != objects.end();) {
+    ChooserContextBase::Object& object = **it;
+    auto device_ids = GetDeviceIds(object.value);
+
+    if (usb_policy_allowed_devices_->IsDeviceAllowed(
+            requesting_origin, embedding_origin, device_ids)) {
+      device_ids_to_object_map[device_ids] = std::move(object.value);
+      it = objects.erase(it);
+    } else {
+      ++it;
+    }
+  }
+
+  for (const auto& allowed_devices_entry : usb_policy_allowed_devices_->map()) {
+    // The map key is a tuple of (vendor_id, product_id).
+    const int vendor_id = allowed_devices_entry.first.first;
+    const int product_id = allowed_devices_entry.first.second;
+
+    for (const auto& url_pair : allowed_devices_entry.second) {
+      // Skip entries that do not match the |requesting_origin|.
+      if (url_pair.first.GetOrigin() != requesting_origin.GetOrigin())
+        continue;
+
+      // Skip entries that have a non-empty embedding origin that does not match
+      // the given |embedding_origin|.
+      if (!url_pair.second.is_empty() &&
+          url_pair.second.GetOrigin() != embedding_origin.GetOrigin()) {
+        continue;
+      }
+
+      // If there is an entry for the device in |device_ids_to_object_map|, use
+      // that object to represent the device. Otherwise, attempt to figure out
+      // the name of the device from the |vendor_id| and |product_id|.
+      std::unique_ptr<base::DictionaryValue> object;
+      auto it =
+          device_ids_to_object_map.find(std::make_pair(vendor_id, product_id));
+      if (it != device_ids_to_object_map.end()) {
+        object = base::DictionaryValue::From(
+            base::Value::ToUniquePtrValue(std::move(it->second)));
+      } else {
+        object = DeviceIdsToDictValue(vendor_id, product_id);
+      }
+
+      objects.push_back(std::make_unique<ChooserContextBase::Object>(
+          url_pair.first, url_pair.second, object.get(),
+          content_settings::SETTING_SOURCE_POLICY, is_incognito_));
+    }
+  }
+
   return objects;
 }
 
@@ -265,17 +322,18 @@
   // Iterate through the user granted objects to create a mapping of device IDs
   // to device object for the policy granted objects to use, and remove
   // objects that have already been granted permission by the policy.
+  // TODO(https://crbug.com/926984): This logic is very similar to the logic for
+  // GetGrantedObjects(), so it could potentially be centralized.
   std::map<std::pair<int, int>, base::Value> device_ids_to_object_map;
   for (auto it = objects.begin(); it != objects.end();) {
-    const Object& object = **it;
+    Object& object = **it;
     auto device_ids = GetDeviceIds(object.value);
     const GURL& requesting_origin = object.requesting_origin;
     const GURL& embedding_origin = object.embedding_origin;
 
-    device_ids_to_object_map[device_ids] = object.value.Clone();
-
     if (usb_policy_allowed_devices_->IsDeviceAllowed(
             requesting_origin, embedding_origin, device_ids)) {
+      device_ids_to_object_map[device_ids] = std::move(object.value);
       it = objects.erase(it);
     } else {
       ++it;
@@ -288,6 +346,9 @@
     const int product_id = allowed_devices_entry.first.second;
 
     for (const auto& url_pair : allowed_devices_entry.second) {
+      // If there is an entry for the device in |device_ids_to_object_map|, use
+      // that object to represent the device. Otherwise, attempt to figure out
+      // the name of the device from the |vendor_id| and |product_id|.
       std::unique_ptr<base::DictionaryValue> object;
       auto it =
           device_ids_to_object_map.find(std::make_pair(vendor_id, product_id));
diff --git a/chrome/browser/usb/usb_chooser_context_unittest.cc b/chrome/browser/usb/usb_chooser_context_unittest.cc
index 5139c651..27ea63c9 100644
--- a/chrome/browser/usb/usb_chooser_context_unittest.cc
+++ b/chrome/browser/usb/usb_chooser_context_unittest.cc
@@ -622,6 +622,155 @@
 
 }  // namespace
 
+TEST_F(UsbChooserContextTest, GetGrantedObjectsWithOnlyPolicyAllowedDevices) {
+  auto* store = GetChooserContext(profile());
+  profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                             *base::JSONReader::Read(kPolicySetting));
+
+  auto objects = store->GetGrantedObjects(kVendorOrigin, kVendorOrigin);
+  ASSERT_EQ(objects.size(), 1u);
+
+  ExpectChooserObjectInfo(objects[0].get(),
+                          /*requesting_origin=*/kVendorOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_POLICY,
+                          /*incognito=*/false,
+                          /*vendor_id=*/6353,
+                          /*product_id=*/kDeviceIdWildcard,
+                          /*name=*/"Devices from Google Inc.");
+}
+
+TEST_F(UsbChooserContextTest,
+       GetGrantedObjectsWithUserAndPolicyAllowedDevices) {
+  profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                             *base::JSONReader::Read(kPolicySetting));
+
+  UsbDeviceInfoPtr persistent_device_info =
+      device_manager_.CreateAndAddDevice(1000, 1, "Google", "Gizmo", "123ABC");
+  UsbDeviceInfoPtr ephemeral_device_info =
+      device_manager_.CreateAndAddDevice(1000, 2, "Google", "Gadget", "");
+
+  auto* store = GetChooserContext(profile());
+
+  store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
+                               *persistent_device_info);
+  store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
+                               *ephemeral_device_info);
+
+  auto objects = store->GetGrantedObjects(kVendorOrigin, kVendorOrigin);
+  ASSERT_EQ(objects.size(), 3u);
+
+  // The user granted permissions appear before the policy granted permissions.
+  // Within these user granted permissions, the persistent device permissions
+  // appear before ephemeral device permissions. The policy enforced objects
+  // that are returned by GetGrantedObjects() are ordered by the tuple
+  // (vendor_id, product_id) representing the device IDs.  Wildcard IDs are
+  // represented by a value of -1, so they appear first.
+  ExpectChooserObjectInfo(objects[0].get(),
+                          /*requesting_origin=*/kVendorOrigin,
+                          /*embedding_origin=*/kVendorOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_USER,
+                          /*incognito=*/false,
+                          /*vendor_id=*/1000,
+                          /*product_id=*/1,
+                          /*name=*/"Gizmo");
+  ExpectChooserObjectInfo(objects[1].get(),
+                          /*requesting_origin=*/kVendorOrigin,
+                          /*embedding_origin=*/kVendorOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_USER,
+                          /*incognito=*/false,
+                          /*vendor_id=*/1000,
+                          /*product_id=*/2,
+                          /*name=*/"Gadget");
+  ExpectChooserObjectInfo(objects[2].get(),
+                          /*requesting_origin=*/kVendorOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_POLICY,
+                          /*incognito=*/false,
+                          /*vendor_id=*/6353,
+                          /*product_id=*/kDeviceIdWildcard,
+                          /*name=*/"Devices from Google Inc.");
+}
+
+TEST_F(UsbChooserContextTest,
+       GetGrantedObjectsWithUserGrantedDeviceAllowedBySpecificDevicePolicy) {
+  profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                             *base::JSONReader::Read(kPolicySetting));
+
+  UsbDeviceInfoPtr persistent_device_info = device_manager_.CreateAndAddDevice(
+      6353, 5678, "Google", "Gizmo", "123ABC");
+
+  auto* store = GetChooserContext(profile());
+
+  store->GrantDevicePermission(kProductVendorOrigin, kProductVendorOrigin,
+                               *persistent_device_info);
+
+  auto objects =
+      store->GetGrantedObjects(kProductVendorOrigin, kProductVendorOrigin);
+  ASSERT_EQ(objects.size(), 1u);
+
+  // User granted permissions for a device that is also granted by a specific
+  // device policy will be replaced by the policy permission. The object should
+  // still retain the name of the device.
+  ExpectChooserObjectInfo(objects[0].get(),
+                          /*requesting_origin=*/kProductVendorOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_POLICY,
+                          /*incognito=*/false,
+                          /*vendor_id=*/6353,
+                          /*product_id=*/5678,
+                          /*name=*/"Gizmo");
+}
+
+TEST_F(UsbChooserContextTest,
+       GetGrantedObjectsWithUserGrantedDeviceAllowedByVendorDevicePolicy) {
+  UsbDeviceInfoPtr persistent_device_info = device_manager_.CreateAndAddDevice(
+      6353, 1000, "Vendor", "Product", "123ABC");
+
+  auto* store = GetChooserContext(profile());
+  profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                             *base::JSONReader::Read(kPolicySetting));
+
+  store->GrantDevicePermission(kVendorOrigin, kVendorOrigin,
+                               *persistent_device_info);
+
+  auto objects = store->GetGrantedObjects(kVendorOrigin, kVendorOrigin);
+  ASSERT_EQ(objects.size(), 1u);
+
+  // User granted permissions for a device that is also granted by a vendor
+  // device policy will be replaced by the policy permission.
+  ExpectChooserObjectInfo(objects[0].get(),
+                          /*requesting_origin=*/kVendorOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_POLICY,
+                          /*incognito=*/false,
+                          /*vendor_id=*/6353,
+                          /*product_id=*/kDeviceIdWildcard,
+                          /*name=*/"Devices from Google Inc.");
+}
+
+TEST_F(UsbChooserContextTest,
+       GetGrantedObjectsWithUserGrantedDeviceAllowedByAnyVendorDevicePolicy) {
+  UsbDeviceInfoPtr persistent_device_info = device_manager_.CreateAndAddDevice(
+      1123, 5813, "Some", "Product", "123ABC");
+
+  auto* store = GetChooserContext(profile());
+  profile()->GetPrefs()->Set(prefs::kManagedWebUsbAllowDevicesForUrls,
+                             *base::JSONReader::Read(kPolicySetting));
+
+  store->GrantDevicePermission(kAnyDeviceOrigin, kAnyDeviceOrigin,
+                               *persistent_device_info);
+
+  auto objects = store->GetGrantedObjects(kAnyDeviceOrigin, kAnyDeviceOrigin);
+  ASSERT_EQ(objects.size(), 1u);
+
+  // User granted permissions for a device that is also granted by a wildcard
+  // vendor policy will be replaced by the policy permission.
+  ExpectChooserObjectInfo(objects[0].get(),
+                          /*requesting_origin=*/kAnyDeviceOrigin,
+                          /*source=*/content_settings::SETTING_SOURCE_POLICY,
+                          /*incognito=*/false,
+                          /*vendor_id=*/kDeviceIdWildcard,
+                          /*product_id=*/kDeviceIdWildcard,
+                          /*name=*/"Devices from any vendor");
+}
+
 TEST_F(UsbChooserContextTest,
        GetAllGrantedObjectsWithOnlyPolicyAllowedDevices) {
   auto* store = GetChooserContext(profile());
diff --git a/chrome/browser/usb/usb_chooser_controller.cc b/chrome/browser/usb/usb_chooser_controller.cc
index 2fffee4..948c173 100644
--- a/chrome/browser/usb/usb_chooser_controller.cc
+++ b/chrome/browser/usb/usb_chooser_controller.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "chrome/browser/net/referrer.h"
diff --git a/chrome/common/extensions/api/accessibility_private.json b/chrome/common/extensions/api/accessibility_private.json
index cd71a4c..725c87a1 100644
--- a/chrome/common/extensions/api/accessibility_private.json
+++ b/chrome/common/extensions/api/accessibility_private.json
@@ -364,6 +364,20 @@
         "description": "Called when Chrome OS wants to change the Select-to-Speak state, between selecting with the mouse, speaking, and inactive.",
         "parameters": [],
         "platforms": ["chromeos"]
+      },
+      {
+        "name": "onAnnounceForAccessibility",
+        "type": "function",
+        "description": "Called when an internal component within accessibility wants to force speech output for an accessibility extension. Do not use without approval from accessibility owners.",
+        "parameters": [
+          {
+            "name": "announceText",
+            "type": "array",
+            "items": { "type": "string" },
+            "description": "Text to be announced."
+          }
+        ],
+        "platforms": ["chromeos"]
       }
     ]
   }
diff --git a/chrome/renderer/autofill/fake_mojo_password_manager_driver.h b/chrome/renderer/autofill/fake_mojo_password_manager_driver.h
index 6a1a63d..4f0e4c7e 100644
--- a/chrome/renderer/autofill/fake_mojo_password_manager_driver.h
+++ b/chrome/renderer/autofill/fake_mojo_password_manager_driver.h
@@ -51,12 +51,12 @@
 
   bool called_password_form_submitted() const {
     return called_password_form_submitted_ && password_form_submitted_ &&
-           !password_form_submitted_->only_for_fallback_saving;
+           !password_form_submitted_->only_for_fallback;
   }
 
   bool called_password_form_submitted_only_for_fallback() const {
     return called_password_form_submitted_ && password_form_submitted_ &&
-           password_form_submitted_->only_for_fallback_saving;
+           password_form_submitted_->only_for_fallback;
   }
 
   const base::Optional<autofill::PasswordForm>& password_form_submitted()
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index e19c16c..5fbee13a 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -17,6 +17,7 @@
 #include "base/no_destructor.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "base/values.h"
diff --git a/chrome/renderer/chrome_content_renderer_client_browsertest.cc b/chrome/renderer/chrome_content_renderer_client_browsertest.cc
index eeef38bd..ca2da70 100644
--- a/chrome/renderer/chrome_content_renderer_client_browsertest.cc
+++ b/chrome/renderer/chrome_content_renderer_client_browsertest.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/chrome/renderer/net/net_error_helper.cc b/chrome/renderer/net/net_error_helper.cc
index 0450253..d0a33d79 100644
--- a/chrome/renderer/net/net_error_helper.cc
+++ b/chrome/renderer/net/net_error_helper.cc
@@ -16,6 +16,7 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram.h"
 #include "base/strings/strcat.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
 #include "build/build_config.h"
diff --git a/chrome/renderer/sandbox_status_extension_android.cc b/chrome/renderer/sandbox_status_extension_android.cc
index 2e66f543..1181442 100644
--- a/chrome/renderer/sandbox_status_extension_android.cc
+++ b/chrome/renderer/sandbox_status_extension_android.cc
@@ -75,7 +75,7 @@
   v8::Context::Scope context_scope(context);
 
   v8::Local<v8::Object> chrome =
-      content::GetOrCreateChromeObject(isolate, context->Global());
+      content::GetOrCreateChromeObject(isolate, context);
   v8::Local<v8::Function> function;
   bool success =
       gin::CreateFunctionTemplate(
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
index ea00543..98e9d31 100644
--- a/chrome/renderer/searchbox/searchbox_extension.cc
+++ b/chrome/renderer/searchbox/searchbox_extension.cc
@@ -1082,7 +1082,7 @@
     return;
 
   v8::Local<v8::Object> chrome =
-      content::GetOrCreateChromeObject(isolate, context->Global());
+      content::GetOrCreateChromeObject(isolate, context);
   v8::Local<v8::Object> embedded_search = v8::Object::New(isolate);
   embedded_search
       ->Set(context, gin::StringToV8(isolate, "searchBox"),
diff --git a/chrome/test/chromedriver/VERSION b/chrome/test/chromedriver/VERSION
index 85750d2..e72716a7 100644
--- a/chrome/test/chromedriver/VERSION
+++ b/chrome/test/chromedriver/VERSION
@@ -1 +1 @@
-2.45
+2.46
diff --git a/chrome/test/data/media/picture-in-picture/window-size.html b/chrome/test/data/media/picture-in-picture/window-size.html
index a1dd029..d0a0ef4 100644
--- a/chrome/test/data/media/picture-in-picture/window-size.html
+++ b/chrome/test/data/media/picture-in-picture/window-size.html
@@ -138,14 +138,14 @@
     });
   }
 
-  function setMediaSessionSkipAdActionHandler() {
-    navigator.mediaSession.setActionHandler('skipad', _ => {
-      document.title = 'skipad';
+  function setMediaSessionActionHandler(name) {
+    navigator.mediaSession.setActionHandler(name, _ => {
+      document.title = name;
     });
   }
 
-  function unsetMediaSessionSkipAdActionHandler() {
-    navigator.mediaSession.setActionHandler('skipad', null);
+  function unsetMediaSessionActionHandler(name) {
+    navigator.mediaSession.setActionHandler(name, null);
   }
 </script>
 </html>
diff --git a/chromecast/cast_shell_sandbox_policy b/chromecast/cast_shell_sandbox_policy
index 5a31e2bf..c0814ffd 100644
--- a/chromecast/cast_shell_sandbox_policy
+++ b/chromecast/cast_shell_sandbox_policy
@@ -8,7 +8,6 @@
       "fuchsia.fonts.Provider",
       "fuchsia.media.Audio",
       "fuchsia.mediacodec.CodecFactory",
-      "fuchsia.net.LegacySocketProvider",
       "fuchsia.net.SocketProvider",
       "fuchsia.netstack.Netstack",
       "fuchsia.process.Launcher",
diff --git a/chromeos/services/secure_channel/ble_connection_manager_impl.cc b/chromeos/services/secure_channel/ble_connection_manager_impl.cc
index ebc651d9..4f98255 100644
--- a/chromeos/services/secure_channel/ble_connection_manager_impl.cc
+++ b/chromeos/services/secure_channel/ble_connection_manager_impl.cc
@@ -346,7 +346,7 @@
       weave::BluetoothLowEnergyWeaveClientConnection::Factory::NewInstance(
           remote_device, bluetooth_adapter_,
           device::BluetoothUUID(kGattServerUuid), bluetooth_device,
-          false /* should_set_low_connection_latency */);
+          true /* should_set_low_connection_latency */);
 
   SetAuthenticatingChannel(
       remote_device.GetDeviceId(),
diff --git a/chromeos/services/secure_channel/ble_connection_manager_impl_unittest.cc b/chromeos/services/secure_channel/ble_connection_manager_impl_unittest.cc
index 1a64ea1..be3931c7 100644
--- a/chromeos/services/secure_channel/ble_connection_manager_impl_unittest.cc
+++ b/chromeos/services/secure_channel/ble_connection_manager_impl_unittest.cc
@@ -222,7 +222,7 @@
       bool should_set_low_connection_latency) override {
     EXPECT_EQ(expected_mock_adapter_, adapter);
     EXPECT_EQ(device::BluetoothUUID(kGattServerUuid), remote_service_uuid);
-    EXPECT_FALSE(should_set_low_connection_latency);
+    EXPECT_TRUE(should_set_low_connection_latency);
 
     auto instance = std::make_unique<FakeConnection>(remote_device);
     last_created_instance_ = instance.get();
diff --git a/components/arc/common/accessibility_helper.mojom b/components/arc/common/accessibility_helper.mojom
index ab77404c..e17e44c 100644
--- a/components/arc/common/accessibility_helper.mojom
+++ b/components/arc/common/accessibility_helper.mojom
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// Next MinVersion: 15
+// Next MinVersion: 16
 
 module arc.mojom;
 
@@ -349,6 +349,9 @@
   // True if this event has happened on
   // AccessibilityWindowInfo.TYPE_INPUT_METHOD.
   [MinVersion=14] bool is_input_method_window;
+
+  // Retrieved from AccessibilityRecord.getText().
+  [MinVersion=15] array<string>? eventText;
 };
 
 // AccessibilityActionData is a struct to contain info of AccessibilityAction in
diff --git a/components/autofill/content/common/autofill_types.mojom b/components/autofill/content/common/autofill_types.mojom
index b1ab281..2428dd1 100644
--- a/components/autofill/content/common/autofill_types.mojom
+++ b/components/autofill/content/common/autofill_types.mojom
@@ -274,7 +274,7 @@
   bool is_public_suffix_match;
   bool is_affiliation_based_match;
   SubmissionIndicatorEvent submission_event;
-  bool only_for_fallback_saving;
+  bool only_for_fallback;
   bool is_gaia_with_skip_save_password_form;
 };
 
diff --git a/components/autofill/content/common/autofill_types_struct_traits.cc b/components/autofill/content/common/autofill_types_struct_traits.cc
index 8ebff42..bd2c31e1 100644
--- a/components/autofill/content/common/autofill_types_struct_traits.cc
+++ b/components/autofill/content/common/autofill_types_struct_traits.cc
@@ -877,7 +877,7 @@
       data.was_parsed_using_autofill_predictions();
   out->is_public_suffix_match = data.is_public_suffix_match();
   out->is_affiliation_based_match = data.is_affiliation_based_match();
-  out->only_for_fallback_saving = data.only_for_fallback_saving();
+  out->only_for_fallback = data.only_for_fallback();
   out->is_gaia_with_skip_save_password_form =
       data.is_gaia_with_skip_save_password_form();
 
diff --git a/components/autofill/content/common/autofill_types_struct_traits.h b/components/autofill/content/common/autofill_types_struct_traits.h
index 100b81f..957bc222 100644
--- a/components/autofill/content/common/autofill_types_struct_traits.h
+++ b/components/autofill/content/common/autofill_types_struct_traits.h
@@ -679,8 +679,8 @@
     return r.submission_event;
   }
 
-  static bool only_for_fallback_saving(const autofill::PasswordForm& r) {
-    return r.only_for_fallback_saving;
+  static bool only_for_fallback(const autofill::PasswordForm& r) {
+    return r.only_for_fallback;
   }
 
   static bool is_gaia_with_skip_save_password_form(
diff --git a/components/autofill/content/renderer/password_form_conversion_utils.cc b/components/autofill/content/renderer/password_form_conversion_utils.cc
index ae0bd7e..ad4e5dd 100644
--- a/components/autofill/content/renderer/password_form_conversion_utils.cc
+++ b/components/autofill/content/renderer/password_form_conversion_utils.cc
@@ -660,8 +660,8 @@
   // attributes) the passwords list is empty, build list based on user input (if
   // there is any non-empty password field) and the type of a field. Also mark
   // that the form should be available only for fallback saving (automatic
-  // bubble will not pop up).
-  password_form->only_for_fallback_saving = plausible_passwords.empty();
+  // bubble will not pop up) and filling.
+  password_form->only_for_fallback = plausible_passwords.empty();
   if (plausible_passwords.empty()) {
     plausible_passwords = std::move(passwords_without_heuristics);
     preceding_text_input_for_plausible_password =
diff --git a/components/autofill/content/renderer/password_form_conversion_utils_browsertest.cc b/components/autofill/content/renderer/password_form_conversion_utils_browsertest.cc
index 40c3ad1..70e756a 100644
--- a/components/autofill/content/renderer/password_form_conversion_utils_browsertest.cc
+++ b/components/autofill/content/renderer/password_form_conversion_utils_browsertest.cc
@@ -305,7 +305,7 @@
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
 
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ("data:", password_form->signon_realm);
   EXPECT_EQ(GURL(kTestFormActionURL), password_form->action);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
@@ -330,7 +330,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element);
@@ -858,7 +858,7 @@
           LoadHTMLAndConvertForm(html, nullptr, false);
       ASSERT_TRUE(password_form);
 
-      EXPECT_FALSE(password_form->only_for_fallback_saving);
+      EXPECT_FALSE(password_form->only_for_fallback);
       EXPECT_EQ(base::UTF8ToUTF16(cases[i].expected_username_element),
                 password_form->username_element);
 
@@ -919,7 +919,7 @@
         LoadHTMLAndConvertForm(html, nullptr, false);
     ASSERT_TRUE(password_form);
 
-    EXPECT_FALSE(password_form->only_for_fallback_saving);
+    EXPECT_FALSE(password_form->only_for_fallback);
     EXPECT_EQ(base::UTF8ToUTF16(cases[i].expected_password_element),
               password_form->password_element);
     EXPECT_EQ(base::UTF8ToUTF16(cases[i].expected_password_value),
@@ -989,7 +989,7 @@
         LoadHTMLAndConvertForm(html, nullptr, false);
     ASSERT_TRUE(password_form);
 
-    EXPECT_FALSE(password_form->only_for_fallback_saving);
+    EXPECT_FALSE(password_form->only_for_fallback);
     EXPECT_EQ(base::UTF8ToUTF16(cases[i].expected_password_element),
               password_form->password_element);
     EXPECT_EQ(base::UTF8ToUTF16(cases[i].expected_password_value),
@@ -1354,7 +1354,7 @@
         LoadHTMLAndConvertForm(html, nullptr, false);
     ASSERT_TRUE(password_form);
 
-    EXPECT_FALSE(password_form->only_for_fallback_saving);
+    EXPECT_FALSE(password_form->only_for_fallback);
     // In the absence of username autocomplete attributes, the username should
     // be the text input field just before 'current-password' or before
     // 'new-password', if there is no 'current-password'.
@@ -1422,7 +1422,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16(""), password_form->password_element);
@@ -1450,7 +1450,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16(""), password_form->password_element);
@@ -1469,7 +1469,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"),
             password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("William"),
@@ -1491,7 +1491,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("William"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element);
@@ -1509,7 +1509,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("William"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element);
@@ -1529,7 +1529,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("William"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element);
@@ -1549,7 +1549,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("William"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element);
@@ -1589,7 +1589,7 @@
       form, &field_data_manager, nullptr, nullptr);
 
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("nonvisible_text"),
             password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("actual_username"),
@@ -1646,7 +1646,7 @@
       form, &field_data_manager, nullptr, nullptr);
 
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
 
   EXPECT_EQ(base::UTF8ToUTF16("visible_text"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("cached_username"),
@@ -1703,7 +1703,7 @@
       form, &field_data_manager, nullptr, nullptr);
 
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
 
   EXPECT_EQ(base::UTF8ToUTF16("this_is_username"),
             password_form->username_element);
@@ -1770,7 +1770,7 @@
     std::unique_ptr<PasswordForm> password_form =
         LoadHTMLAndConvertForm(html, nullptr, false);
     ASSERT_TRUE(password_form);
-    EXPECT_FALSE(password_form->only_for_fallback_saving);
+    EXPECT_FALSE(password_form->only_for_fallback);
     EXPECT_EQ(base::UTF8ToUTF16("username1"), password_form->username_element);
     EXPECT_EQ(base::UTF8ToUTF16("John"), password_form->username_value);
     EXPECT_EQ(base::UTF8ToUTF16("password1"), password_form->password_element);
@@ -1792,7 +1792,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username1"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("John"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password1"), password_form->password_element);
@@ -1883,7 +1883,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, &predictions, false);
   EXPECT_TRUE(password_form);
-  EXPECT_TRUE(password_form->only_for_fallback_saving);
+  EXPECT_TRUE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("Credit-card-owner-name"),
             password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("John Smith"), password_form->username_value);
@@ -1970,7 +1970,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, &predictions, false);
   EXPECT_TRUE(password_form);
-  EXPECT_TRUE(password_form->only_for_fallback_saving);
+  EXPECT_TRUE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("Credit-card-number"),
             password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("0000 0000 0000 0000"),
@@ -1998,7 +1998,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, &predictions, false);
   EXPECT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("Credit-card-owner-name"),
             password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("John Smith"), password_form->username_value);
@@ -2026,7 +2026,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, &predictions, false);
   ASSERT_TRUE(password_form);
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("Credit-card-number"),
             password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("0000 0000 0000 0000"),
@@ -2223,7 +2223,7 @@
         LoadHTMLAndConvertForm(html, nullptr, false);
     EXPECT_TRUE(password_form);
 
-    EXPECT_FALSE(password_form->only_for_fallback_saving);
+    EXPECT_FALSE(password_form->only_for_fallback);
     EXPECT_EQ(base::UTF8ToUTF16(test_cases[i].expected_username_element),
               password_form->username_element);
     EXPECT_EQ(base::UTF8ToUTF16(test_cases[i].expected_password_element),
@@ -2252,7 +2252,7 @@
   std::unique_ptr<PasswordForm> password_form =
       LoadHTMLAndConvertForm(html, nullptr, false);
   EXPECT_TRUE(password_form);
-  EXPECT_TRUE(password_form->only_for_fallback_saving);
+  EXPECT_TRUE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("ccname"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("cc_security_code"),
@@ -2275,7 +2275,7 @@
 
   ASSERT_TRUE(password_form);
 
-  EXPECT_FALSE(password_form->only_for_fallback_saving);
+  EXPECT_FALSE(password_form->only_for_fallback);
   EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element);
   EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value);
   EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element);
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index def89f8..37c6b00 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -133,6 +133,13 @@
     "local_card_migration_manager.h",
     "local_card_migration_strike_database.cc",
     "local_card_migration_strike_database.h",
+    "metrics/address_form_event_logger.cc",
+    "metrics/address_form_event_logger.h",
+    "metrics/credit_card_form_event_logger.cc",
+    "metrics/credit_card_form_event_logger.h",
+    "metrics/form_event_logger_base.cc",
+    "metrics/form_event_logger_base.h",
+    "metrics/form_events.h",
     "name_field.cc",
     "name_field.h",
     "password_requirements_spec_fetcher.h",
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
index 95dcd22..77edb59 100644
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -51,6 +51,9 @@
 #include "components/autofill/core/browser/field_types.h"
 #include "components/autofill/core/browser/form_data_importer.h"
 #include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/metrics/address_form_event_logger.h"
+#include "components/autofill/core/browser/metrics/credit_card_form_event_logger.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
 #include "components/autofill/core/browser/payments/payments_client.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
 #include "components/autofill/core/browser/phone_number.h"
@@ -414,19 +417,13 @@
 
   submitted_form->set_submission_source(source);
 
-  CreditCard credit_card =
-      client_->GetFormDataImporter()->ExtractCreditCardFromForm(
-          *submitted_form);
-  AutofillMetrics::CardNumberStatus card_number_status =
-      GetCardNumberStatus(credit_card);
-
   if (IsProfileAutofillEnabled()) {
-    address_form_event_logger_->OnFormSubmitted(
-        /*force_logging=*/false, card_number_status, sync_state_);
+    address_form_event_logger_->OnFormSubmitted(/*force_logging=*/false,
+                                                sync_state_, *submitted_form);
   }
   if (IsCreditCardAutofillEnabled()) {
     credit_card_form_event_logger_->OnFormSubmitted(
-        enable_ablation_logging_, card_number_status, sync_state_);
+        enable_ablation_logging_, sync_state_, *submitted_form);
   }
 
   if (!submitted_form->IsAutofillable())
@@ -1228,12 +1225,11 @@
   form_interactions_ukm_logger_.reset(
       new AutofillMetrics::FormInteractionsUkmLogger(
           client_->GetUkmRecorder(), client_->GetUkmSourceId()));
-  address_form_event_logger_.reset(new AutofillMetrics::FormEventLogger(
-      /*is_for_credit_card=*/false, driver()->IsInMainFrame(),
-      form_interactions_ukm_logger_.get()));
-  credit_card_form_event_logger_.reset(new AutofillMetrics::FormEventLogger(
-      /*is_for_credit_card=*/true, driver()->IsInMainFrame(),
-      form_interactions_ukm_logger_.get()));
+  address_form_event_logger_.reset(new AddressFormEventLogger(
+      driver()->IsInMainFrame(), form_interactions_ukm_logger_.get()));
+  credit_card_form_event_logger_.reset(new CreditCardFormEventLogger(
+      driver()->IsInMainFrame(), form_interactions_ukm_logger_.get(),
+      personal_data_, client_));
 #if defined(OS_ANDROID) || defined(OS_IOS)
   autofill_assistant_.Reset();
 #endif
@@ -1270,16 +1266,15 @@
           std::make_unique<AutofillMetrics::FormInteractionsUkmLogger>(
               client->GetUkmRecorder(),
               client->GetUkmSourceId())),
-      address_form_event_logger_(
-          std::make_unique<AutofillMetrics::FormEventLogger>(
-              /*is_for_credit_card=*/false,
-              driver->IsInMainFrame(),
-              form_interactions_ukm_logger_.get())),
+      address_form_event_logger_(std::make_unique<AddressFormEventLogger>(
+          driver->IsInMainFrame(),
+          form_interactions_ukm_logger_.get())),
       credit_card_form_event_logger_(
-          std::make_unique<AutofillMetrics::FormEventLogger>(
-              /*is_for_credit_card=*/true,
+          std::make_unique<CreditCardFormEventLogger>(
               driver->IsInMainFrame(),
-              form_interactions_ukm_logger_.get())),
+              form_interactions_ukm_logger_.get(),
+              personal_data_,
+              client_)),
 #if defined(OS_ANDROID) || defined(OS_IOS)
       autofill_assistant_(this),
 #endif
@@ -2179,19 +2174,4 @@
   }
 }
 
-AutofillMetrics::CardNumberStatus AutofillManager::GetCardNumberStatus(
-    CreditCard& credit_card) {
-  base::string16 number = credit_card.number();
-  if (number.empty())
-    return AutofillMetrics::EMPTY_CARD;
-  else if (!HasCorrectLength(number))
-    return AutofillMetrics::WRONG_SIZE_CARD;
-  else if (!PassesLuhnCheck(number))
-    return AutofillMetrics::FAIL_LUHN_CHECK_CARD;
-  else if (personal_data_->IsKnownCard(credit_card))
-    return AutofillMetrics::KNOWN_CARD;
-  else
-    return AutofillMetrics::UNKNOWN_CARD;
-}
-
 }  // namespace autofill
diff --git a/components/autofill/core/browser/autofill_manager.h b/components/autofill/core/browser/autofill_manager.h
index 588f1ee..0a749d1 100644
--- a/components/autofill/core/browser/autofill_manager.h
+++ b/components/autofill/core/browser/autofill_manager.h
@@ -29,6 +29,8 @@
 #include "components/autofill/core/browser/card_unmask_delegate.h"
 #include "components/autofill/core/browser/field_filler.h"
 #include "components/autofill/core/browser/form_types.h"
+#include "components/autofill/core/browser/metrics/address_form_event_logger.h"
+#include "components/autofill/core/browser/metrics/credit_card_form_event_logger.h"
 #include "components/autofill/core/browser/payments/full_card_request.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
 #include "components/autofill/core/browser/popup_types.h"
@@ -498,9 +500,6 @@
                           bool should_notify,
                           const base::string16& cvc);
 
-  AutofillMetrics::CardNumberStatus GetCardNumberStatus(
-      CreditCard& credit_card);
-
   // Whether there should be an attemps to refill the form. Returns true if all
   // the following are satisfied:
   //  There have been no refill on that page yet.
@@ -550,9 +549,8 @@
       form_interactions_ukm_logger_;
 
   // Utilities for logging form events.
-  std::unique_ptr<AutofillMetrics::FormEventLogger> address_form_event_logger_;
-  std::unique_ptr<AutofillMetrics::FormEventLogger>
-      credit_card_form_event_logger_;
+  std::unique_ptr<AddressFormEventLogger> address_form_event_logger_;
+  std::unique_ptr<CreditCardFormEventLogger> credit_card_form_event_logger_;
 
   // Have we logged whether Autofill is enabled for this page load?
   bool has_logged_autofill_enabled_ = false;
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index 68c0d62..5749edf 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -33,6 +33,7 @@
 #include "components/autofill/core/browser/autofill_profile.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
 #include "components/autofill/core/browser/credit_card.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
 #include "components/autofill/core/browser/mock_autocomplete_history_manager.h"
 #include "components/autofill/core/browser/payments/test_payments_client.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
@@ -1609,9 +1610,9 @@
 
   base::HistogramTester histogram_tester;
   FormSubmitted(form);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                     FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE,
+                                     1);
 }
 
 // Test that we return normal autofill suggestions when trying to autofill
@@ -6233,12 +6234,10 @@
   histogram_tester.ExpectBucketCount("Autofill.UserHappiness.Address",
                                      AutofillMetrics::SUGGESTIONS_SHOWN_ONCE,
                                      1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
 
   // No Autocomplete or credit cards logs.
   const std::string histograms = histogram_tester.GetAllHistogramsRecorded();
@@ -6264,12 +6263,10 @@
   histogram_tester.ExpectBucketCount("Autofill.UserHappiness.CreditCard",
                                      AutofillMetrics::SUGGESTIONS_SHOWN_ONCE,
                                      1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                     FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                     FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
 
   // No Autocomplete or address logs.
   const std::string histograms = histogram_tester.GetAllHistogramsRecorded();
@@ -6284,9 +6281,8 @@
 
   base::HistogramTester histogram_tester;
   autofill_manager_->DidSuppressPopup(form, form.fields[0]);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_POPUP_SUPPRESSED, 1);
 
   // No Autocomplete or credit cards logs.
   const std::string histograms = histogram_tester.GetAllHistogramsRecorded();
@@ -6303,9 +6299,8 @@
 
   base::HistogramTester histogram_tester;
   autofill_manager_->DidSuppressPopup(form, form.fields[0]);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                     FORM_EVENT_POPUP_SUPPRESSED, 1);
 
   // No Autocomplete or address logs.
   const std::string histograms = histogram_tester.GetAllHistogramsRecorded();
diff --git a/components/autofill/core/browser/autofill_metrics.cc b/components/autofill/core/browser/autofill_metrics.cc
index 6e40565..bf9abee 100644
--- a/components/autofill/core/browser/autofill_metrics.cc
+++ b/components/autofill/core/browser/autofill_metrics.cc
@@ -264,21 +264,6 @@
   }
 }
 
-const char* GetSyncStateSuffix(AutofillSyncSigninState sync_state) {
-  switch (sync_state) {
-    case AutofillSyncSigninState::kSignedOut:
-      return ".SignedOut";
-    case AutofillSyncSigninState::kSignedIn:
-      return ".SignedIn";
-    case AutofillSyncSigninState::kSignedInAndWalletSyncTransportEnabled:
-      return ".SignedInAndWalletSyncTransportEnabled";
-    case AutofillSyncSigninState::kSignedInAndSyncFeature:
-      return ".SignedInAndSyncFeature";
-    case AutofillSyncSigninState::kNumSyncStates:
-      return ".Unknown";
-  }
-}
-
 // Given a set of |possible_types| for a field, select the best type to use as
 // the "actual" field type when calculating metrics. If the |predicted_type| is
 // among the |possible_types] then use that as the best type (i.e., the
@@ -568,30 +553,6 @@
       is_empty, is_ambiguous);
 }
 
-AutofillMetrics::FormEvent GetCardNumberStatusFormEvent(
-    const AutofillMetrics::CardNumberStatus card_number_status) {
-  switch (card_number_status) {
-    case AutofillMetrics::EMPTY_CARD:
-      return AutofillMetrics::
-          FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD;
-    case AutofillMetrics::WRONG_SIZE_CARD:
-      return AutofillMetrics::
-          FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_WRONG_SIZE_CARD;
-    case AutofillMetrics::FAIL_LUHN_CHECK_CARD:
-      return AutofillMetrics::
-          FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_FAIL_LUHN_CHECK_CARD;
-    case AutofillMetrics::KNOWN_CARD:
-      return AutofillMetrics::
-          FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD;
-    case AutofillMetrics::UNKNOWN_CARD:
-      return AutofillMetrics::
-          FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD;
-  }
-  NOTREACHED();
-  return AutofillMetrics::
-      FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD;
-}
-
 }  // namespace
 
 const int kMaxBucketsCount = 50;
@@ -740,8 +701,8 @@
   base::UmaHistogramEnumeration(metric_with_destination_and_show, metric,
                                 NUM_SAVE_CARD_PROMPT_METRICS);
   base::UmaHistogramEnumeration(
-      metric_with_destination_and_show + GetSyncStateSuffix(sync_state), metric,
-      NUM_SAVE_CARD_PROMPT_METRICS);
+      metric_with_destination_and_show + GetMetricsSyncStateSuffix(sync_state),
+      metric, NUM_SAVE_CARD_PROMPT_METRICS);
   if (is_requesting_cardholder_name) {
     base::UmaHistogramEnumeration(
         metric_with_destination_and_show + ".RequestingCardholderName", metric,
@@ -1246,7 +1207,8 @@
     AutofillSyncSigninState sync_state) {
   std::string name("Autofill.IsEnabled.PageLoad");
   UMA_HISTOGRAM_BOOLEAN(name, enabled);
-  base::UmaHistogramBoolean(name + GetSyncStateSuffix(sync_state), enabled);
+  base::UmaHistogramBoolean(name + GetMetricsSyncStateSuffix(sync_state),
+                            enabled);
 }
 
 // static
@@ -1670,330 +1632,6 @@
       .Record(ukm_recorder);
 }
 
-AutofillMetrics::FormEventLogger::FormEventLogger(
-    bool is_for_credit_card,
-    bool is_in_main_frame,
-    AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger)
-    : is_for_credit_card_(is_for_credit_card),
-      is_in_main_frame_(is_in_main_frame),
-      server_record_type_count_(0),
-      local_record_type_count_(0),
-      is_context_secure_(false),
-      has_logged_interacted_(false),
-      has_logged_popup_suppressed_(false),
-      has_logged_suggestions_shown_(false),
-      has_logged_masked_server_card_suggestion_selected_(false),
-      has_logged_suggestion_filled_(false),
-      has_logged_will_submit_(false),
-      has_logged_submitted_(false),
-      has_logged_bank_name_available_(false),
-      logged_suggestion_filled_was_server_data_(false),
-      logged_suggestion_filled_was_masked_server_card_(false),
-      form_interactions_ukm_logger_(form_interactions_ukm_logger) {}
-
-void AutofillMetrics::FormEventLogger::OnDidParseForm() {
-  Log(AutofillMetrics::FORM_EVENT_DID_PARSE_FORM);
-  if (is_for_credit_card_) {
-    base::RecordAction(
-        base::UserMetricsAction("Autofill_ParsedCreditCardForm"));
-  } else {
-    base::RecordAction(base::UserMetricsAction("Autofill_ParsedProfileForm"));
-  }
-}
-
-void AutofillMetrics::FormEventLogger::OnDidInteractWithAutofillableForm(
-    FormSignature form_signature,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  if (!has_logged_interacted_) {
-    has_logged_interacted_ = true;
-    form_interactions_ukm_logger_->LogInteractedWithForm(
-        is_for_credit_card_, local_record_type_count_,
-        server_record_type_count_, form_signature);
-    Log(AutofillMetrics::FORM_EVENT_INTERACTED_ONCE);
-  }
-}
-
-void AutofillMetrics::FormEventLogger::OnDidPollSuggestions(
-    const FormFieldData& field,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  // Record only one poll user action for consecutive polls of the same field.
-  // This is to avoid recording too many poll actions (for example when a user
-  // types in a field, triggering multiple queries) to make the analysis more
-  // simple.
-  if (!field.SameFieldAs(last_polled_field_)) {
-    if (is_for_credit_card_) {
-      base::RecordAction(
-          base::UserMetricsAction("Autofill_PolledCreditCardSuggestions"));
-    } else {
-      base::RecordAction(
-          base::UserMetricsAction("Autofill_PolledProfileSuggestions"));
-    }
-
-    last_polled_field_ = field;
-  }
-}
-
-void AutofillMetrics::FormEventLogger::OnPopupSuppressed(
-    const FormStructure& form,
-    const AutofillField& field) {
-  Log(AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED);
-  if (!has_logged_popup_suppressed_) {
-    has_logged_popup_suppressed_ = true;
-    Log(AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE);
-  }
-}
-
-void AutofillMetrics::FormEventLogger::OnDidShowSuggestions(
-    const FormStructure& form,
-    const AutofillField& field,
-    const base::TimeTicks& form_parsed_timestamp,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  form_interactions_ukm_logger_->LogSuggestionsShown(
-      form, field, form_parsed_timestamp);
-
-  Log(AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN);
-  if (!has_logged_suggestions_shown_) {
-    has_logged_suggestions_shown_ = true;
-    Log(AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE);
-    if (has_logged_bank_name_available_) {
-      Log(AutofillMetrics::
-              FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE);
-    }
-  }
-
-  if (is_for_credit_card_) {
-    base::RecordAction(
-        base::UserMetricsAction("Autofill_ShowedCreditCardSuggestions"));
-  } else {
-    base::RecordAction(
-        base::UserMetricsAction("Autofill_ShowedProfileSuggestions"));
-  }
-}
-
-void AutofillMetrics::FormEventLogger::OnDidSelectMaskedServerCardSuggestion(
-    const base::TimeTicks& form_parsed_timestamp,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  DCHECK(is_for_credit_card_);
-  form_interactions_ukm_logger_->LogSelectedMaskedServerCard(
-      form_parsed_timestamp);
-
-  Log(AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED);
-  if (!has_logged_masked_server_card_suggestion_selected_) {
-    has_logged_masked_server_card_suggestion_selected_ = true;
-    Log(AutofillMetrics::
-            FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE);
-  }
-}
-
-void AutofillMetrics::FormEventLogger::OnDidFillSuggestion(
-    const CreditCard& credit_card,
-    const FormStructure& form,
-    const AutofillField& field,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  DCHECK(is_for_credit_card_);
-  form_interactions_ukm_logger_->LogDidFillSuggestion(
-      static_cast<int>(credit_card.record_type()),
-      /*is_for_credit_card=*/true, form, field);
-
-  if (credit_card.record_type() == CreditCard::MASKED_SERVER_CARD)
-    Log(AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED);
-  else if (credit_card.record_type() == CreditCard::FULL_SERVER_CARD)
-    Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED);
-  else
-    Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED);
-
-  if (!has_logged_suggestion_filled_) {
-    has_logged_suggestion_filled_ = true;
-    logged_suggestion_filled_was_server_data_ =
-        credit_card.record_type() == CreditCard::MASKED_SERVER_CARD ||
-        credit_card.record_type() == CreditCard::FULL_SERVER_CARD;
-    logged_suggestion_filled_was_masked_server_card_ =
-        credit_card.record_type() == CreditCard::MASKED_SERVER_CARD;
-    if (credit_card.record_type() == CreditCard::MASKED_SERVER_CARD) {
-      Log(AutofillMetrics::
-              FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE);
-      if (has_logged_bank_name_available_) {
-        Log(AutofillMetrics::
-                FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE);
-      }
-    } else if (credit_card.record_type() == CreditCard::FULL_SERVER_CARD) {
-      Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE);
-      if (has_logged_bank_name_available_) {
-        Log(AutofillMetrics::
-                FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE);
-      }
-    } else {
-      Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE);
-    }
-  }
-
-  base::RecordAction(
-      base::UserMetricsAction("Autofill_FilledCreditCardSuggestion"));
-}
-
-void AutofillMetrics::FormEventLogger::OnDidFillSuggestion(
-    const AutofillProfile& profile,
-    const FormStructure& form,
-    const AutofillField& field,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  DCHECK(!is_for_credit_card_);
-  form_interactions_ukm_logger_->LogDidFillSuggestion(
-      static_cast<int>(profile.record_type()),
-      /*is_for_for_credit_card=*/false, form, field);
-
-  if (profile.record_type() == AutofillProfile::SERVER_PROFILE)
-    Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED);
-  else
-    Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED);
-
-  if (!has_logged_suggestion_filled_) {
-    has_logged_suggestion_filled_ = true;
-    logged_suggestion_filled_was_server_data_ =
-        profile.record_type() == AutofillProfile::SERVER_PROFILE;
-    Log(profile.record_type() == AutofillProfile::SERVER_PROFILE
-            ? AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE
-            : AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE);
-  }
-
-  base::RecordAction(
-      base::UserMetricsAction("Autofill_FilledProfileSuggestion"));
-}
-
-void AutofillMetrics::FormEventLogger::OnWillSubmitForm(
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  // Not logging this kind of form if we haven't logged a user interaction.
-  if (!has_logged_interacted_)
-    return;
-
-  // Not logging twice.
-  if (has_logged_will_submit_)
-    return;
-  has_logged_will_submit_ = true;
-
-  if (!has_logged_suggestion_filled_) {
-    Log(AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE);
-  } else if (logged_suggestion_filled_was_masked_server_card_) {
-    Log(AutofillMetrics::
-            FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE);
-  } else if (logged_suggestion_filled_was_server_data_) {
-    Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE);
-  } else {
-    Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE);
-  }
-
-  if (has_logged_suggestions_shown_) {
-    Log(AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE);
-  }
-
-  base::RecordAction(base::UserMetricsAction("Autofill_OnWillSubmitForm"));
-}
-
-void AutofillMetrics::FormEventLogger::OnFormSubmitted(
-    bool force_logging,
-    CardNumberStatus card_number_status,
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  // Not logging this kind of form if we haven't logged a user interaction.
-  if (!has_logged_interacted_)
-    return;
-
-  // Not logging twice.
-  if (has_logged_submitted_)
-    return;
-  has_logged_submitted_ = true;
-
-  if (!has_logged_suggestion_filled_) {
-    Log(AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE);
-  } else if (logged_suggestion_filled_was_masked_server_card_) {
-    Log(AutofillMetrics::
-            FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE);
-  } else if (logged_suggestion_filled_was_server_data_) {
-    Log(AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE);
-  } else {
-    Log(AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE);
-  }
-
-  if (has_logged_suggestions_shown_ || force_logging) {
-    Log(AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE);
-    if (is_for_credit_card_ && !has_logged_suggestion_filled_) {
-      Log(GetCardNumberStatusFormEvent(card_number_status));
-    }
-  }
-}
-
-void AutofillMetrics::FormEventLogger::SetBankNameAvailable() {
-  has_logged_bank_name_available_ = true;
-}
-
-void AutofillMetrics::FormEventLogger::OnDidSeeFillableDynamicForm(
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  Log(AutofillMetrics::FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM);
-}
-
-void AutofillMetrics::FormEventLogger::OnDidRefill(
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  Log(AutofillMetrics::FORM_EVENT_DID_DYNAMIC_REFILL);
-}
-
-void AutofillMetrics::FormEventLogger::OnSubsequentRefillAttempt(
-    AutofillSyncSigninState sync_state) {
-  sync_state_ = sync_state;
-  Log(AutofillMetrics::FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL);
-}
-
-void AutofillMetrics::FormEventLogger::Log(FormEvent event) const {
-  DCHECK_LT(event, NUM_FORM_EVENTS);
-  std::string name("Autofill.FormEvents.");
-  if (is_for_credit_card_)
-    name += "CreditCard";
-  else
-    name += "Address";
-  base::UmaHistogramEnumeration(name, event, NUM_FORM_EVENTS);
-
-  // Log again in a different histogram so that iframes can be analyzed on their
-  // own.
-  base::UmaHistogramEnumeration(
-      name + (is_in_main_frame_ ? ".IsInMainFrame" : ".IsInIFrame"), event,
-      NUM_FORM_EVENTS);
-
-  // Log again in a different histogram for credit card forms on nonsecure
-  // pages, so that form interactions on nonsecure pages can be analyzed on
-  // their own.
-  if (is_for_credit_card_ && !is_context_secure_) {
-    base::UmaHistogramEnumeration(name + ".OnNonsecurePage", event,
-                                  NUM_FORM_EVENTS);
-  }
-
-  // Logging again in a different histogram for segmentation purposes.
-  if (server_record_type_count_ == 0 && local_record_type_count_ == 0)
-    name += ".WithNoData";
-  else if (server_record_type_count_ > 0 && local_record_type_count_ == 0)
-    name += ".WithOnlyServerData";
-  else if (server_record_type_count_ == 0 && local_record_type_count_ > 0)
-    name += ".WithOnlyLocalData";
-  else
-    name += ".WithBothServerAndLocalData";
-  base::UmaHistogramEnumeration(name, event, NUM_FORM_EVENTS);
-  base::UmaHistogramEnumeration(name + GetSyncStateSuffix(sync_state_), event,
-                                NUM_FORM_EVENTS);
-}
-
-void AutofillMetrics::FormEventLogger::Log(
-    BankNameDisplayedFormEvent event) const {
-  DCHECK_LT(event, BANK_NAME_NUM_FORM_EVENTS);
-  std::string name("Autofill.FormEvents.CreditCard.BankNameDisplayed");
-  base::UmaHistogramEnumeration(name, event, BANK_NAME_NUM_FORM_EVENTS);
-}
-
 AutofillMetrics::FormInteractionsUkmLogger::FormInteractionsUkmLogger(
     ukm::UkmRecorder* ukm_recorder,
     const ukm::SourceId source_id)
@@ -2197,6 +1835,23 @@
       "Autofill.HadUserOptedIn_To_WalletSyncTransportServerCards", is_opted_in);
 }
 
+// static
+const char* AutofillMetrics::GetMetricsSyncStateSuffix(
+    AutofillSyncSigninState sync_state) {
+  switch (sync_state) {
+    case AutofillSyncSigninState::kSignedOut:
+      return ".SignedOut";
+    case AutofillSyncSigninState::kSignedIn:
+      return ".SignedIn";
+    case AutofillSyncSigninState::kSignedInAndWalletSyncTransportEnabled:
+      return ".SignedInAndWalletSyncTransportEnabled";
+    case AutofillSyncSigninState::kSignedInAndSyncFeature:
+      return ".SignedInAndSyncFeature";
+    case AutofillSyncSigninState::kNumSyncStates:
+      return ".Unknown";
+  }
+}
+
 void AutofillMetrics::FormInteractionsUkmLogger::LogFormSubmitted(
     bool is_for_credit_card,
     bool has_upi_vpa_field,
diff --git a/components/autofill/core/browser/autofill_metrics.h b/components/autofill/core/browser/autofill_metrics.h
index 2e2f615..dd0f3a5d 100644
--- a/components/autofill/core/browser/autofill_metrics.h
+++ b/components/autofill/core/browser/autofill_metrics.h
@@ -592,111 +592,6 @@
     NUM_USER_HAPPINESS_METRICS,
   };
 
-  // Form Events for autofill.
-  // These events are triggered separetly for address and credit card forms.
-  enum FormEvent {
-    // User interacted with a field of this kind of form. Logged only once per
-    // page load.
-    FORM_EVENT_INTERACTED_ONCE = 0,
-    // A dropdown with suggestions was shown.
-    FORM_EVENT_SUGGESTIONS_SHOWN,
-    // Same as above, but recoreded only once per page load.
-    FORM_EVENT_SUGGESTIONS_SHOWN_ONCE,
-    // A local suggestion was used to fill the form.
-    FORM_EVENT_LOCAL_SUGGESTION_FILLED,
-    // A server suggestion was used to fill the form.
-    // When dealing with credit cards, this means a full server card was used
-    // to fill.
-    FORM_EVENT_SERVER_SUGGESTION_FILLED,
-    // A masked server card suggestion was used to fill the form.
-    FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED,
-    // A suggestion was used to fill the form. The origin type (local or server
-    // or masked server card) of the first selected within a page load will
-    // determine which of the following two will be fired.
-    FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
-    FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE,
-    FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-    // A form was submitted. Depending on the user filling a local, server,
-    // masked server card or no suggestion one of the following will be
-    // triggered. Only one of the following four will be triggered per page
-    // load.
-    FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
-    FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE,
-    FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE,
-    FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
-    // A masked server card suggestion was selected to fill the form.
-    FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED,
-    // Same as above but only triggered once per page load.
-    FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE,
-    // An autofillable form is about to be submitted. If the submission is not
-    // interrupted by JavaScript, the "form submitted" events above will also be
-    // logged. Depending on the user filling a local, server, masked server card
-    // or no suggestion one of the following will be triggered, at most once per
-    // page load.
-    FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE,
-    FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE,
-    FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE,
-    FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
-    // A dropdown with suggestions was shown and a form was submitted after
-    // that.
-    FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE,
-    // A dropdown with suggestions was shown and a form is about to be
-    // submitted. If the submission is not interrupted by JavaScript, the "form
-    // submitted" event above will also be logged.
-    FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE,
-    // A dropdown with credit card suggestions was shown, but they were not used
-    // to fill the form. Depending on the user submitting a card known by the
-    // browser, submitting a card that the browser does not know about,
-    // submitting with an empty card number, submitting with a card number of
-    // wrong size or submitting with a card number that does not pass luhn
-    // check, one of the following will be triggered. At most one of the
-    // following five metrics will be triggered per submit.
-    FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
-    FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD,
-    FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD,
-    FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_WRONG_SIZE_CARD,
-    FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_FAIL_LUHN_CHECK_CARD,
-
-    // The form was changed dynamically. This value has been deprecated.
-    FORM_EVENT_DID_SEE_DYNAMIC_FORM,
-    // The form was changed dynamically and was fillable.
-    FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM,
-    // There was a dynamic change of the form and it got re-filled
-    // automatically.
-    FORM_EVENT_DID_DYNAMIC_REFILL,
-    // The form dynamically changed another time after the refill.
-    FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL,
-    // The popup was suppressed because the native view couldn't be created.
-    FORM_EVENT_POPUP_SUPPRESSED,
-    // Same as above, but recoreded only once per page load.
-    FORM_EVENT_POPUP_SUPPRESSED_ONCE,
-
-    // The form was parsed.
-    FORM_EVENT_DID_PARSE_FORM,
-
-    NUM_FORM_EVENTS,
-  };
-
-  // Indicates submitted card information.
-  enum CardNumberStatus {
-    EMPTY_CARD,
-    WRONG_SIZE_CARD,
-    FAIL_LUHN_CHECK_CARD,
-    KNOWN_CARD,
-    UNKNOWN_CARD
-  };
-
-  // Form Events for autofill with bank name available for display.
-  enum BankNameDisplayedFormEvent {
-    // A dropdown with suggestions was shown and at least one suggestion has a
-    // bank name. Logged at most once per page load.
-    FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE = 0,
-    // A server suggestion was used to fill the form and at least one suggestion
-    // has a bank name. Logged at most once per page load.
-    FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE,
-    BANK_NAME_NUM_FORM_EVENTS,
-  };
-
   // Cardholder name fix flow prompt metrics.
   enum CardholderNameFixFlowPromptEvent {
     // The prompt was shown.
@@ -1303,103 +1198,8 @@
   // server cards to be shown.
   static void LogWalletSyncTransportCardsOptIn(bool is_opted_in);
 
-  // Utility to log autofill form events in the relevant histograms depending on
-  // the presence of server and/or local data.
-  class FormEventLogger {
-   public:
-    FormEventLogger(bool is_for_credit_card,
-                    bool is_in_main_frame,
-                    FormInteractionsUkmLogger* form_interactions_ukm_logger);
-
-    inline void set_server_record_type_count(size_t server_record_type_count) {
-      server_record_type_count_ = server_record_type_count;
-    }
-
-    inline void set_local_record_type_count(size_t local_record_type_count) {
-      local_record_type_count_ = local_record_type_count;
-    }
-
-    inline void set_is_context_secure(bool is_context_secure) {
-      is_context_secure_ = is_context_secure;
-    }
-
-    void OnDidInteractWithAutofillableForm(FormSignature form_signature,
-                                           AutofillSyncSigninState sync_state);
-
-    void OnDidPollSuggestions(const FormFieldData& field,
-                              AutofillSyncSigninState sync_state);
-
-    void OnDidParseForm();
-
-    void OnDidInteractWithAutofillableForm(FormSignature form_signature);
-
-    void OnPopupSuppressed(const FormStructure& form,
-                           const AutofillField& field);
-
-    void OnDidShowSuggestions(const FormStructure& form,
-                              const AutofillField& field,
-                              const base::TimeTicks& form_parsed_timestamp,
-                              AutofillSyncSigninState sync_state);
-
-    void OnDidSelectMaskedServerCardSuggestion(
-        const base::TimeTicks& form_parsed_timestamp,
-        AutofillSyncSigninState sync_state);
-
-    // In case of masked cards, caller must make sure this gets called before
-    // the card is upgraded to a full card.
-    void OnDidFillSuggestion(const CreditCard& credit_card,
-                             const FormStructure& form,
-                             const AutofillField& field,
-                             AutofillSyncSigninState sync_state);
-
-    void OnDidFillSuggestion(const AutofillProfile& profile,
-                             const FormStructure& form,
-                             const AutofillField& field,
-                             AutofillSyncSigninState sync_state);
-
-    void OnWillSubmitForm(AutofillSyncSigninState sync_state);
-
-    void OnFormSubmitted(bool force_logging,
-                         const CardNumberStatus card_number_status,
-                         AutofillSyncSigninState sync_state);
-
-    void SetBankNameAvailable();
-
-    void OnDidSeeFillableDynamicForm(AutofillSyncSigninState sync_state);
-
-    void OnDidRefill(AutofillSyncSigninState sync_state);
-
-    void OnSubsequentRefillAttempt(AutofillSyncSigninState sync_state);
-
-   private:
-    void Log(FormEvent event) const;
-    void Log(BankNameDisplayedFormEvent event) const;
-
-    bool is_for_credit_card_;
-    bool is_in_main_frame_;
-    size_t server_record_type_count_;
-    size_t local_record_type_count_;
-    bool is_context_secure_;
-    bool has_logged_interacted_;
-    bool has_logged_popup_suppressed_;
-    bool has_logged_suggestions_shown_;
-    bool has_logged_masked_server_card_suggestion_selected_;
-    bool has_logged_suggestion_filled_;
-    bool has_logged_will_submit_;
-    bool has_logged_submitted_;
-    bool has_logged_bank_name_available_;
-    bool logged_suggestion_filled_was_server_data_;
-    bool logged_suggestion_filled_was_masked_server_card_;
-
-    // The last field that was polled for suggestions.
-    FormFieldData last_polled_field_;
-
-    FormInteractionsUkmLogger*
-        form_interactions_ukm_logger_;  // Weak reference.
-
-    AutofillSyncSigninState sync_state_ =
-        AutofillSyncSigninState::kNumSyncStates;
-  };
+  static const char* GetMetricsSyncStateSuffix(
+      AutofillSyncSigninState sync_state);
 
  private:
   static void Log(AutocompleteEvent event);
diff --git a/components/autofill/core/browser/autofill_metrics_unittest.cc b/components/autofill/core/browser/autofill_metrics_unittest.cc
index 8dcda40..03baf52 100644
--- a/components/autofill/core/browser/autofill_metrics_unittest.cc
+++ b/components/autofill/core/browser/autofill_metrics_unittest.cc
@@ -23,6 +23,9 @@
 #include "base/time/time.h"
 #include "components/autofill/core/browser/autofill_external_delegate.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
+#include "components/autofill/core/browser/metrics/address_form_event_logger.h"
+#include "components/autofill/core/browser/metrics/credit_card_form_event_logger.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
 #include "components/autofill/core/browser/mock_autocomplete_history_manager.h"
 #include "components/autofill/core/browser/payments/test_payments_client.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
@@ -3542,8 +3545,8 @@
   base::HistogramTester histogram_tester;
   autofill_manager_->OnFormsSeen(forms, base::TimeTicks());
   histogram_tester.ExpectUniqueSample(
-      "Autofill.FormEvents.CreditCard.WithNoData",
-      AutofillMetrics::FORM_EVENT_DID_PARSE_FORM, 1);
+      "Autofill.FormEvents.CreditCard.WithNoData", FORM_EVENT_DID_PARSE_FORM,
+      1);
 }
 
 // Test that we log interacted form event for credit cards related.
@@ -3576,12 +3579,11 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->OnQueryFormFieldAutofill(
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
+    histogram_tester.ExpectUniqueSample("Autofill.FormEvents.CreditCard",
+                                        FORM_EVENT_INTERACTED_ONCE, 1);
     histogram_tester.ExpectUniqueSample(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
-    histogram_tester.ExpectUniqueSample(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        credit_card_form_events_frame_histogram_, FORM_EVENT_INTERACTED_ONCE,
+        1);
   }
 
   // Reset the autofill manager state.
@@ -3595,12 +3597,11 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     autofill_manager_->OnQueryFormFieldAutofill(
         1, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
+    histogram_tester.ExpectUniqueSample("Autofill.FormEvents.CreditCard",
+                                        FORM_EVENT_INTERACTED_ONCE, 1);
     histogram_tester.ExpectUniqueSample(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
-    histogram_tester.ExpectUniqueSample(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        credit_card_form_events_frame_histogram_, FORM_EVENT_INTERACTED_ONCE,
+        1);
   }
 }
 
@@ -3633,18 +3634,14 @@
     // Simulating popup being suppressed.
     base::HistogramTester histogram_tester;
     autofill_manager_->DidSuppressPopup(form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_POPUP_SUPPRESSED, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_POPUP_SUPPRESSED, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
   }
 
   autofill_manager_->Reset();
@@ -3655,18 +3652,14 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->DidSuppressPopup(form, field);
     autofill_manager_->DidSuppressPopup(form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 2);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_POPUP_SUPPRESSED, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_POPUP_SUPPRESSED, 2);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
   }
 }
 
@@ -3699,18 +3692,14 @@
     // Simulating new popup being shown.
     base::HistogramTester histogram_tester;
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -3727,18 +3716,14 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -3755,18 +3740,14 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->DidShowSuggestions(false /* is_new_popup */, form,
                                           field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 0);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 0);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 0);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 0);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -3787,21 +3768,17 @@
     autofill_manager_->OnQueryFormFieldAutofill(
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -3817,21 +3794,17 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -3849,21 +3822,17 @@
     autofill_manager_->OnQueryFormFieldAutofill(
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -3879,21 +3848,17 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -3938,18 +3903,16 @@
         autofill_manager_->MakeFrontendID(guid, std::string()));
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -3969,18 +3932,16 @@
         autofill_manager_->MakeFrontendID(guid, std::string()));
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 2);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 2);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 2);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 2);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE, 1);
   }
 }
 
@@ -4020,18 +3981,16 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(guid, std::string()));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+                                       1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+                                       1);
   }
 
   // Reset the autofill manager state.
@@ -4052,18 +4011,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE, 1);
   }
 
   // Recreating cards as the previous test should have upgraded the masked
@@ -4084,18 +4041,16 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(guid, std::string()));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED, 1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE,
+                                       1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE,
+                                       1);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -4117,18 +4072,16 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(guid, std::string()));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED, 2);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED, 2);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+                                       1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+                                       1);
   }
 
   // Recreate masked server cards with bank names.
@@ -4154,7 +4107,7 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -4179,7 +4132,7 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -4203,7 +4156,7 @@
         autofill_manager_->MakeFrontendID(guid, std::string()));
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -4227,7 +4180,7 @@
         autofill_manager_->MakeFrontendID(guid, std::string()));
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.BankNameDisplayed",
-        AutofillMetrics::
+        CreditCardFormEventLogger::
             FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE,
         1);
   }
@@ -4342,8 +4295,7 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD,
-      1);
+      FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD, 1);
 }
 
 TEST_P(AutofillMetricsIFrameTest,
@@ -4384,12 +4336,10 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_WRONG_SIZE_CARD,
       1);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_WRONG_SIZE_CARD,
       1);
 }
@@ -4433,12 +4383,10 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_FAIL_LUHN_CHECK_CARD,
       1);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_FAIL_LUHN_CHECK_CARD,
       1);
 }
@@ -4483,12 +4431,10 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD,
       1);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD,
       1);
 }
@@ -4533,12 +4479,10 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
       1);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
       1);
 }
@@ -4588,31 +4532,25 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
       0);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
       0);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD,
       0);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
       0);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.CreditCard",
-      AutofillMetrics::FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD,
-      0);
+      FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD, 0);
   histogram_tester.ExpectBucketCount(
       credit_card_form_events_frame_histogram_,
-      AutofillMetrics::
           FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
       0);
 }
@@ -4652,8 +4590,7 @@
                                      SubmissionSource::FORM_SUBMISSION);
   histogram_tester.ExpectBucketCount(
       "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD,
-      0);
+      FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD, 0);
 }
 
 // Test that we log submitted form events for credit cards.
@@ -4695,16 +4632,16 @@
 
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
 
     VerifySubmitFormUkm(test_ukm_recorder_, form,
                         AutofillMetrics::NON_FILLABLE_FORM_OR_NEW_DATA,
@@ -4728,16 +4665,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
 
     VerifyFormInteractionUkm(
         test_ukm_recorder_, form, UkmSuggestionsShownType::kEntryName,
@@ -4776,16 +4713,16 @@
     autofill_manager_->Reset();
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
 
     VerifyFormInteractionUkm(
         test_ukm_recorder_, form, UkmSuggestionsShownType::kEntryName,
@@ -4823,16 +4760,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
 
     VerifyFormInteractionUkm(
         test_ukm_recorder_, form, UkmSuggestionFilledType::kEntryName,
@@ -4869,16 +4806,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
 
     VerifyFormInteractionUkm(
         test_ukm_recorder_, form, UkmSuggestionFilledType::kEntryName,
@@ -4916,18 +4853,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE, 1);
 
     VerifyFormInteractionUkm(
         test_ukm_recorder_, form, UkmSuggestionFilledType::kEntryName,
@@ -5002,70 +4937,66 @@
 
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
   }
@@ -5084,70 +5015,66 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       0);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
 
@@ -5209,16 +5136,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
   }
 
   // Reset the autofill manager state.
@@ -5235,16 +5162,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -5264,16 +5191,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -5294,16 +5221,16 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -5322,18 +5249,16 @@
                                        "6011000990139424");
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
-        1);
+        FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE, 1);
   }
 
   // Recreating cards as the previous test should have upgraded the masked
@@ -5357,70 +5282,66 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics ::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics ::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
   }
@@ -5438,70 +5359,66 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       0);
+    histogram_tester.ExpectBucketCount(credit_card_form_events_frame_histogram_,
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         credit_card_form_events_frame_histogram_,
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
   }
@@ -5543,12 +5460,11 @@
 
   base::HistogramTester histogram_tester;
   autofill_manager_->OnFormsSeen(forms, base::TimeTicks());
+  histogram_tester.ExpectUniqueSample("Autofill.FormEvents.Address.WithNoData",
+                                      FORM_EVENT_DID_PARSE_FORM, 1);
   histogram_tester.ExpectUniqueSample(
-      "Autofill.FormEvents.Address.WithNoData",
-      AutofillMetrics::FORM_EVENT_DID_PARSE_FORM, 1);
-  histogram_tester.ExpectUniqueSample(
-      "Autofill.FormEvents.CreditCard.WithNoData",
-      AutofillMetrics::FORM_EVENT_DID_PARSE_FORM, 1);
+      "Autofill.FormEvents.CreditCard.WithNoData", FORM_EVENT_DID_PARSE_FORM,
+      1);
 }
 
 // Test that we log parsed form events for address.
@@ -5578,9 +5494,8 @@
 
   base::HistogramTester histogram_tester;
   autofill_manager_->OnFormsSeen(forms, base::TimeTicks());
-  histogram_tester.ExpectUniqueSample(
-      "Autofill.FormEvents.Address.WithNoData",
-      AutofillMetrics::FORM_EVENT_DID_PARSE_FORM, 1);
+  histogram_tester.ExpectUniqueSample("Autofill.FormEvents.Address.WithNoData",
+                                      FORM_EVENT_DID_PARSE_FORM, 1);
 }
 
 // Test that we log interacted form events for address.
@@ -5613,9 +5528,8 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->OnQueryFormFieldAutofill(
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
-    histogram_tester.ExpectUniqueSample(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+    histogram_tester.ExpectUniqueSample("Autofill.FormEvents.Address",
+                                        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -5629,9 +5543,8 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     autofill_manager_->OnQueryFormFieldAutofill(
         1, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
-    histogram_tester.ExpectUniqueSample(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+    histogram_tester.ExpectUniqueSample("Autofill.FormEvents.Address",
+                                        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 }
 
@@ -5666,12 +5579,10 @@
     // Simulating new popup being shown.
     base::HistogramTester histogram_tester;
     autofill_manager_->DidSuppressPopup(form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_POPUP_SUPPRESSED, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -5683,12 +5594,10 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->DidSuppressPopup(form, field);
     autofill_manager_->DidSuppressPopup(form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_POPUP_SUPPRESSED, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_POPUP_SUPPRESSED_ONCE, 1);
   }
 }
 
@@ -5723,12 +5632,10 @@
     // Simulating new popup being shown.
     base::HistogramTester histogram_tester;
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -5745,12 +5652,10 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
     autofill_manager_->DidShowSuggestions(true /* is_new_popup */, form, field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 1);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -5767,12 +5672,10 @@
     base::HistogramTester histogram_tester;
     autofill_manager_->DidShowSuggestions(false /* is_new_popup */, form,
                                           field);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SUGGESTIONS_SHOWN_ONCE, 0);
     // Check that the bank name histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(0, histogram_tester.GetTotalCountsForPrefix(
@@ -5815,12 +5718,11 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(std::string(), guid));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+                                       1);
   }
 
   // Reset the autofill manager state.
@@ -5828,7 +5730,7 @@
   autofill_manager_->AddSeenForm(form, field_types, field_types);
 
   {
-    // Simulating selecting/filling a local profile suggestion.
+    // Simulating selecting/filling a local profile suggestion more than once.
     base::HistogramTester histogram_tester;
     std::string guid(kTestGuid);  // local profile
     autofill_manager_->FillOrPreviewForm(
@@ -5837,12 +5739,11 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(std::string(), guid));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+                                       1);
   }
 
   // Create a server profile and reset the autofill manager state.
@@ -5857,12 +5758,11 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(std::string(), guid));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE,
+                                       1);
   }
 
   autofill_manager_->Reset();
@@ -5878,12 +5778,11 @@
     autofill_manager_->FillOrPreviewForm(
         AutofillDriver::FORM_DATA_ACTION_FILL, 0, form, form.fields.front(),
         autofill_manager_->MakeFrontendID(std::string(), guid));
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED, 2);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED, 2);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE,
+                                       1);
   }
 }
 
@@ -5923,10 +5822,10 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
 
     VerifySubmitFormUkm(test_ukm_recorder_, form,
                         AutofillMetrics::NON_FILLABLE_FORM_OR_NEW_DATA,
@@ -5952,10 +5851,10 @@
     autofill_manager_->Reset();
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
 
     VerifySubmitFormUkm(test_ukm_recorder_, form,
                         AutofillMetrics::NON_FILLABLE_FORM_OR_NEW_DATA,
@@ -5978,10 +5877,10 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6001,10 +5900,10 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6023,28 +5922,28 @@
 
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
   }
 
   // Reset the autofill manager state.
@@ -6061,36 +5960,34 @@
 
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
   }
@@ -6132,10 +6029,10 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
   }
 
   // Reset the autofill manager state.
@@ -6152,10 +6049,10 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6175,10 +6072,10 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6196,36 +6093,34 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       1);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
   }
@@ -6243,36 +6138,34 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
         0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE, 0);
+    histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                       FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+                                       0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
+        FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address",
-        AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
-    histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.Address",
-        AutofillMetrics::
             FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
         0);
   }
@@ -6312,8 +6205,8 @@
     autofill_manager_->OnQueryFormFieldAutofill(
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
-        "Autofill.FormEvents.CreditCard.WithNoData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        "Autofill.FormEvents.CreditCard.WithNoData", FORM_EVENT_INTERACTED_ONCE,
+        1);
   }
 
   // Reset the autofill manager state.
@@ -6330,7 +6223,7 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
         "Autofill.FormEvents.CreditCard.WithOnlyLocalData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6347,7 +6240,7 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
         "Autofill.FormEvents.CreditCard.WithOnlyServerData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6364,7 +6257,7 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
         "Autofill.FormEvents.CreditCard.WithOnlyServerData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 
   // Reset the autofill manager state.
@@ -6381,7 +6274,7 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
         "Autofill.FormEvents.CreditCard.WithBothServerAndLocalData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 }
 
@@ -6417,8 +6310,8 @@
     autofill_manager_->OnQueryFormFieldAutofill(
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
-        "Autofill.FormEvents.Address.WithNoData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        "Autofill.FormEvents.Address.WithNoData", FORM_EVENT_INTERACTED_ONCE,
+        1);
   }
 
   // Reset the autofill manager state.
@@ -6433,7 +6326,7 @@
         0, form, field, gfx::RectF(), /*autoselect_first_suggestion=*/false);
     histogram_tester.ExpectUniqueSample(
         "Autofill.FormEvents.Address.WithOnlyLocalData",
-        AutofillMetrics::FORM_EVENT_INTERACTED_ONCE, 1);
+        FORM_EVENT_INTERACTED_ONCE, 1);
   }
 }
 
@@ -8065,13 +7958,12 @@
                                        SubmissionSource::FORM_SUBMISSION);
     histograms.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.OnNonsecurePage",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
-    histograms.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+    histograms.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                 FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
     histograms.ExpectBucketCount(
         "Autofill.FormEvents.CreditCard.WithOnlyLocalData",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+        FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
   }
 }
 
@@ -8121,12 +8013,10 @@
     base::HistogramTester histograms;
     autofill_manager_->OnFormSubmitted(form, false,
                                        SubmissionSource::FORM_SUBMISSION);
-    histograms.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
-    histograms.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard",
-        AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
+    histograms.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                 FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE, 1);
+    histograms.ExpectBucketCount("Autofill.FormEvents.CreditCard",
+                                 FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
     // Check that the nonsecure histogram was not recorded. ExpectBucketCount()
     // can't be used here because it expects the histogram to exist.
     EXPECT_EQ(
@@ -8288,39 +8178,33 @@
   // Simulate checking whether to fill a dynamic form after the form was filled
   // initially.
   autofill_manager_->ShouldTriggerRefill(form_structure);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DID_DYNAMIC_REFILL, 0);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 0);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM,
+                                     1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DID_DYNAMIC_REFILL, 0);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 0);
 
   // Trigger a refill, the refill metric should be updated.
   autofill_manager_->TriggerRefill(form);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DID_DYNAMIC_REFILL, 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 0);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM,
+                                     1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DID_DYNAMIC_REFILL, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 0);
 
   // Trigger a check to see whether a refill should happen. The
   autofill_manager_->ShouldTriggerRefill(form_structure);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 2);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DID_DYNAMIC_REFILL, 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.FormEvents.Address",
-      AutofillMetrics::FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM,
+                                     2);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DID_DYNAMIC_REFILL, 1);
+  histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
+                                     FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL, 1);
 }
 
 // Tests that the LogUserHappinessBySecurityLevel are recorded correctly.
@@ -8556,23 +8440,23 @@
 TEST_F(AutofillMetricsTest, FormEventMetrics_BySyncState) {
   {
     base::HistogramTester histogram_tester;
-    AutofillMetrics::FormEventLogger logger(
-        /*is_for_credit_card=*/true, /*is_in_main_frame=*/false,
+    AddressFormEventLogger logger(
+        /*is_in_main_frame=*/true,
         /*form_interactions_ukm_logger=*/nullptr);
     logger.OnDidSeeFillableDynamicForm(AutofillSyncSigninState::kSignedOut);
     histogram_tester.ExpectBucketCount(
-        "Autofill.FormEvents.CreditCard.WithNoData.SignedOut",
-        AutofillMetrics::FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 1);
+        "Autofill.FormEvents.Address.WithNoData.SignedOut",
+        FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM, 1);
   }
   {
     base::HistogramTester histogram_tester;
-    AutofillMetrics::FormEventLogger logger(
-        /*is_for_credit_card=*/false, /*is_in_main_frame=*/true,
+    AddressFormEventLogger logger(
+        /*is_in_main_frame=*/true,
         /*form_interactions_ukm_logger=*/nullptr);
     logger.OnDidRefill(AutofillSyncSigninState::kSignedIn);
     histogram_tester.ExpectBucketCount(
         "Autofill.FormEvents.Address.WithNoData.SignedIn",
-        AutofillMetrics::FORM_EVENT_DID_DYNAMIC_REFILL, 1);
+        FORM_EVENT_DID_DYNAMIC_REFILL, 1);
   }
 }
 
diff --git a/components/autofill/core/browser/autofill_profile.cc b/components/autofill/core/browser/autofill_profile.cc
index 750b4bb..ac94dac 100644
--- a/components/autofill/core/browser/autofill_profile.cc
+++ b/components/autofill/core/browser/autofill_profile.cc
@@ -828,6 +828,38 @@
   RecordUse();
 }
 
+bool AutofillProfile::HasGreaterFrescocencyThan(
+    const AutofillProfile* other,
+    base::Time comparison_time,
+    bool use_client_validation,
+    bool use_server_validation) const {
+  bool is_valid = (!use_client_validation || IsValidByClient()) &&
+                  (!use_server_validation || IsValidByServer());
+  bool other_is_valid = (!use_client_validation || other->IsValidByClient()) &&
+                        (!use_server_validation || other->IsValidByServer());
+  if (is_valid == other_is_valid)
+    return CompareFrecency(other, comparison_time);
+  if (is_valid && !other_is_valid)
+    return true;
+  return false;
+}
+
+bool AutofillProfile::IsValidByClient() const {
+  for (auto const& it : client_validity_states_) {
+    if (it.second == INVALID)
+      return false;
+  }
+  return true;
+}
+
+bool AutofillProfile::IsValidByServer() const {
+  for (auto const& it : server_validity_states_) {
+    if (it.second == INVALID)
+      return false;
+  }
+  return true;
+}
+
 bool AutofillProfile::IsAnInvalidPhoneNumber(ServerFieldType type) const {
   if (GetValidityState(type, SERVER) == VALID ||
       (type != PHONE_HOME_WHOLE_NUMBER && type != PHONE_HOME_NUMBER &&
@@ -890,6 +922,7 @@
     return;
   }
   DCHECK_EQ(SERVER, validation_source);
+  LOG(ERROR) << __FUNCTION__;
   server_validity_states_[type] = validity;
 }
 
diff --git a/components/autofill/core/browser/autofill_profile.h b/components/autofill/core/browser/autofill_profile.h
index 3d051f90..1eb99230 100644
--- a/components/autofill/core/browser/autofill_profile.h
+++ b/components/autofill/core/browser/autofill_profile.h
@@ -224,6 +224,21 @@
   // use and updates |previous_use_date_| to the last value of |use_date_|.
   void RecordAndLogUse();
 
+  // Returns true if the current profile has greated frescocency than the
+  // |other|. Frescocency is a combination of validation score and frecency to
+  // determine the relevance of the profile. Please see
+  // AutofillDataModel::CompareFrecency.
+  bool HasGreaterFrescocencyThan(const AutofillProfile* other,
+                                 base::Time comparison_time,
+                                 bool use_client_validation,
+                                 bool use_server_validation) const;
+  // Returns false if the profile has any invalid field, according to the client
+  // source of validation.
+  bool IsValidByClient() const;
+  // Returns false if the profile has any invalid field, according to the server
+  // source of validation.
+  bool IsValidByServer() const;
+
   const base::Time& previous_use_date() const { return previous_use_date_; }
   void set_previous_use_date(const base::Time& time) {
     previous_use_date_ = time;
diff --git a/components/autofill/core/browser/autofill_profile_unittest.cc b/components/autofill/core/browser/autofill_profile_unittest.cc
index 2a04523..9e5e493 100644
--- a/components/autofill/core/browser/autofill_profile_unittest.cc
+++ b/components/autofill/core/browser/autofill_profile_unittest.cc
@@ -1216,10 +1216,12 @@
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_STATE,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, ValidityStatesServer) {
   AutofillProfile profile;
+  EXPECT_TRUE(test::GetFullProfile().IsValidByServer());
 
   // The default validity state should be UNVALIDATED.
   EXPECT_EQ(
@@ -1242,6 +1244,7 @@
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_STATE,
                                      AutofillProfile::AutofillProfile::SERVER));
+  EXPECT_FALSE(profile.IsValidByServer());
 }
 
 TEST(AutofillProfileTest, ValidityStates_ClientUnsupportedTypes) {
@@ -1457,6 +1460,7 @@
                            AutofillProfile::AutofillProfile::CLIENT);
   profile.SetValidityState(PHONE_HOME_WHOLE_NUMBER, AutofillProfile::EMPTY,
                            AutofillProfile::AutofillProfile::CLIENT);
+  EXPECT_FALSE(profile.IsValidByClient());
   // 0b01110011010010
   EXPECT_EQ(7378, profile.GetClientValidityBitfieldValue());
 
@@ -1475,6 +1479,7 @@
                            AutofillProfile::AutofillProfile::CLIENT);
   profile.SetValidityState(PHONE_HOME_WHOLE_NUMBER, AutofillProfile::INVALID,
                            AutofillProfile::AutofillProfile::CLIENT);
+  EXPECT_FALSE(profile.IsValidByClient());
   // 0b11001110101101
   EXPECT_EQ(13229, profile.GetClientValidityBitfieldValue());
 }
@@ -1485,24 +1490,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b01
   profile.SetClientValidityFromBitfieldValue(1);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_COUNTRY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b10
   profile.SetClientValidityFromBitfieldValue(2);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(ADDRESS_HOME_COUNTRY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b11
   profile.SetClientValidityFromBitfieldValue(3);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(ADDRESS_HOME_COUNTRY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, SetClientValidityFromBitfieldValue_State) {
@@ -1511,24 +1520,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b0100
   profile.SetClientValidityFromBitfieldValue(4);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_STATE,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b1000
   profile.SetClientValidityFromBitfieldValue(8);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(ADDRESS_HOME_STATE,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b1100
   profile.SetClientValidityFromBitfieldValue(12);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(ADDRESS_HOME_STATE,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, SetClientValidityFromBitfieldValue_Zip) {
@@ -1537,24 +1550,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b010000
   profile.SetClientValidityFromBitfieldValue(16);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_ZIP,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b100000
   profile.SetClientValidityFromBitfieldValue(32);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(ADDRESS_HOME_ZIP,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b110000
   profile.SetClientValidityFromBitfieldValue(48);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(ADDRESS_HOME_ZIP,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, SetClientValidityFromBitfieldValue_City) {
@@ -1563,24 +1580,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b01000000
   profile.SetClientValidityFromBitfieldValue(64);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_CITY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b10000000
   profile.SetClientValidityFromBitfieldValue(128);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(ADDRESS_HOME_CITY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b11000000
   profile.SetClientValidityFromBitfieldValue(192);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(ADDRESS_HOME_CITY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest,
@@ -1590,24 +1611,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b0100000000
   profile.SetClientValidityFromBitfieldValue(256);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(ADDRESS_HOME_DEPENDENT_LOCALITY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b1000000000
   profile.SetClientValidityFromBitfieldValue(512);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(ADDRESS_HOME_DEPENDENT_LOCALITY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b1100000000
   profile.SetClientValidityFromBitfieldValue(768);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(ADDRESS_HOME_DEPENDENT_LOCALITY,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, SetClientValidityFromBitfieldValue_Email) {
@@ -1616,24 +1641,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b010000000000
   profile.SetClientValidityFromBitfieldValue(1024);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(EMAIL_ADDRESS,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b100000000000
   profile.SetClientValidityFromBitfieldValue(2048);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(EMAIL_ADDRESS,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b110000000000
   profile.SetClientValidityFromBitfieldValue(3072);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(EMAIL_ADDRESS,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, SetClientValidityFromBitfieldValue_Phone) {
@@ -1642,24 +1671,28 @@
   // By default all validity statuses should be set to UNVALIDATED, thus the
   // bitfield value should be empty.
   EXPECT_EQ(0, profile.GetClientValidityBitfieldValue());
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b01000000000000
   profile.SetClientValidityFromBitfieldValue(4096);
   EXPECT_EQ(AutofillProfile::EMPTY,
             profile.GetValidityState(PHONE_HOME_WHOLE_NUMBER,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b10000000000000
   profile.SetClientValidityFromBitfieldValue(8192);
   EXPECT_EQ(AutofillProfile::VALID,
             profile.GetValidityState(PHONE_HOME_WHOLE_NUMBER,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_TRUE(profile.IsValidByClient());
 
   // 0b11000000000000
   profile.SetClientValidityFromBitfieldValue(12288);
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(PHONE_HOME_WHOLE_NUMBER,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, SetClientValidityFromBitfieldValue_Mixed) {
@@ -1693,6 +1726,8 @@
             profile.GetValidityState(PHONE_HOME_WHOLE_NUMBER,
                                      AutofillProfile::AutofillProfile::CLIENT));
 
+  EXPECT_FALSE(profile.IsValidByClient());
+
   // 0b11001110101101
   profile.SetClientValidityFromBitfieldValue(13229);
   EXPECT_EQ(AutofillProfile::EMPTY,
@@ -1716,6 +1751,7 @@
   EXPECT_EQ(AutofillProfile::INVALID,
             profile.GetValidityState(PHONE_HOME_WHOLE_NUMBER,
                                      AutofillProfile::AutofillProfile::CLIENT));
+  EXPECT_FALSE(profile.IsValidByClient());
 }
 
 TEST(AutofillProfileTest, GetMetadata) {
@@ -1835,4 +1871,116 @@
   EXPECT_TRUE(profile.EqualsForClientValidationPurpose(profile3));
 }
 
+enum Expectation { GREATER, LESS, EQUAL };
+
+struct CompareFrescocencyTestCase {
+  const AutofillProfile::ValidityState client_validity_state_a;
+  const AutofillProfile::ValidityState server_validity_state_a;
+  const AutofillProfile::ValidityState client_validity_state_b;
+  const AutofillProfile::ValidityState server_validity_state_b;
+
+  const bool use_client_validation;
+  const bool use_server_validation;
+  Expectation expectation;
+};
+
+class CompareFrescocencyTest
+    : public testing::TestWithParam<CompareFrescocencyTestCase> {};
+
+TEST_P(CompareFrescocencyTest, CompareFrescocency) {
+  auto test_case = GetParam();
+  AutofillProfile profile_a("00000000-0000-0000-0000-000000000001", "");
+  AutofillProfile profile_b("00000000-0000-0000-0000-000000000002", "");
+
+  profile_a.SetValidityState(EMAIL_ADDRESS, test_case.client_validity_state_a,
+                             AutofillProfile::CLIENT);
+  profile_a.SetValidityState(ADDRESS_HOME_ZIP,
+                             test_case.server_validity_state_a,
+                             AutofillProfile::SERVER);
+
+  profile_b.SetValidityState(ADDRESS_HOME_CITY,
+                             test_case.client_validity_state_b,
+                             AutofillProfile::CLIENT);
+  profile_b.SetValidityState(PHONE_HOME_NUMBER,
+                             test_case.server_validity_state_b,
+                             AutofillProfile::SERVER);
+
+  base::Time now = base::Time::Now();
+
+  if (test_case.expectation == EQUAL) {
+    EXPECT_EQ(profile_a.CompareFrecency(&profile_b, now),
+              profile_a.HasGreaterFrescocencyThan(
+                  &profile_b, now, test_case.use_client_validation,
+                  test_case.use_server_validation));
+    return;
+  }
+
+  EXPECT_EQ(test_case.expectation == GREATER,
+            profile_a.HasGreaterFrescocencyThan(
+                &profile_b, now, test_case.use_client_validation,
+                test_case.use_server_validation));
+  EXPECT_NE(test_case.expectation == GREATER,
+            profile_b.HasGreaterFrescocencyThan(
+                &profile_a, now, test_case.use_client_validation,
+                test_case.use_server_validation));
+}
+
+INSTANTIATE_TEST_CASE_P(
+    AutofillProfileTest,
+    CompareFrescocencyTest,
+    testing::Values(
+        CompareFrescocencyTestCase{
+            AutofillProfile::VALID, AutofillProfile::INVALID,
+            AutofillProfile::VALID, AutofillProfile::UNVALIDATED, false, false,
+            EQUAL},
+        CompareFrescocencyTestCase{
+            AutofillProfile::INVALID, AutofillProfile::VALID,
+            AutofillProfile::VALID, AutofillProfile::INVALID, false, false,
+            EQUAL},
+        CompareFrescocencyTestCase{
+            AutofillProfile::INVALID, AutofillProfile::VALID,
+            AutofillProfile::VALID, AutofillProfile::INVALID, false, true,
+            GREATER},
+        CompareFrescocencyTestCase{
+            AutofillProfile::INVALID, AutofillProfile::INVALID,
+            AutofillProfile::VALID, AutofillProfile::INVALID, false, true,
+            EQUAL},
+        CompareFrescocencyTestCase{
+            AutofillProfile::INVALID, AutofillProfile::VALID,
+            AutofillProfile::VALID, AutofillProfile::VALID, false, true, EQUAL},
+        CompareFrescocencyTestCase{
+            AutofillProfile::INVALID, AutofillProfile::INVALID,
+            AutofillProfile::VALID, AutofillProfile::UNVALIDATED, false, true,
+            LESS},
+        CompareFrescocencyTestCase{AutofillProfile::INVALID,
+                                   AutofillProfile::VALID,
+                                   AutofillProfile::VALID,
+                                   AutofillProfile::INVALID, true, true, EQUAL},
+        CompareFrescocencyTestCase{AutofillProfile::INVALID,
+                                   AutofillProfile::INVALID,
+                                   AutofillProfile::UNVALIDATED,
+                                   AutofillProfile::VALID, true, true, LESS},
+        CompareFrescocencyTestCase{
+            AutofillProfile::VALID, AutofillProfile::VALID,
+            AutofillProfile::VALID, AutofillProfile::VALID, true, true, EQUAL},
+        CompareFrescocencyTestCase{
+            AutofillProfile::VALID, AutofillProfile::UNVALIDATED,
+            AutofillProfile::VALID, AutofillProfile::INVALID, true, true,
+            GREATER},
+        CompareFrescocencyTestCase{
+            AutofillProfile::VALID, AutofillProfile::INVALID,
+            AutofillProfile::INVALID, AutofillProfile::VALID, true, false,
+            GREATER},
+        CompareFrescocencyTestCase{AutofillProfile::INVALID,
+                                   AutofillProfile::INVALID,
+                                   AutofillProfile::UNVALIDATED,
+                                   AutofillProfile::VALID, true, false, LESS},
+        CompareFrescocencyTestCase{
+            AutofillProfile::VALID, AutofillProfile::INVALID,
+            AutofillProfile::VALID, AutofillProfile::VALID, true, false, EQUAL},
+        CompareFrescocencyTestCase{
+            AutofillProfile::VALID, AutofillProfile::UNVALIDATED,
+            AutofillProfile::INVALID, AutofillProfile::INVALID, true, false,
+            GREATER}));
+
 }  // namespace autofill
diff --git a/components/autofill/core/browser/metrics/address_form_event_logger.cc b/components/autofill/core/browser/metrics/address_form_event_logger.cc
new file mode 100644
index 0000000..9d3d47d
--- /dev/null
+++ b/components/autofill/core/browser/metrics/address_form_event_logger.cc
@@ -0,0 +1,87 @@
+// Copyright 2019 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/autofill/core/browser/metrics/address_form_event_logger.h"
+
+#include "base/metrics/user_metrics.h"
+#include "base/metrics/user_metrics_action.h"
+#include "components/autofill/core/browser/autofill_data_model.h"
+#include "components/autofill/core/browser/autofill_metrics.h"
+#include "components/autofill/core/browser/autofill_profile.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
+
+namespace autofill {
+
+AddressFormEventLogger::AddressFormEventLogger(
+    bool is_in_main_frame,
+    AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger)
+    : FormEventLoggerBase("Address",
+                          is_in_main_frame,
+                          form_interactions_ukm_logger) {}
+
+AddressFormEventLogger::~AddressFormEventLogger() = default;
+
+void AddressFormEventLogger::OnDidFillSuggestion(
+    const AutofillProfile& profile,
+    const FormStructure& form,
+    const AutofillField& field,
+    AutofillSyncSigninState sync_state) {
+  AutofillProfile::RecordType record_type = profile.record_type();
+  sync_state_ = sync_state;
+
+  form_interactions_ukm_logger_->LogDidFillSuggestion(
+      record_type,
+      /*is_for_for_credit_card=*/false, form, field);
+
+  if (record_type == AutofillProfile::SERVER_PROFILE) {
+    Log(FORM_EVENT_SERVER_SUGGESTION_FILLED);
+  } else {
+    Log(FORM_EVENT_LOCAL_SUGGESTION_FILLED);
+  }
+
+  if (!has_logged_suggestion_filled_) {
+    has_logged_suggestion_filled_ = true;
+    logged_suggestion_filled_was_server_data_ =
+        record_type == AutofillProfile::SERVER_PROFILE;
+    Log(record_type == AutofillProfile::SERVER_PROFILE
+            ? FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE
+            : FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE);
+  }
+
+  base::RecordAction(
+      base::UserMetricsAction("Autofill_FilledProfileSuggestion"));
+}
+
+void AddressFormEventLogger::OnDidSeeFillableDynamicForm(
+    AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  Log(FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM);
+}
+
+void AddressFormEventLogger::OnDidRefill(AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  Log(FORM_EVENT_DID_DYNAMIC_REFILL);
+}
+
+void AddressFormEventLogger::OnSubsequentRefillAttempt(
+    AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  Log(FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL);
+}
+
+void AddressFormEventLogger::RecordPollSuggestions() {
+  base::RecordAction(
+      base::UserMetricsAction("Autofill_PolledProfileSuggestions"));
+}
+
+void AddressFormEventLogger::RecordParseForm() {
+  base::RecordAction(base::UserMetricsAction("Autofill_ParsedProfileForm"));
+}
+
+void AddressFormEventLogger::RecordShowSuggestions() {
+  base::RecordAction(
+      base::UserMetricsAction("Autofill_ShowedProfileSuggestions"));
+}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/metrics/address_form_event_logger.h b/components/autofill/core/browser/metrics/address_form_event_logger.h
new file mode 100644
index 0000000..c44d979
--- /dev/null
+++ b/components/autofill/core/browser/metrics/address_form_event_logger.h
@@ -0,0 +1,42 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_ADDRESS_FORM_EVENT_LOGGER_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_ADDRESS_FORM_EVENT_LOGGER_H_
+
+#include "components/autofill/core/browser/autofill_data_model.h"
+#include "components/autofill/core/browser/autofill_metrics.h"
+#include "components/autofill/core/browser/metrics/form_event_logger_base.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
+
+namespace autofill {
+
+class AddressFormEventLogger : public FormEventLoggerBase {
+ public:
+  AddressFormEventLogger(
+      bool is_in_main_frame,
+      AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger);
+
+  ~AddressFormEventLogger() override;
+
+  void OnDidFillSuggestion(const AutofillProfile& profile,
+                           const FormStructure& form,
+                           const AutofillField& field,
+                           AutofillSyncSigninState sync_state);
+
+  void OnDidSeeFillableDynamicForm(AutofillSyncSigninState sync_state);
+
+  void OnDidRefill(AutofillSyncSigninState sync_state);
+
+  void OnSubsequentRefillAttempt(AutofillSyncSigninState sync_state);
+
+ protected:
+  void RecordPollSuggestions() override;
+  void RecordParseForm() override;
+  void RecordShowSuggestions() override;
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_ADDRESS_FORM_EVENT_LOGGER_H_
\ No newline at end of file
diff --git a/components/autofill/core/browser/metrics/credit_card_form_event_logger.cc b/components/autofill/core/browser/metrics/credit_card_form_event_logger.cc
new file mode 100644
index 0000000..bd316d0
--- /dev/null
+++ b/components/autofill/core/browser/metrics/credit_card_form_event_logger.cc
@@ -0,0 +1,196 @@
+// Copyright 2019 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/autofill/core/browser/metrics/credit_card_form_event_logger.h"
+
+#include <string>
+
+#include "base/metrics/histogram_functions.h"
+#include "base/metrics/user_metrics.h"
+#include "base/metrics/user_metrics_action.h"
+#include "components/autofill/core/browser/autofill_client.h"
+#include "components/autofill/core/browser/autofill_metrics.h"
+#include "components/autofill/core/browser/credit_card.h"
+#include "components/autofill/core/browser/form_data_importer.h"
+#include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
+#include "components/autofill/core/browser/personal_data_manager.h"
+#include "components/autofill/core/browser/validation.h"
+
+namespace autofill {
+
+CreditCardFormEventLogger::CreditCardFormEventLogger(
+    bool is_in_main_frame,
+    AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger,
+    PersonalDataManager* personal_data_manager,
+    AutofillClient* client)
+    : FormEventLoggerBase("CreditCard",
+                          is_in_main_frame,
+                          form_interactions_ukm_logger),
+      personal_data_manager_(personal_data_manager),
+      client_(client) {}
+
+CreditCardFormEventLogger::~CreditCardFormEventLogger() = default;
+
+void CreditCardFormEventLogger::OnDidSelectMaskedServerCardSuggestion(
+    const base::TimeTicks& form_parsed_timestamp,
+    AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  form_interactions_ukm_logger_->LogSelectedMaskedServerCard(
+      form_parsed_timestamp);
+
+  Log(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED);
+  if (!has_logged_masked_server_card_suggestion_selected_) {
+    has_logged_masked_server_card_suggestion_selected_ = true;
+    Log(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE);
+  }
+}
+
+void CreditCardFormEventLogger::SetBankNameAvailable() {
+  has_logged_bank_name_available_ = true;
+}
+
+void CreditCardFormEventLogger::OnDidFillSuggestion(
+    const CreditCard& credit_card,
+    const FormStructure& form,
+    const AutofillField& field,
+    AutofillSyncSigninState sync_state) {
+  CreditCard::RecordType record_type = credit_card.record_type();
+  sync_state_ = sync_state;
+
+  form_interactions_ukm_logger_->LogDidFillSuggestion(
+      record_type,
+      /*is_for_credit_card=*/true, form, field);
+
+  if (record_type == CreditCard::MASKED_SERVER_CARD)
+    Log(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED);
+  else if (record_type == CreditCard::FULL_SERVER_CARD)
+    Log(FORM_EVENT_SERVER_SUGGESTION_FILLED);
+  else
+    Log(FORM_EVENT_LOCAL_SUGGESTION_FILLED);
+
+  if (!has_logged_suggestion_filled_) {
+    has_logged_suggestion_filled_ = true;
+    logged_suggestion_filled_was_server_data_ =
+        record_type == CreditCard::MASKED_SERVER_CARD ||
+        record_type == CreditCard::FULL_SERVER_CARD;
+    logged_suggestion_filled_was_masked_server_card_ =
+        record_type == CreditCard::MASKED_SERVER_CARD;
+    if (record_type == CreditCard::MASKED_SERVER_CARD) {
+      Log(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE);
+      if (has_logged_bank_name_available_) {
+        Log(FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE);
+      }
+    } else if (record_type == CreditCard::FULL_SERVER_CARD) {
+      Log(FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE);
+      if (has_logged_bank_name_available_) {
+        Log(FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE);
+      }
+    } else {
+      Log(FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE);
+    }
+  }
+
+  base::RecordAction(
+      base::UserMetricsAction("Autofill_FilledCreditCardSuggestion"));
+}
+
+void CreditCardFormEventLogger::RecordPollSuggestions() {
+  base::RecordAction(
+      base::UserMetricsAction("Autofill_PolledCreditCardSuggestions"));
+}
+
+void CreditCardFormEventLogger::RecordParseForm() {
+  base::RecordAction(base::UserMetricsAction("Autofill_ParsedCreditCardForm"));
+}
+
+void CreditCardFormEventLogger::RecordShowSuggestions() {
+  base::RecordAction(
+      base::UserMetricsAction("Autofill_ShowedCreditCardSuggestions"));
+}
+
+void CreditCardFormEventLogger::LogWillSubmitForm() {
+  if (!has_logged_suggestion_filled_) {
+    Log(FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE);
+  } else if (logged_suggestion_filled_was_masked_server_card_) {
+    Log(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE);
+  } else if (logged_suggestion_filled_was_server_data_) {
+    Log(FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE);
+  } else {
+    Log(FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE);
+  }
+}
+
+void CreditCardFormEventLogger::LogFormSubmitted() {
+  if (!has_logged_suggestion_filled_) {
+    Log(FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE);
+  } else if (logged_suggestion_filled_was_masked_server_card_) {
+    Log(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE);
+  } else if (logged_suggestion_filled_was_server_data_) {
+    Log(FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE);
+  } else {
+    Log(FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE);
+  }
+}
+
+void CreditCardFormEventLogger::LogUkmInteractedWithForm(
+    FormSignature form_signature) {
+  form_interactions_ukm_logger_->LogInteractedWithForm(
+      /*is_for_credit_card=*/true, local_record_type_count_,
+      server_record_type_count_, form_signature);
+}
+
+void CreditCardFormEventLogger::OnSuggestionsShownOnce() {
+  if (has_logged_bank_name_available_) {
+    Log(FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE);
+  }
+}
+
+void CreditCardFormEventLogger::OnSuggestionsShownSubmittedOnce(
+    const FormStructure& form) {
+  if (!has_logged_suggestion_filled_) {
+    const CreditCard credit_card =
+        client_->GetFormDataImporter()->ExtractCreditCardFromForm(form);
+    Log(GetCardNumberStatusFormEvent(credit_card));
+  }
+}
+
+void CreditCardFormEventLogger::OnLog(const std::string& name,
+                                      FormEvent event) const {
+  // Log in a different histogram for credit card forms on nonsecure pages so
+  // that form interactions on nonsecure pages can be analyzed on their own.
+  if (!is_context_secure_) {
+    base::UmaHistogramEnumeration(name + ".OnNonsecurePage", event,
+                                  NUM_FORM_EVENTS);
+  }
+}
+
+void CreditCardFormEventLogger::Log(BankNameDisplayedFormEvent event) const {
+  DCHECK_LT(event, BANK_NAME_NUM_FORM_EVENTS);
+  const std::string name("Autofill.FormEvents.CreditCard.BankNameDisplayed");
+  base::UmaHistogramEnumeration(name, event, BANK_NAME_NUM_FORM_EVENTS);
+}
+
+FormEvent CreditCardFormEventLogger::GetCardNumberStatusFormEvent(
+    const CreditCard& credit_card) {
+  const base::string16 number = credit_card.number();
+  FormEvent form_event =
+      FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD;
+
+  if (number.empty()) {
+    form_event = FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD;
+  } else if (!HasCorrectLength(number)) {
+    form_event =
+        FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_WRONG_SIZE_CARD;
+  } else if (!PassesLuhnCheck(number)) {
+    form_event =
+        FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_FAIL_LUHN_CHECK_CARD;
+  } else if (personal_data_manager_->IsKnownCard(credit_card)) {
+    form_event = FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD;
+  }
+
+  return form_event;
+}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/metrics/credit_card_form_event_logger.h b/components/autofill/core/browser/metrics/credit_card_form_event_logger.h
new file mode 100644
index 0000000..21d1230b
--- /dev/null
+++ b/components/autofill/core/browser/metrics/credit_card_form_event_logger.h
@@ -0,0 +1,91 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_CREDIT_CARD_FORM_EVENT_LOGGER_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_CREDIT_CARD_FORM_EVENT_LOGGER_H_
+
+#include <string>
+
+#include "components/autofill/core/browser/autofill_client.h"
+#include "components/autofill/core/browser/autofill_data_model.h"
+#include "components/autofill/core/browser/autofill_metrics.h"
+#include "components/autofill/core/browser/credit_card.h"
+#include "components/autofill/core/browser/metrics/form_event_logger_base.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
+#include "components/autofill/core/browser/personal_data_manager.h"
+
+namespace autofill {
+
+class CreditCardFormEventLogger : public FormEventLoggerBase {
+ public:
+  // Form Events for autofill with bank name available for display.
+  enum BankNameDisplayedFormEvent {
+    // A dropdown with suggestions was shown and at least one suggestion has a
+    // bank name. Logged at most once per page load.
+    FORM_EVENT_SUGGESTIONS_SHOWN_WITH_BANK_NAME_AVAILABLE_ONCE = 0,
+    // A server suggestion was used to fill the form and at least one suggestion
+    // has a bank name. Logged at most once per page load.
+    FORM_EVENT_SERVER_SUGGESTION_FILLED_WITH_BANK_NAME_AVAILABLE_ONCE,
+    BANK_NAME_NUM_FORM_EVENTS,
+  };
+
+  CreditCardFormEventLogger(
+      bool is_in_main_frame,
+      AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger,
+      PersonalDataManager* personal_data_manager,
+      AutofillClient* client);
+
+  ~CreditCardFormEventLogger() override;
+
+  inline void set_is_context_secure(bool is_context_secure) {
+    is_context_secure_ = is_context_secure;
+  }
+
+  void OnDidSelectMaskedServerCardSuggestion(
+      const base::TimeTicks& form_parsed_timestamp,
+      AutofillSyncSigninState sync_state);
+
+  void SetBankNameAvailable();
+
+  // In case of masked cards, caller must make sure this gets called before
+  // the card is upgraded to a full card.
+  void OnDidFillSuggestion(const CreditCard& credit_card,
+                           const FormStructure& form,
+                           const AutofillField& field,
+                           AutofillSyncSigninState sync_state);
+
+ protected:
+  // FormEventLoggerBase pure-virtual overrides.
+  void RecordPollSuggestions() override;
+  void RecordParseForm() override;
+  void RecordShowSuggestions() override;
+
+  // FormEventLoggerBase virtual overrides.
+  void LogWillSubmitForm() override;
+  void LogFormSubmitted() override;
+  void LogUkmInteractedWithForm(FormSignature form_signature) override;
+  void OnSuggestionsShownOnce() override;
+  void OnSuggestionsShownSubmittedOnce(const FormStructure& form) override;
+  void OnLog(const std::string& name, FormEvent event) const override;
+
+  // Bringing base class' Log function into scope to allow overloading.
+  using FormEventLoggerBase::Log;
+
+ private:
+  void Log(BankNameDisplayedFormEvent event) const;
+  FormEvent GetCardNumberStatusFormEvent(const CreditCard& credit_card);
+
+  bool is_context_secure_ = false;
+  bool has_logged_bank_name_available_ = false;
+  bool has_logged_masked_server_card_suggestion_selected_ = false;
+  bool logged_suggestion_filled_was_masked_server_card_ = false;
+
+  // Weak references.
+  PersonalDataManager* personal_data_manager_;
+  AutofillClient* client_;
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_CREDIT_CARD_FORM_EVENT_LOGGER_H_
\ No newline at end of file
diff --git a/components/autofill/core/browser/metrics/form_event_logger_base.cc b/components/autofill/core/browser/metrics/form_event_logger_base.cc
new file mode 100644
index 0000000..d68bb03c
--- /dev/null
+++ b/components/autofill/core/browser/metrics/form_event_logger_base.cc
@@ -0,0 +1,191 @@
+// Copyright 2019 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/autofill/core/browser/metrics/form_event_logger_base.h"
+
+#include <string>
+
+#include "base/metrics/histogram_functions.h"
+#include "base/metrics/user_metrics.h"
+#include "base/metrics/user_metrics_action.h"
+#include "base/time/time.h"
+#include "components/autofill/core/browser/autofill_data_model.h"
+#include "components/autofill/core/browser/autofill_field.h"
+#include "components/autofill/core/browser/autofill_metrics.h"
+#include "components/autofill/core/browser/autofill_profile.h"
+#include "components/autofill/core/browser/credit_card.h"
+#include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
+#include "components/autofill/core/browser/sync_utils.h"
+#include "components/autofill/core/common/form_field_data.h"
+#include "components/autofill/core/common/signatures_util.h"
+
+namespace autofill {
+
+FormEventLoggerBase::FormEventLoggerBase(
+    const std::string& form_type_name,
+    bool is_in_main_frame,
+    AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger)
+    : form_type_name_(form_type_name),
+      is_in_main_frame_(is_in_main_frame),
+      form_interactions_ukm_logger_(form_interactions_ukm_logger) {}
+
+FormEventLoggerBase::~FormEventLoggerBase() = default;
+
+void FormEventLoggerBase::OnDidInteractWithAutofillableForm(
+    FormSignature form_signature,
+    AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  if (!has_logged_interacted_) {
+    has_logged_interacted_ = true;
+    LogUkmInteractedWithForm(form_signature);
+    Log(FORM_EVENT_INTERACTED_ONCE);
+  }
+}
+
+void FormEventLoggerBase::OnDidPollSuggestions(
+    const FormFieldData& field,
+    AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  // Record only one poll user action for consecutive polls of the same field.
+  // This is to avoid recording too many poll actions (for example when a user
+  // types in a field, triggering multiple queries) to make the analysis more
+  // simple.
+  if (!field.SameFieldAs(last_polled_field_)) {
+    RecordPollSuggestions();
+    last_polled_field_ = field;
+  }
+}
+
+void FormEventLoggerBase::OnDidParseForm() {
+  Log(FORM_EVENT_DID_PARSE_FORM);
+  RecordParseForm();
+}
+
+void FormEventLoggerBase::OnPopupSuppressed(const FormStructure& form,
+                                            const AutofillField& field) {
+  Log(FORM_EVENT_POPUP_SUPPRESSED);
+  if (!has_logged_popup_suppressed_) {
+    has_logged_popup_suppressed_ = true;
+    Log(FORM_EVENT_POPUP_SUPPRESSED_ONCE);
+  }
+}
+
+void FormEventLoggerBase::OnDidShowSuggestions(
+    const FormStructure& form,
+    const AutofillField& field,
+    const base::TimeTicks& form_parsed_timestamp,
+    AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  form_interactions_ukm_logger_->LogSuggestionsShown(form, field,
+                                                     form_parsed_timestamp);
+
+  Log(FORM_EVENT_SUGGESTIONS_SHOWN);
+  if (!has_logged_suggestions_shown_) {
+    has_logged_suggestions_shown_ = true;
+    Log(FORM_EVENT_SUGGESTIONS_SHOWN_ONCE);
+    OnSuggestionsShownOnce();
+  }
+
+  RecordShowSuggestions();
+}
+
+void FormEventLoggerBase::OnWillSubmitForm(AutofillSyncSigninState sync_state) {
+  sync_state_ = sync_state;
+  // Not logging this kind of form if we haven't logged a user interaction.
+  if (!has_logged_interacted_)
+    return;
+
+  // Not logging twice.
+  if (has_logged_will_submit_)
+    return;
+  has_logged_will_submit_ = true;
+
+  LogWillSubmitForm();
+
+  if (has_logged_suggestions_shown_) {
+    Log(FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE);
+  }
+
+  base::RecordAction(base::UserMetricsAction("Autofill_OnWillSubmitForm"));
+}
+
+void FormEventLoggerBase::OnFormSubmitted(bool force_logging,
+                                          AutofillSyncSigninState sync_state,
+                                          const FormStructure& form) {
+  sync_state_ = sync_state;
+  // Not logging this kind of form if we haven't logged a user interaction.
+  if (!has_logged_interacted_)
+    return;
+
+  // Not logging twice.
+  if (has_logged_submitted_)
+    return;
+  has_logged_submitted_ = true;
+
+  LogFormSubmitted();
+
+  if (has_logged_suggestions_shown_ || force_logging) {
+    Log(FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE);
+    OnSuggestionsShownSubmittedOnce(form);
+  }
+}
+
+void FormEventLoggerBase::Log(FormEvent event) const {
+  DCHECK_LT(event, NUM_FORM_EVENTS);
+  std::string name("Autofill.FormEvents." + form_type_name_);
+  base::UmaHistogramEnumeration(name, event, NUM_FORM_EVENTS);
+
+  // Log again in a different histogram so that iframes can be analyzed on
+  // their own.
+  base::UmaHistogramEnumeration(
+      name + (is_in_main_frame_ ? ".IsInMainFrame" : ".IsInIFrame"), event,
+      NUM_FORM_EVENTS);
+
+  // Allow specialized type of logging.
+  OnLog(name, event);
+
+  // Logging again in a different histogram for segmentation purposes.
+  if (server_record_type_count_ == 0 && local_record_type_count_ == 0)
+    name += ".WithNoData";
+  else if (server_record_type_count_ > 0 && local_record_type_count_ == 0)
+    name += ".WithOnlyServerData";
+  else if (server_record_type_count_ == 0 && local_record_type_count_ > 0)
+    name += ".WithOnlyLocalData";
+  else
+    name += ".WithBothServerAndLocalData";
+  base::UmaHistogramEnumeration(name, event, NUM_FORM_EVENTS);
+  base::UmaHistogramEnumeration(
+      name + AutofillMetrics::GetMetricsSyncStateSuffix(sync_state_), event,
+      NUM_FORM_EVENTS);
+}
+
+void FormEventLoggerBase::LogWillSubmitForm() {
+  if (!has_logged_suggestion_filled_) {
+    Log(FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE);
+  } else if (logged_suggestion_filled_was_server_data_) {
+    Log(FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE);
+  } else {
+    Log(FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE);
+  }
+}
+
+void FormEventLoggerBase::LogFormSubmitted() {
+  if (!has_logged_suggestion_filled_) {
+    Log(FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE);
+  } else if (logged_suggestion_filled_was_server_data_) {
+    Log(FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE);
+  } else {
+    Log(FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE);
+  }
+}
+
+void FormEventLoggerBase::LogUkmInteractedWithForm(
+    FormSignature form_signature) {
+  form_interactions_ukm_logger_->LogInteractedWithForm(
+      /*is_for_credit_card=*/false, local_record_type_count_,
+      server_record_type_count_, form_signature);
+}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/metrics/form_event_logger_base.h b/components/autofill/core/browser/metrics/form_event_logger_base.h
new file mode 100644
index 0000000..be198e7
--- /dev/null
+++ b/components/autofill/core/browser/metrics/form_event_logger_base.h
@@ -0,0 +1,106 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_FORM_EVENT_LOGGER_BASE_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_FORM_EVENT_LOGGER_BASE_H_
+
+#include <string>
+
+#include "components/autofill/core/browser/autofill_data_model.h"
+#include "components/autofill/core/browser/autofill_field.h"
+#include "components/autofill/core/browser/autofill_metrics.h"
+#include "components/autofill/core/browser/autofill_profile.h"
+#include "components/autofill/core/browser/credit_card.h"
+#include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/metrics/form_events.h"
+#include "components/autofill/core/browser/sync_utils.h"
+#include "components/autofill/core/common/form_field_data.h"
+
+namespace autofill {
+
+// Utility to log autofill form events in the relevant histograms depending on
+// the presence of server and/or local data.
+class FormEventLoggerBase {
+ public:
+  FormEventLoggerBase(
+      const std::string& form_type_name,
+      bool is_in_main_frame,
+      AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger);
+
+  inline void set_server_record_type_count(size_t server_record_type_count) {
+    server_record_type_count_ = server_record_type_count;
+  }
+
+  inline void set_local_record_type_count(size_t local_record_type_count) {
+    local_record_type_count_ = local_record_type_count;
+  }
+
+  void OnDidInteractWithAutofillableForm(FormSignature form_signature,
+                                         AutofillSyncSigninState sync_state);
+
+  void OnDidPollSuggestions(const FormFieldData& field,
+                            AutofillSyncSigninState sync_state);
+
+  void OnDidParseForm();
+
+  void OnPopupSuppressed(const FormStructure& form, const AutofillField& field);
+
+  void OnDidShowSuggestions(const FormStructure& form,
+                            const AutofillField& field,
+                            const base::TimeTicks& form_parsed_timestamp,
+                            AutofillSyncSigninState sync_state);
+
+  void OnWillSubmitForm(AutofillSyncSigninState sync_state);
+
+  void OnFormSubmitted(bool force_logging,
+                       AutofillSyncSigninState sync_state,
+                       const FormStructure& form);
+
+ protected:
+  virtual ~FormEventLoggerBase();
+
+  void Log(FormEvent event) const;
+
+  virtual void RecordPollSuggestions() = 0;
+  virtual void RecordParseForm() = 0;
+  virtual void RecordShowSuggestions() = 0;
+
+  virtual void LogWillSubmitForm();
+  virtual void LogFormSubmitted();
+
+  // Only used for UKM backward compatibility since it depends on IsCreditCard.
+  // TODO (crbug.com/925913): Remove IsCreditCard from UKM logs amd replace with
+  // |form_type_name_|.
+  virtual void LogUkmInteractedWithForm(FormSignature form_signature);
+
+  virtual void OnSuggestionsShownOnce() {}
+  virtual void OnSuggestionsShownSubmittedOnce(const FormStructure& form) {}
+  virtual void OnLog(const std::string& name, FormEvent event) const {}
+
+  // Constructor parameters.
+  std::string form_type_name_;
+  bool is_in_main_frame_;
+
+  // State variables.
+  size_t server_record_type_count_ = 0;
+  size_t local_record_type_count_ = 0;
+  bool has_logged_interacted_ = false;
+  bool has_logged_popup_suppressed_ = false;
+  bool has_logged_suggestions_shown_ = false;
+  bool has_logged_suggestion_filled_ = false;
+  bool has_logged_will_submit_ = false;
+  bool has_logged_submitted_ = false;
+  bool logged_suggestion_filled_was_server_data_ = false;
+
+  // The last field that was polled for suggestions.
+  FormFieldData last_polled_field_;
+
+  // Weak reference.
+  AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger_;
+
+  AutofillSyncSigninState sync_state_ = AutofillSyncSigninState::kNumSyncStates;
+};
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_FORM_EVENT_LOGGER_BASE_H_
diff --git a/components/autofill/core/browser/metrics/form_events.h b/components/autofill/core/browser/metrics/form_events.h
new file mode 100644
index 0000000..40cbbe0
--- /dev/null
+++ b/components/autofill/core/browser/metrics/form_events.h
@@ -0,0 +1,97 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_FORM_EVENTS_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_FORM_EVENTS_H_
+
+namespace autofill {
+
+// Form Events for autofill.
+// These events are triggered separetly for address and credit card forms.
+enum FormEvent {
+  // User interacted with a field of this kind of form. Logged only once per
+  // page load.
+  FORM_EVENT_INTERACTED_ONCE = 0,
+  // A dropdown with suggestions was shown.
+  FORM_EVENT_SUGGESTIONS_SHOWN,
+  // Same as above, but recoreded only once per page load.
+  FORM_EVENT_SUGGESTIONS_SHOWN_ONCE,
+  // A local suggestion was used to fill the form.
+  FORM_EVENT_LOCAL_SUGGESTION_FILLED,
+  // A server suggestion was used to fill the form.
+  // When dealing with credit cards, this means a full server card was used
+  // to fill.
+  FORM_EVENT_SERVER_SUGGESTION_FILLED,
+  // A masked server card suggestion was used to fill the form.
+  FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED,
+  // A suggestion was used to fill the form. The origin type (local or server
+  // or masked server card) of the first selected within a page load will
+  // determine which of the following two will be fired.
+  FORM_EVENT_LOCAL_SUGGESTION_FILLED_ONCE,
+  FORM_EVENT_SERVER_SUGGESTION_FILLED_ONCE,
+  FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_FILLED_ONCE,
+  // A form was submitted. Depending on the user filling a local, server,
+  // masked server card or no suggestion one of the following will be
+  // triggered. Only one of the following four will be triggered per page
+  // load.
+  FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE,
+  FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE,
+  FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE,
+  FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
+  // A masked server card suggestion was selected to fill the form.
+  FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED,
+  // Same as above but only triggered once per page load.
+  FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED_ONCE,
+  // An autofillable form is about to be submitted. If the submission is not
+  // interrupted by JavaScript, the "form submitted" events above will also be
+  // logged. Depending on the user filling a local, server, masked server card
+  // or no suggestion one of the following will be triggered, at most once per
+  // page load.
+  FORM_EVENT_NO_SUGGESTION_WILL_SUBMIT_ONCE,
+  FORM_EVENT_LOCAL_SUGGESTION_WILL_SUBMIT_ONCE,
+  FORM_EVENT_SERVER_SUGGESTION_WILL_SUBMIT_ONCE,
+  FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_WILL_SUBMIT_ONCE,
+  // A dropdown with suggestions was shown and a form was submitted after
+  // that.
+  FORM_EVENT_SUGGESTION_SHOWN_SUBMITTED_ONCE,
+  // A dropdown with suggestions was shown and a form is about to be
+  // submitted. If the submission is not interrupted by JavaScript, the "form
+  // submitted" event above will also be logged.
+  FORM_EVENT_SUGGESTION_SHOWN_WILL_SUBMIT_ONCE,
+  // A dropdown with credit card suggestions was shown, but they were not used
+  // to fill the form. Depending on the user submitting a card known by the
+  // browser, submitting a card that the browser does not know about,
+  // submitting with an empty card number, submitting with a card number of
+  // wrong size or submitting with a card number that does not pass luhn
+  // check, one of the following will be triggered. At most one of the
+  // following five metrics will be triggered per submit.
+  FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_KNOWN_CARD,
+  FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_UNKNOWN_CARD,
+  FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_NO_CARD,
+  FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_WRONG_SIZE_CARD,
+  FORM_EVENT_SUBMIT_WITHOUT_SELECTING_SUGGESTIONS_FAIL_LUHN_CHECK_CARD,
+
+  // The form was changed dynamically. This value has been deprecated.
+  FORM_EVENT_DID_SEE_DYNAMIC_FORM,
+  // The form was changed dynamically and was fillable.
+  FORM_EVENT_DID_SEE_FILLABLE_DYNAMIC_FORM,
+  // There was a dynamic change of the form and it got re-filled
+  // automatically.
+  FORM_EVENT_DID_DYNAMIC_REFILL,
+  // The form dynamically changed another time after the refill.
+  FORM_EVENT_DYNAMIC_CHANGE_AFTER_REFILL,
+  // The popup was suppressed because the native view couldn't be created.
+  FORM_EVENT_POPUP_SUPPRESSED,
+  // Same as above, but recoreded only once per page load.
+  FORM_EVENT_POPUP_SUPPRESSED_ONCE,
+
+  // The form was parsed.
+  FORM_EVENT_DID_PARSE_FORM,
+
+  NUM_FORM_EVENTS,
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_METRICS_FORM_EVENTS_H_
\ No newline at end of file
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index 5b723bb..2ceed114 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -1102,12 +1102,20 @@
 
   std::vector<AutofillProfile*> profiles = GetProfiles();
 
-  // Rank the suggestions by frecency (see AutofillDataModel for details).
+  bool use_server_validation = base::FeatureList::IsEnabled(
+      autofill::features::kAutofillProfileServerValidation);
+  bool use_client_validation = base::FeatureList::IsEnabled(
+      autofill::features::kAutofillProfileClientValidation);
+
+  // Rank the suggestions by frescocency (see AutofillDataModel for details).
+  // Frescocency is frecency + validity score.
   const base::Time comparison_time = AutofillClock::Now();
   std::sort(profiles.begin(), profiles.end(),
-            [comparison_time](const AutofillDataModel* a,
-                              const AutofillDataModel* b) {
-              return a->CompareFrecency(b, comparison_time);
+            [comparison_time, use_client_validation, use_server_validation](
+                const AutofillProfile* a, const AutofillProfile* b) {
+              return a->HasGreaterFrescocencyThan(b, comparison_time,
+                                                  use_client_validation,
+                                                  use_server_validation);
             });
 
   return profiles;
@@ -1125,6 +1133,10 @@
   base::string16 field_contents_canon =
       comparator.NormalizeForComparison(field_contents);
 
+  if (base::FeatureList::IsEnabled(
+          autofill::features::kAutofillProfileServerValidation))
+    UpdateProfilesServerValidityMapsIfNeeded(GetProfiles());
+
   // Get the profiles to suggest, which are already sorted.
   std::vector<AutofillProfile*> sorted_profiles = GetProfilesToSuggest();
 
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h
index 2f36e65..48bc4cd 100644
--- a/components/autofill/core/browser/personal_data_manager.h
+++ b/components/autofill/core/browser/personal_data_manager.h
@@ -481,7 +481,7 @@
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            RequestProfileServerValidity);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
-                           GetProfileSuggestions_InvalidDataBasedOnServer);
+                           GetProfileSuggestions_Validity);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerMockTest,
                            UpdateProfilesValidityStates_MoveToJapan);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerMockTest,
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc
index 2ec682e..35664d3b 100644
--- a/components/autofill/core/browser/personal_data_manager_unittest.cc
+++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -2274,6 +2274,135 @@
   }
 }
 
+// Tests that suggestions based on invalid data are handled correctly.
+TEST_F(PersonalDataManagerTest, GetProfileSuggestions_Validity) {
+  // Set up 2 different profiles: one valid and one invalid.
+  AutofillProfile valid_profile(test::GetFullValidProfileForCanada());
+  valid_profile.set_use_date(AutofillClock::Now() -
+                             base::TimeDelta::FromDays(200));
+  valid_profile.set_use_count(1);
+  AddProfileToPersonalDataManager(valid_profile);
+
+  AutofillProfile invalid_profile(base::GenerateGUID(), test::kEmptyOrigin);
+  test::SetProfileInfo(&invalid_profile, "Marion1", "Mitchell", "Morrison",
+                       "invalid email", "Fox",
+                       "123 Zoo St.\nSecond Line\nThird line", "unit 5",
+                       "Hollywood", "CA", "91601", "US", "Invalid Phone");
+  invalid_profile.set_use_date(AutofillClock::Now());
+  invalid_profile.set_use_count(1000);
+  AddProfileToPersonalDataManager(invalid_profile);
+
+  auto profiles = personal_data_->GetProfiles();
+  ASSERT_EQ(2U, profiles.size());
+
+  // Invalid based on client, and not invalid by server. Relying on both
+  // validity sources.
+  {
+    base::test::ScopedFeatureList scoped_features;
+    scoped_features.InitWithFeatures(
+        /*enabled_features=*/{features::kAutofillProfileServerValidation,
+                              features::kAutofillProfileClientValidation},
+        /*disabled_features=*/{features::kAutofillSuppressDisusedAddresses});
+    std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions(
+        AutofillType(EMAIL_ADDRESS), base::string16(), false,
+        std::vector<ServerFieldType>());
+
+    for (auto* profile : profiles) {
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByClient());
+      ASSERT_TRUE(profile->IsValidByServer());
+    }
+    ASSERT_EQ(2U, suggestions.size());
+    EXPECT_EQ(base::ASCIIToUTF16("alice@wonderland.ca"), suggestions[0].value);
+    EXPECT_EQ(base::ASCIIToUTF16("invalid email"), suggestions[1].value);
+  }
+
+  // Set the validity state of ADDRESS_HOME_STATE to INVALID on the prefs.
+  {
+    ProfileValidityMap profile_validity_map;
+    UserProfileValidityMap user_profile_validity_map;
+    std::string autofill_profile_validity;
+    personal_data_->pref_service_->SetString(prefs::kAutofillProfileValidity,
+                                             autofill_profile_validity);
+    (*profile_validity_map.mutable_field_validity_states())[static_cast<int>(
+        ADDRESS_HOME_STATE)] = static_cast<int>(AutofillProfile::INVALID);
+    (*user_profile_validity_map
+          .mutable_profile_validity())[invalid_profile.guid()] =
+        profile_validity_map;
+    ASSERT_TRUE(user_profile_validity_map.SerializeToString(
+        &autofill_profile_validity));
+    base::Base64Encode(autofill_profile_validity, &autofill_profile_validity);
+    personal_data_->pref_service_->SetString(prefs::kAutofillProfileValidity,
+                                             autofill_profile_validity);
+  }
+  // Invalid based on client, and server. Relying on both validity sources.
+  {
+    base::test::ScopedFeatureList scoped_features;
+    scoped_features.InitWithFeatures(
+        /*enabled_features=*/{features::kAutofillProfileClientValidation,
+                              features::kAutofillProfileServerValidation},
+        /*disabled_features=*/{features::kAutofillSuppressDisusedAddresses});
+
+    std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions(
+        AutofillType(EMAIL_ADDRESS), base::string16(), false,
+        std::vector<ServerFieldType>());
+
+    for (auto* profile : profiles) {
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByClient());
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByServer());
+    }
+    ASSERT_EQ(2U, suggestions.size());
+    EXPECT_EQ(base::ASCIIToUTF16("alice@wonderland.ca"), suggestions[0].value);
+    EXPECT_EQ(base::ASCIIToUTF16("invalid email"), suggestions[1].value);
+  }
+  // Invalid based on client, and server. Relying only on the client source.
+  {
+    base::test::ScopedFeatureList scoped_features;
+    scoped_features.InitWithFeatures(
+        /*enabled_features=*/{features::kAutofillProfileClientValidation},
+        /*disabled_features=*/{features::kAutofillSuppressDisusedAddresses,
+                               features::kAutofillProfileServerValidation});
+    std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions(
+        AutofillType(EMAIL_ADDRESS), base::string16(), false,
+        std::vector<ServerFieldType>());
+
+    for (auto* profile : profiles) {
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByClient());
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByServer());
+    }
+    ASSERT_EQ(2U, suggestions.size());
+    EXPECT_EQ(base::ASCIIToUTF16("alice@wonderland.ca"), suggestions[0].value);
+    EXPECT_EQ(base::ASCIIToUTF16("invalid email"), suggestions[1].value);
+  }
+  // Invalid based on client, and server. Relying on server as a validity
+  // source.
+  {
+    base::test::ScopedFeatureList scoped_features;
+    scoped_features.InitWithFeatures(
+        /*enabled_features=*/{features::kAutofillProfileServerValidation},
+        /*disabled_features=*/{features::kAutofillProfileClientValidation,
+                               features::kAutofillSuppressDisusedAddresses});
+
+    std::vector<Suggestion> suggestions = personal_data_->GetProfileSuggestions(
+        AutofillType(EMAIL_ADDRESS), base::string16(), false,
+        std::vector<ServerFieldType>());
+
+    for (auto* profile : profiles) {
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByClient());
+      ASSERT_EQ(profile->guid() == valid_profile.guid(),
+                profile->IsValidByServer());
+    }
+    ASSERT_EQ(2U, suggestions.size());
+    EXPECT_EQ(base::ASCIIToUTF16("alice@wonderland.ca"), suggestions[0].value);
+    EXPECT_EQ(base::ASCIIToUTF16("invalid email"), suggestions[1].value);
+  }
+}
+
 // Test that local and server profiles are not shown if
 // |kAutofillProfileEnabled| is set to |false|.
 TEST_F(PersonalDataManagerTest, GetProfileSuggestions_ProfileAutofillDisabled) {
diff --git a/components/autofill/core/browser/validation.cc b/components/autofill/core/browser/validation.cc
index bce4371..3b4bf96 100644
--- a/components/autofill/core/browser/validation.cc
+++ b/components/autofill/core/browser/validation.cc
@@ -51,7 +51,7 @@
 }
 
 bool IsValidCreditCardNumber(const base::string16& text) {
-  base::string16 number = CreditCard::StripSeparators(text);
+  const base::string16 number = CreditCard::StripSeparators(text);
 
   if (!HasCorrectLength(number))
     return false;
@@ -92,12 +92,13 @@
   return true;
 }
 
-bool PassesLuhnCheck(base::string16& number) {
+// TODO (crbug.com/927767): Add unit tests for this function.
+bool PassesLuhnCheck(const base::string16& number) {
   // Use the Luhn formula [3] to validate the number.
   // [3] http://en.wikipedia.org/wiki/Luhn_algorithm
   int sum = 0;
   bool odd = false;
-  for (base::string16::reverse_iterator iter = number.rbegin();
+  for (base::string16::const_reverse_iterator iter = number.rbegin();
        iter != number.rend(); ++iter) {
     if (!base::IsAsciiDigit(*iter))
       return false;
diff --git a/components/autofill/core/browser/validation.h b/components/autofill/core/browser/validation.h
index 5c7dccf1..470d0755 100644
--- a/components/autofill/core/browser/validation.h
+++ b/components/autofill/core/browser/validation.h
@@ -52,7 +52,7 @@
 bool HasCorrectLength(const base::string16& number);
 
 // Returns true if |number| passes the validation by Luhn formula.
-bool PassesLuhnCheck(base::string16& number);
+bool PassesLuhnCheck(const base::string16& number);
 
 // Returns true if |code| looks like a valid credit card security code
 // for the given credit card type.
diff --git a/components/autofill/core/common/password_form.cc b/components/autofill/core/common/password_form.cc
index 3ee963a..269d477 100644
--- a/components/autofill/core/common/password_form.cc
+++ b/components/autofill/core/common/password_form.cc
@@ -75,7 +75,7 @@
   std::ostringstream submission_event_string_stream;
   submission_event_string_stream << form.submission_event;
   target->SetString("submission_event", submission_event_string_stream.str());
-  target->SetBoolean("only_for_fallback_saving", form.only_for_fallback_saving);
+  target->SetBoolean("only_for_fallback", form.only_for_fallback);
   target->SetBoolean("is_gaia_with_skip_save_password_form",
                      form.is_gaia_with_skip_save_password_form);
   target->SetBoolean("is_new_password_reliable", form.is_new_password_reliable);
@@ -98,7 +98,7 @@
       is_public_suffix_match(false),
       is_affiliation_based_match(false),
       submission_event(SubmissionIndicatorEvent::NONE),
-      only_for_fallback_saving(false),
+      only_for_fallback(false),
       is_gaia_with_skip_save_password_form(false) {}
 
 PasswordForm::PasswordForm(const PasswordForm& other) = default;
@@ -161,7 +161,7 @@
          app_display_name == form.app_display_name &&
          app_icon_url == form.app_icon_url &&
          submission_event == form.submission_event &&
-         only_for_fallback_saving == form.only_for_fallback_saving &&
+         only_for_fallback == form.only_for_fallback &&
          is_gaia_with_skip_save_password_form ==
              form.is_gaia_with_skip_save_password_form &&
          is_new_password_reliable == form.is_new_password_reliable;
diff --git a/components/autofill/core/common/password_form.h b/components/autofill/core/common/password_form.h
index da8d072..ec04ff7 100644
--- a/components/autofill/core/common/password_form.h
+++ b/components/autofill/core/common/password_form.h
@@ -312,9 +312,10 @@
   // out only for submitted forms.
   SubmissionIndicatorEvent submission_event;
 
-  // True iff heuristics declined this form for saving (e.g. only credit card
-  // fields were found). But this form can be saved only with the fallback.
-  bool only_for_fallback_saving;
+  // True iff heuristics declined this form for normal saving or filling (e.g.
+  // only credit card fields were found). But this form can be saved or filled
+  // only with the fallback.
+  bool only_for_fallback;
 
   // True iff this is Gaia form which should be skipped on saving.
   bool is_gaia_with_skip_save_password_form;
diff --git a/components/autofill/core/common/password_form_fill_data.cc b/components/autofill/core/common/password_form_fill_data.cc
index 6e251fa..42b65b4c 100644
--- a/components/autofill/core/common/password_form_fill_data.cc
+++ b/components/autofill/core/common/password_form_fill_data.cc
@@ -29,22 +29,30 @@
   // |username_field| and |password_field| because they are currently not used
   // by the password autocomplete code.
   FormFieldData username_field;
-  username_field.name = form_on_page.username_element;
   username_field.value = preferred_match->username_value;
-  username_field.unique_renderer_id = form_on_page.username_element_renderer_id;
-  result->username_may_use_prefilled_placeholder =
-      form_on_page.username_may_use_prefilled_placeholder;
   FormFieldData password_field;
-  password_field.name = form_on_page.password_element;
   password_field.value = preferred_match->password_value;
-  password_field.unique_renderer_id = form_on_page.password_element_renderer_id;
-  password_field.form_control_type = "password";
+  if (!form_on_page.only_for_fallback) {
+    // Fill fields identifying information only for non-fallback case. In
+    // fallback case, a fill popup is shown on clicking on each password
+    // field so no need in any field identifiers.
+    username_field.name = form_on_page.username_element;
+    username_field.unique_renderer_id =
+        form_on_page.username_element_renderer_id;
+    result->username_may_use_prefilled_placeholder =
+        form_on_page.username_may_use_prefilled_placeholder;
 
-// On iOS, use the unique_id field to refer to elements.
+    password_field.name = form_on_page.password_element;
+    password_field.unique_renderer_id =
+        form_on_page.password_element_renderer_id;
+    password_field.form_control_type = "password";
+
+    // On iOS, use the unique_id field to refer to elements.
 #if defined(OS_IOS)
-  username_field.unique_id = form_on_page.username_element;
-  password_field.unique_id = form_on_page.password_element;
+    username_field.unique_id = form_on_page.username_element;
+    password_field.unique_id = form_on_page.password_element;
 #endif
+  }
 
   // Fill basic form data.
   result->form_renderer_id = form_on_page.form_data.unique_renderer_id;
@@ -79,7 +87,10 @@
   // credentials from |additional_logins| could be used for filling on load. So
   // in case of filling on load nor |password_field| nor |additional_logins|
   // can't be cleared
-  if (!data.wait_for_username)
+  bool is_fallback =
+      data.has_renderer_ids && data.password_field.unique_renderer_id ==
+                                   FormFieldData::kNotSetFormControlRendererId;
+  if (!data.wait_for_username && !is_fallback)
     return data;
   PasswordFormFillData result(data);
   result.password_field.value.clear();
diff --git a/components/contextual_search/content/renderer/contextual_search_wrapper.cc b/components/contextual_search/content/renderer/contextual_search_wrapper.cc
index 105783cb..338c147a 100644
--- a/components/contextual_search/content/renderer/contextual_search_wrapper.cc
+++ b/components/contextual_search/content/renderer/contextual_search_wrapper.cc
@@ -52,7 +52,7 @@
     return;
 
   v8::Local<v8::Object> chrome =
-      content::GetOrCreateChromeObject(isolate, context->Global());
+      content::GetOrCreateChromeObject(isolate, context);
   chrome->Set(gin::StringToV8(isolate, kContextualSearchObjectName),
               wrapper.ToV8());
 }
diff --git a/components/gwp_asan/client/gwp_asan.cc b/components/gwp_asan/client/gwp_asan.cc
index e1e8f45f5..51c4069 100644
--- a/components/gwp_asan/client/gwp_asan.cc
+++ b/components/gwp_asan/client/gwp_asan.cc
@@ -27,9 +27,9 @@
                              base::FEATURE_DISABLED_BY_DEFAULT};
 
 const base::FeatureParam<int> kMaxAllocationsParam{&kGwpAsan, "MaxAllocations",
-                                                   6};
+                                                   7};
 
-const base::FeatureParam<int> kTotalPagesParam{&kGwpAsan, "TotalPages", 20};
+const base::FeatureParam<int> kTotalPagesParam{&kGwpAsan, "TotalPages", 30};
 
 const base::FeatureParam<int> kAllocationSamplingParam{
     &kGwpAsan, "AllocationSamplingFrequency", 1000};
diff --git a/components/invalidation/impl/fcm_invalidation_service.cc b/components/invalidation/impl/fcm_invalidation_service.cc
index ac78e9f..6cbf941 100644
--- a/components/invalidation/impl/fcm_invalidation_service.cc
+++ b/components/invalidation/impl/fcm_invalidation_service.cc
@@ -136,6 +136,9 @@
 
 void FCMInvalidationService::OnActiveAccountLogin() {
   diagnostic_info_.active_account_login = base::Time::Now();
+  diagnostic_info_.was_already_started_on_login = IsStarted();
+  diagnostic_info_.was_ready_to_start_on_login = IsReadyToStart();
+  diagnostic_info_.active_account_id = identity_provider_->GetActiveAccountId();
   if (!IsStarted() && IsReadyToStart())
     StartInvalidator();
 }
@@ -148,6 +151,7 @@
 
 void FCMInvalidationService::OnActiveAccountLogout() {
   diagnostic_info_.active_account_logged_out = base::Time::Now();
+  diagnostic_info_.active_account_id = std::string();
   if (IsStarted()) {
     StopInvalidator();
     if (!client_id_.empty())
@@ -278,6 +282,12 @@
                    base::TimeFormatShortDateAndTime(service_was_stopped));
   status.SetString("InvalidationService.Service-started",
                    base::TimeFormatShortDateAndTime(service_was_started));
+  status.SetBoolean("InvalidationService.Started-on-active-account-login",
+                    was_already_started_on_login);
+  status.SetBoolean(
+      "InvalidationService.Ready-to-start-on-active-account-login",
+      was_ready_to_start_on_login);
+  status.SetString("InvalidationService.Active-account-id", active_account_id);
   return status;
 }
 
diff --git a/components/invalidation/impl/fcm_invalidation_service.h b/components/invalidation/impl/fcm_invalidation_service.h
index 5c24a36..476a0fd 100644
--- a/components/invalidation/impl/fcm_invalidation_service.h
+++ b/components/invalidation/impl/fcm_invalidation_service.h
@@ -95,6 +95,9 @@
     base::Time instance_id_received;
     base::Time service_was_stopped;
     base::Time service_was_started;
+    bool was_already_started_on_login = false;
+    bool was_ready_to_start_on_login = false;
+    std::string active_account_id;
   };
 
   bool IsReadyToStart();
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc
index 9da0bd7..226c160c 100644
--- a/components/omnibox/browser/autocomplete_match.cc
+++ b/components/omnibox/browser/autocomplete_match.cc
@@ -639,32 +639,40 @@
   return answer ? answer->image_url() : GURL(image_url);
 }
 
-void AutocompleteMatch::ApplyPedal() {
+AutocompleteMatch AutocompleteMatch::DerivePedalSuggestion(
+    OmniboxPedal* pedal) const {
+  AutocompleteMatch copy(*this);
+  copy.pedal = pedal;
+  copy.relevance--;
+
   // TODO(orinj): It may make more sense to start from a clean slate and
   // apply only the bits of state relevant to the Pedal, rather than
   // eliminating parts of an existing match that are no longer useful.
   // But while Pedal suggestions are derived from triggering suggestions by
   // copy, it is necessary to be careful that we don't inherit fields that
   // might cause issues.
-  allowed_to_be_default_match = false;
+  copy.allowed_to_be_default_match = false;
 
-  type = Type::PEDAL;
-  destination_url = pedal->GetNavigationUrl();
+  copy.type = Type::PEDAL;
+  copy.destination_url = copy.pedal->GetNavigationUrl();
 
   // Normally this is computed by the match using a TemplateURLService
   // but Pedal URLs are not typical and unknown, and we don't want them to
   // be deduped, e.g. after stripping a query parameter that may do something
   // meaningful like indicate the viewable scope of a settings page.  So here
   // we keep the URL exactly as the Pedal specifies it.
-  stripped_destination_url = destination_url;
+  copy.stripped_destination_url = copy.destination_url;
 
   // Note: Always use empty classifications for empty text and non-empty
   // classifications for non-empty text.
-  const auto& labels = pedal->GetLabelStrings();
-  contents = labels.suggestion_contents;
-  contents_class = {ACMatchClassification(0, ACMatchClassification::NONE)};
-  description = labels.hint;
-  description_class = {ACMatchClassification(0, ACMatchClassification::NONE)};
+  const auto& labels = copy.pedal->GetLabelStrings();
+  copy.contents = labels.suggestion_contents;
+  copy.contents_class = {ACMatchClassification(0, ACMatchClassification::NONE)};
+  copy.description = labels.hint;
+  copy.description_class = {
+      ACMatchClassification(0, ACMatchClassification::NONE)};
+
+  return copy;
 }
 
 void AutocompleteMatch::RecordAdditionalInfo(const std::string& property,
diff --git a/components/omnibox/browser/autocomplete_match.h b/components/omnibox/browser/autocomplete_match.h
index 58d1c9e..77ff01a 100644
--- a/components/omnibox/browser/autocomplete_match.h
+++ b/components/omnibox/browser/autocomplete_match.h
@@ -307,8 +307,10 @@
   // there isn't an image URL, returns an empty GURL (test with is_empty()).
   GURL ImageUrl() const;
 
-  // Changes properties to make use of the Pedal (e.g. content, URLs...).
-  void ApplyPedal();
+  // Returns a new Pedal match suggestion instance derived from this match,
+  // which is considered to be the triggering suggestion.  The new match
+  // will be set to use the given |pedal|.
+  AutocompleteMatch DerivePedalSuggestion(OmniboxPedal* pedal) const;
 
   // Adds optional information to the |additional_info| dictionary.
   void RecordAdditionalInfo(const std::string& property,
diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
index 1da13338..616b42d 100644
--- a/components/omnibox/browser/autocomplete_result.cc
+++ b/components/omnibox/browser/autocomplete_result.cc
@@ -257,25 +257,18 @@
       continue;
     OmniboxPedal* const pedal = provider->FindPedalMatch(match.contents);
     if (pedal) {
-      auto derive_pedal_suggestion = [&match, pedal]() {
-        AutocompleteMatch suggestion = match;
-        suggestion.relevance--;
-        suggestion.pedal = pedal;
-        suggestion.ApplyPedal();
-        return suggestion;
-      };
       const auto insertion = pedals_found.insert(
           {pedal, {pedal_suggestions, pedal_suggestions.size()}});
       if (insertion.second) {
         // This is the first use of the found pedal; add new suggestion.
-        pedal_suggestions.push_back(derive_pedal_suggestion());
+        pedal_suggestions.push_back(match.DerivePedalSuggestion(pedal));
       } else {
         // This is a subsequent use of the found pedal; update its suggestion to
         // ensure that it is derived from the most relevant matching suggestion.
         const auto& map_value_pair = insertion.first->second;
         auto& suggestion = map_value_pair.first[map_value_pair.second];
         if (suggestion.relevance < match.relevance - 1) {
-          suggestion = derive_pedal_suggestion();
+          suggestion = match.DerivePedalSuggestion(pedal);
         }
       }
     }
@@ -285,6 +278,8 @@
   }
 }
 
+// TODO(orinj): This method needs to consider existing Pedal suggestions as in
+// AppendDedicatedPedalMatches above, since it can get called repeatedly.
 void AutocompleteResult::ConvertInSuggestionPedalMatches(
     AutocompleteProviderClient* client) {
   const OmniboxPedalProvider* provider = client->GetPedalProvider();
diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp
index 584fbf8e..7648a4d 100644
--- a/components/page_info_strings.grdp
+++ b/components/page_info_strings.grdp
@@ -328,6 +328,9 @@
     <message name="IDS_PAGE_INFO_USB_DEVICE_SECONDARY_LABEL" desc="The label displayed underneath IDS_PAGE_INFO_USB_DEVICE_LABEL to inform the user that the device name listed is a USB device.">
       USB device
     </message>
+    <message name="IDS_PAGE_INFO_USB_DEVICE_ALLOWED_BY_POLICY_LABEL" desc="The label displayed underneath IDS_PAGE_INFO_USB_DEVICE_LABEL to inform the user that the device name listed is a USB device explicitly allowed by the user's enterprise policy.">
+      USB device allowed by your administrator
+    </message>
     <message name="IDS_PAGE_INFO_DELETE_USB_DEVICE" desc="The tooltip displayed when hovering over the button that will remove permission to access a USB device that the user previously granted to the site.">
       Revoke access
     </message>
diff --git a/components/password_manager/core/browser/form_parsing/form_parser.cc b/components/password_manager/core/browser/form_parsing/form_parser.cc
index 5e906ef8..138640ce 100644
--- a/components/password_manager/core/browser/form_parsing/form_parser.cc
+++ b/components/password_manager/core/browser/form_parsing/form_parser.cc
@@ -131,6 +131,13 @@
          StringMatchesCVC(field.field->id_attribute);
 }
 
+// Returns true if the |field| is suspected to be a credit card related field
+// (credit card owner name, CVC code, expiration date etc).
+bool IsCreditCardField(const ProcessedField& field) {
+  return IsFieldCVC(field) ||
+         field.autocomplete_flag == AutocompleteFlag::kCreditCard;
+}
+
 // Returns true iff |field_type| is one of password types.
 bool IsPasswordPrediction(const CredentialFieldType field_type) {
   switch (field_type) {
@@ -389,8 +396,6 @@
           result->confirmation_password = processed_field.field;
         break;
       case AutocompleteFlag::kCreditCard:
-        NOTREACHED();
-        break;
       case AutocompleteFlag::kNone:
         break;
     }
@@ -415,7 +420,7 @@
     ++*ignored_readonly;
     return false;
   }
-  return !IsFieldCVC(field);
+  return !IsCreditCardField(field);
 }
 
 // Filters the available passwords from |processed_fields| using these rules:
@@ -572,7 +577,8 @@
     const std::vector<ProcessedField>& processed_fields,
     const std::vector<ProcessedField>::const_iterator& first_relevant_password,
     FormDataParser::Mode mode,
-    Interactability best_interactability) {
+    Interactability best_interactability,
+    bool is_fallback) {
   DCHECK(first_relevant_password != processed_fields.end());
 
   // For saving filter out empty fields and fields with values which are not
@@ -593,7 +599,7 @@
       continue;
     if (is_saving && IsProbablyNotUsername(it->field->value))
       continue;
-    if (IsFieldCVC(*it))
+    if (!is_fallback && IsCreditCardField(*it))
       continue;
     if (!username)
       username = it->field;
@@ -641,7 +647,7 @@
     // What is the best interactability among passwords?
     Interactability password_max = Interactability::kUnlikely;
     for (const ProcessedField& processed_field : processed_fields) {
-      if (processed_field.is_password)
+      if (processed_field.is_password && !IsCreditCardField(processed_field))
         password_max = std::max(password_max, processed_field.interactability);
     }
 
@@ -687,12 +693,13 @@
   *username_max = Interactability::kUnlikely;
   for (auto it = processed_fields.begin(); it != first_relevant_password;
        ++it) {
-    if (!it->is_password)
+    if (!it->is_password && !IsCreditCardField(*it))
       *username_max = std::max(*username_max, it->interactability);
   }
 
   found_fields->username = FindUsernameFieldBaseHeuristics(
-      processed_fields, first_relevant_password, mode, *username_max);
+      processed_fields, first_relevant_password, mode, *username_max,
+      found_fields->is_fallback);
   return;
 }
 
@@ -796,8 +803,6 @@
 
     const AutocompleteFlag flag =
         ExtractAutocompleteFlag(field.autocomplete_attribute);
-    if (flag == AutocompleteFlag::kCreditCard)
-      continue;
 
     ProcessedField processed_field = {
         .field = &field, .autocomplete_flag = flag, .is_password = is_password};
@@ -890,7 +895,7 @@
       GetMayUsePrefilledPlaceholder(form_predictions, significant_fields);
   result->is_new_password_reliable =
       significant_fields.is_new_password_reliable;
-  result->only_for_fallback_saving = significant_fields.is_fallback;
+  result->only_for_fallback = significant_fields.is_fallback;
   result->submission_event = form_data.submission_event;
 
   // Set data related to specific fields.
diff --git a/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc b/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
index ceb3c254c5..56ae4f7 100644
--- a/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
+++ b/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
@@ -384,8 +384,7 @@
                     parsed_form->other_possible_usernames);
         }
         if (mode == FormDataParser::Mode::kSaving) {
-          EXPECT_EQ(test_case.fallback_only,
-                    parsed_form->only_for_fallback_saving);
+          EXPECT_EQ(test_case.fallback_only, parsed_form->only_for_fallback);
         }
       }
       if (test_case.readonly_status) {
@@ -921,12 +920,13 @@
   CheckTestData({
       {
           "Simple form, all fields are credit-card-related",
-          {
-              {.form_control_type = "text",
-               .autocomplete_attribute = "cc-name"},
-              {.form_control_type = "password",
-               .autocomplete_attribute = "cc-any-string"},
-          },
+          {{.role = ElementRole::USERNAME,
+            .form_control_type = "text",
+            .autocomplete_attribute = "cc-name"},
+           {.role = ElementRole::CURRENT_PASSWORD,
+            .form_control_type = "password",
+            .autocomplete_attribute = "cc-any-string"}},
+          .fallback_only = true,
       },
       {
           .description_for_logging = "Non-CC fields are considered",
diff --git a/components/password_manager/core/browser/new_password_form_manager.cc b/components/password_manager/core/browser/new_password_form_manager.cc
index f965102..6714108 100644
--- a/components/password_manager/core/browser/new_password_form_manager.cc
+++ b/components/password_manager/core/browser/new_password_form_manager.cc
@@ -17,6 +17,7 @@
 #include "components/password_manager/core/browser/browser_save_password_progress_logger.h"
 #include "components/password_manager/core/browser/form_fetcher_impl.h"
 #include "components/password_manager/core/browser/form_saver.h"
+#include "components/password_manager/core/browser/password_form_filling.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_manager_driver.h"
 #include "components/password_manager/core/browser/password_manager_util.h"
@@ -544,11 +545,10 @@
   }
 }
 
-bool NewPasswordFormManager::ProvisionallySaveIfIsManaged(
+bool NewPasswordFormManager::ProvisionallySave(
     const autofill::FormData& submitted_form,
     const PasswordManagerDriver* driver) {
-  if (!DoesManage(submitted_form, driver))
-    return false;
+  DCHECK(DoesManage(submitted_form, driver));
 
   std::unique_ptr<PasswordForm> parsed_submitted_form =
       ParseFormAndMakeLogging(submitted_form, FormDataParser::Mode::kSaving);
@@ -628,10 +628,10 @@
   // TODO(https://crbug.com/831123). Implement correct treating of federated
   // matches.
   std::vector<const PasswordForm*> federated_matches;
-  likely_form_filling_ = SendFillInformationToRenderer(
-      *client_, driver_.get(), IsBlacklisted(), *observed_password_form.get(),
-      best_matches_, federated_matches, preferred_match_,
-      metrics_recorder_.get());
+  SendFillInformationToRenderer(*client_, driver_.get(), IsBlacklisted(),
+                                *observed_password_form.get(), best_matches_,
+                                federated_matches, preferred_match_,
+                                metrics_recorder_.get());
 }
 
 void NewPasswordFormManager::FillForm(const FormData& observed_form) {
@@ -717,6 +717,11 @@
   if (!parsed_submitted_form_)
     return;
 
+  // Calculate the user's action based on existing matches and the submitted
+  // form.
+  metrics_recorder_->CalculateUserAction(best_matches_,
+                                         *parsed_submitted_form_);
+
   // This function might be called multiple times so set variables that are
   // changed in this function to initial states.
   is_new_login_ = true;
@@ -740,9 +745,6 @@
       // from Android apps, store a copy with the current origin and signon
       // realm. This ensures that on the next visit, a precise match is found.
       is_new_login_ = true;
-      metrics_recorder_->SetUserAction(password_overridden_
-                                           ? UserAction::kOverridePassword
-                                           : UserAction::kChoosePslMatch);
 
       // Update credential to reflect that it has been used for submission.
       // If this isn't updated, then password generation uploads are off for
@@ -781,19 +783,6 @@
       }
     } else {  // Not a PSL match but a match of an already stored credential.
       is_new_login_ = false;
-      if (password_overridden_) {
-        metrics_recorder_->SetUserAction(UserAction::kOverridePassword);
-      } else {
-        // In case |saved_form| is pointing to the same form as
-        // |preferred_match_| and the form was filled on page load, the user
-        // either did not do anything, or re-selected the default option.
-        // Otherwise, the user purposefully chose a credential.
-        metrics_recorder_->SetUserAction(
-            saved_form == preferred_match_ &&
-                    likely_form_filling_ == LikelyFormFilling::kFillOnPageLoad
-                ? UserAction::kNone
-                : UserAction::kChoose);
-      }
     }
   } else if (!best_matches_.empty() &&
              parsed_submitted_form_->type != PasswordForm::TYPE_API &&
@@ -944,8 +933,6 @@
 void NewPasswordFormManager::CreatePendingCredentialsForNewCredentials(
     const PasswordForm& submitted_password_form,
     const base::string16& password_element) {
-  // User typed in a new, unknown username.
-  metrics_recorder_->SetUserAction(UserAction::kOverrideUsernameAndPassword);
   // TODO(https://crbug.com/831123): Replace parsing of the observed form with
   // usage of already parsed submitted form.
   std::unique_ptr<PasswordForm> parsed_observed_form =
diff --git a/components/password_manager/core/browser/new_password_form_manager.h b/components/password_manager/core/browser/new_password_form_manager.h
index 248192eb..d19b383 100644
--- a/components/password_manager/core/browser/new_password_form_manager.h
+++ b/components/password_manager/core/browser/new_password_form_manager.h
@@ -18,7 +18,6 @@
 #include "components/password_manager/core/browser/form_fetcher.h"
 #include "components/password_manager/core/browser/form_parsing/form_parser.h"
 #include "components/password_manager/core/browser/form_parsing/password_field_prediction.h"
-#include "components/password_manager/core/browser/password_form_filling.h"
 #include "components/password_manager/core/browser/password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/password_form_metrics_recorder.h"
 #include "components/password_manager/core/browser/password_form_user_action.h"
@@ -78,8 +77,8 @@
   // |submitted_form| and |driver|) then saves |submitted_form| to
   // |submitted_form_| field, sets |is_submitted| = true and returns true.
   // Otherwise returns false.
-  bool ProvisionallySaveIfIsManaged(const autofill::FormData& submitted_form,
-                                    const PasswordManagerDriver* driver);
+  bool ProvisionallySave(const autofill::FormData& submitted_form,
+                         const PasswordManagerDriver* driver);
   bool is_submitted() { return is_submitted_; }
   void set_not_submitted() { is_submitted_ = false; }
 
@@ -288,9 +287,6 @@
 
   VotesUploader votes_uploader_;
 
-  // Probable filling mechanism used in the renderer for this password form.
-  LikelyFormFilling likely_form_filling_ = LikelyFormFilling::kNoFilling;
-
   // |is_submitted_| = true means that a submission of the managed form was seen
   // and then |submitted_form_| contains the submitted form.
   bool is_submitted_ = false;
diff --git a/components/password_manager/core/browser/new_password_form_manager_unittest.cc b/components/password_manager/core/browser/new_password_form_manager_unittest.cc
index dd0e2146..c4696f3 100644
--- a/components/password_manager/core/browser/new_password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/new_password_form_manager_unittest.cc
@@ -517,8 +517,7 @@
 
 TEST_F(NewPasswordFormManagerTest, SetSubmitted) {
   EXPECT_FALSE(form_manager_->is_submitted());
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   EXPECT_TRUE(form_manager_->is_submitted());
 
   FormData another_form = submitted_form_;
@@ -526,37 +525,13 @@
 #if !defined(OS_IOS)
   // |another_form| is managed because the same |unique_renderer_id| as
   // |observed_form_|.
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(another_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(another_form, &driver_));
   EXPECT_TRUE(form_manager_->is_submitted());
 #endif
-
-  form_manager_->set_not_submitted();
-  EXPECT_FALSE(form_manager_->is_submitted());
-
-  another_form.unique_renderer_id = observed_form_.unique_renderer_id + 1;
-  EXPECT_FALSE(
-      form_manager_->ProvisionallySaveIfIsManaged(another_form, &driver_));
-  EXPECT_FALSE(form_manager_->is_submitted());
-
-  // An identical form but in a different frame (represented here by a null
-  // driver) is also not considered managed.
-  EXPECT_FALSE(
-      form_manager_->ProvisionallySaveIfIsManaged(observed_form_, nullptr));
-  EXPECT_FALSE(form_manager_->is_submitted());
-
-  // Check if the subbmitted form can not be parsed then form manager does not
-  // became submitted.
-  FormData malformed_form = submitted_form_;
-  malformed_form.fields.clear();
-  EXPECT_FALSE(
-      form_manager_->ProvisionallySaveIfIsManaged(malformed_form, &driver_));
-  EXPECT_FALSE(form_manager_->is_submitted());
 }
 
 TEST_F(NewPasswordFormManagerTest, SetSubmittedMultipleTimes) {
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   EXPECT_TRUE(form_manager_->is_submitted());
 
   // Make the submitted form to be invalid password form.
@@ -564,8 +539,7 @@
 
   // Expect that |form_manager_| is still in submitted state because the first
   // time the submited form was valid.
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   EXPECT_TRUE(form_manager_->is_submitted());
   EXPECT_TRUE(form_manager_->GetSubmittedForm());
 }
@@ -635,8 +609,7 @@
   TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
   fetcher_->SetNonFederated({}, 0u);
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   CheckPendingCredentials(parsed_submitted_form_,
                           form_manager_->GetPendingCredentials());
   EXPECT_EQ(UserAction::kOverrideUsernameAndPassword,
@@ -649,8 +622,7 @@
   TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
   fetcher_->SetNonFederated({&saved_match_}, 0u);
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   CheckPendingCredentials(parsed_submitted_form_,
                           form_manager_->GetPendingCredentials());
   EXPECT_EQ(UserAction::kOverrideUsernameAndPassword,
@@ -674,8 +646,7 @@
   for (bool is_incognito : {false, true}) {
     EXPECT_CALL(client_, IsIncognito).WillOnce(Return(is_incognito));
     form_manager_->Fill();
-    EXPECT_TRUE(
-        form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+    EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
     CheckPendingCredentials(/* expected */ saved_match_,
                             form_manager_->GetPendingCredentials());
     EXPECT_EQ(is_incognito ? UserAction::kChoose : UserAction::kNone,
@@ -700,8 +671,7 @@
   submitted_form_.fields[kPasswordFieldIndex].value =
       saved_match_.password_value;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   CheckPendingCredentials(expected, form_manager_->GetPendingCredentials());
   EXPECT_EQ(UserAction::kChoosePslMatch,
             form_manager_->GetMetricsRecorder()->GetUserAction());
@@ -719,8 +689,7 @@
   submitted_form_.fields[kUsernameFieldIndex].value =
       saved_match_.username_value;
   submitted_form_.fields[kPasswordFieldIndex].value = expected.password_value;
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   CheckPendingCredentials(expected, form_manager_->GetPendingCredentials());
   EXPECT_EQ(UserAction::kOverridePassword,
             form_manager_->GetMetricsRecorder()->GetUserAction());
@@ -739,10 +708,9 @@
   PasswordForm expected = saved_match_;
   expected.password_value = ASCIIToUTF16("verystrongpassword");
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   CheckPendingCredentials(expected, form_manager_->GetPendingCredentials());
-  EXPECT_EQ(UserAction::kNone,
+  EXPECT_EQ(UserAction::kOverridePassword,
             form_manager_->GetMetricsRecorder()->GetUserAction());
 }
 
@@ -764,8 +732,7 @@
   expected.action = observed_form_.action;
   expected.password_value = ASCIIToUTF16("verystrongpassword");
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   CheckPendingCredentials(expected, form_manager_->GetPendingCredentials());
 }
 
@@ -784,8 +751,7 @@
 
   form_manager_->ProcessServerPredictions(predictions);
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(anonymous_signup, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(anonymous_signup, &driver_));
   EXPECT_EQ(ASCIIToUTF16("a password"),
             form_manager_->GetPendingCredentials().password_value);
 }
@@ -805,7 +771,7 @@
   submitted_form.fields[kPasswordFieldIndex].value = ASCIIToUTF16("password");
 
   // Expect no crash.
-  form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_);
+  form_manager_->ProvisionallySave(submitted_form, &driver_);
 }
 
 TEST_F(NewPasswordFormManagerTest, IsEqualToSubmittedForm) {
@@ -821,8 +787,7 @@
   // No submitted form yet.
   EXPECT_FALSE(form_manager_->IsEqualToSubmittedForm(submitted_form));
 
-  ASSERT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  ASSERT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
 
   observed_form_.unique_renderer_id += 10;
   observed_form_.fields.clear();
@@ -846,8 +811,7 @@
   submitted_form.fields[kUsernameFieldIndex].value = new_username;
   submitted_form.fields[kPasswordFieldIndex].value = new_password;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   EXPECT_TRUE(form_manager_->IsNewLogin());
 
   MockFormSaver& form_saver = MockFormSaver::Get(form_manager_.get());
@@ -899,8 +863,7 @@
   submitted_form.fields[kPasswordFieldIndex].value =
       psl_saved_match_.password_value;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   EXPECT_TRUE(form_manager_->IsNewLogin());
   EXPECT_TRUE(form_manager_->IsPendingCredentialsPublicSuffixMatch());
 
@@ -939,8 +902,7 @@
   submitted_form.fields[kUsernameFieldIndex].value = username;
   submitted_form.fields[kPasswordFieldIndex].value = new_password;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   EXPECT_FALSE(form_manager_->IsNewLogin());
   EXPECT_TRUE(form_manager_->IsPasswordOverridden());
 
@@ -982,8 +944,7 @@
   base::string16 new_password = saved_match_.password_value + ASCIIToUTF16("1");
   submitted_form.fields[1].value = new_password;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   EXPECT_FALSE(form_manager_->IsNewLogin());
   EXPECT_FALSE(form_manager_->IsPasswordOverridden());
 
@@ -1024,8 +985,7 @@
   base::string16 new_password = saved_match_.password_value + ASCIIToUTF16("1");
   submitted_form.fields[1].value = new_password;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
   EXPECT_TRUE(form_manager_->IsPasswordUpdate());
 
   MockFormSaver& form_saver = MockFormSaver::Get(form_manager_.get());
@@ -1055,7 +1015,7 @@
   TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
   fetcher_->SetNonFederated({}, 0u);
 
-  form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_);
+  form_manager_->ProvisionallySave(submitted_form_, &driver_);
 
   base::string16 new_username =
       parsed_submitted_form_.username_value + ASCIIToUTF16("1");
@@ -1073,7 +1033,7 @@
   TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
   fetcher_->SetNonFederated({&saved_match_}, 0u);
 
-  form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_);
+  form_manager_->ProvisionallySave(submitted_form_, &driver_);
 
   base::string16 new_username = saved_match_.username_value;
   base::string16 expected_password = parsed_submitted_form_.password_value;
@@ -1091,7 +1051,7 @@
   TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
   fetcher_->SetNonFederated({}, 0u);
 
-  form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_);
+  form_manager_->ProvisionallySave(submitted_form_, &driver_);
 
   base::string16 new_password =
       parsed_submitted_form_.password_value + ASCIIToUTF16("1");
@@ -1112,7 +1072,7 @@
   // Emulate submitting form with known username and different password.
   submitted_form_.fields[kUsernameFieldIndex].value =
       saved_match_.username_value;
-  form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_);
+  form_manager_->ProvisionallySave(submitted_form_, &driver_);
 
   // The user changes password to already saved one.
   base::string16 password = saved_match_.password_value;
@@ -1145,8 +1105,7 @@
   fetcher_->SetNonFederated({}, 0u);
 
   // Provisionally save in order to create pending credentials.
-  ASSERT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  ASSERT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
 
   std::unique_ptr<NewPasswordFormManager> cloned_manager =
       form_manager_->Clone();
@@ -1242,8 +1201,7 @@
   ukm::TestAutoSetUkmRecorder test_ukm_recorder;
   fetcher_->SetNonFederated({&saved_match_}, 0u);
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
 
   // Destroy the form manager to destroy the UKM recorder it owns. The recorder
   // only records metrics in its destructor.
@@ -1267,8 +1225,7 @@
 
   FormData malformed_form = submitted_form_;
   malformed_form.fields.clear();
-  EXPECT_FALSE(
-      form_manager_->ProvisionallySaveIfIsManaged(malformed_form, &driver_));
+  EXPECT_FALSE(form_manager_->ProvisionallySave(malformed_form, &driver_));
 
   // Destroy the form manager to destroy the UKM recorder it owns. The recorder
   // only records metrics in its destructor.
@@ -1409,8 +1366,7 @@
   EXPECT_CALL(form_saver, Save(_, _)).WillOnce(SaveArg<0>(&saved_form));
   EXPECT_CALL(client_, UpdateFormManagers());
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form_, &driver_));
   form_manager_->Save();
 
   EXPECT_EQ(submitted_form_.fields[kUsernameFieldIndex].value,
@@ -1643,8 +1599,7 @@
   submitted_form.fields[kUsernameFieldIndex].value = username;
   submitted_form.fields[kPasswordFieldIndex].value = new_password;
 
-  EXPECT_TRUE(
-      form_manager_->ProvisionallySaveIfIsManaged(submitted_form, &driver_));
+  EXPECT_TRUE(form_manager_->ProvisionallySave(submitted_form, &driver_));
 
   MockFormSaver& form_saver = MockFormSaver::Get(form_manager_.get());
   PasswordForm updated_form;
@@ -1688,7 +1643,7 @@
 
   base::HistogramTester histogram_tester;
   //  Simulate successful submission.
-  form_manager_->ProvisionallySaveIfIsManaged(submitted_form_, &driver_);
+  form_manager_->ProvisionallySave(submitted_form_, &driver_);
   form_manager_->GetMetricsRecorder()->LogSubmitPassed();
 
   form_manager_.reset();
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index 4a8b29e..0458d40 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -27,6 +27,7 @@
 #include "components/password_manager/core/browser/form_fetcher_impl.h"
 #include "components/password_manager/core/browser/form_saver.h"
 #include "components/password_manager/core/browser/log_manager.h"
+#include "components/password_manager/core/browser/password_form_filling.h"
 #include "components/password_manager/core/browser/password_manager.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_manager_driver.h"
@@ -557,10 +558,10 @@
     return;
   if (!driver)
     return;
-  likely_form_filling_ = SendFillInformationToRenderer(
-      *client_, driver.get(), IsBlacklisted(), observed_form_, best_matches_,
-      form_fetcher_->GetFederatedMatches(), preferred_match_,
-      GetMetricsRecorder());
+  SendFillInformationToRenderer(*client_, driver.get(), IsBlacklisted(),
+                                observed_form_, best_matches_,
+                                form_fetcher_->GetFederatedMatches(),
+                                preferred_match_, GetMetricsRecorder());
 }
 
 void PasswordFormManager::ProcessLoginPrompt() {
@@ -618,6 +619,10 @@
   DCHECK(submitted_form_);
   ValueElementPair password_to_save(PasswordToSave(*submitted_form_));
 
+  // Calculate the user's action based on existing matches and the submitted
+  // form.
+  metrics_recorder_->CalculateUserAction(best_matches_, *submitted_form_);
+
   // Look for the actually submitted credentials in the list of previously saved
   // credentials that were available to autofilling.
   const PasswordForm* saved_form = FindBestSavedMatch(submitted_form_.get());
@@ -632,9 +637,6 @@
       // from Android apps, store a copy with the current origin and signon
       // realm. This ensures that on the next visit, a precise match is found.
       is_new_login_ = true;
-      metrics_recorder_->SetUserAction(password_overridden_
-                                           ? UserAction::kOverridePassword
-                                           : UserAction::kChoosePslMatch);
 
       // Update credential to reflect that it has been used for submission.
       // If this isn't updated, then password generation uploads are off for
@@ -673,21 +675,6 @@
       }
     } else {  // Not a PSL match but a match of an already stored credential.
       is_new_login_ = false;
-      if (password_overridden_) {
-        // Stored credential matched by username but with mismatching password.
-        // This means the user has overridden the password.
-        metrics_recorder_->SetUserAction(UserAction::kOverridePassword);
-      } else {
-        // In case |saved_form| is pointing to the same form as
-        // |preferred_match_| and the form was filled on page load, the user
-        // either did not do anything, or re-selected the default option.
-        // Otherwise, the user purposefully chose a credential.
-        metrics_recorder_->SetUserAction(
-            saved_form == preferred_match_ &&
-                    likely_form_filling_ == LikelyFormFilling::kFillOnPageLoad
-                ? UserAction::kNone
-                : UserAction::kChoose);
-      }
     }
   } else if (!best_matches_.empty() &&
              submitted_form_->type != autofill::PasswordForm::TYPE_API &&
@@ -834,8 +821,6 @@
 
 void PasswordFormManager::CreatePendingCredentialsForNewCredentials(
     const base::string16& password_element) {
-  // User typed in a new, unknown username.
-  metrics_recorder_->SetUserAction(UserAction::kOverrideUsernameAndPassword);
   pending_credentials_ = observed_form_;
   pending_credentials_.username_element = submitted_form_->username_element;
   pending_credentials_.username_value = submitted_form_->username_value;
diff --git a/components/password_manager/core/browser/password_form_manager.h b/components/password_manager/core/browser/password_form_manager.h
index a1f422a..5f80bff 100644
--- a/components/password_manager/core/browser/password_form_manager.h
+++ b/components/password_manager/core/browser/password_form_manager.h
@@ -22,7 +22,6 @@
 #include "components/autofill/core/common/password_form.h"
 #include "components/autofill/core/common/signatures_util.h"
 #include "components/password_manager/core/browser/form_fetcher.h"
-#include "components/password_manager/core/browser/password_form_filling.h"
 #include "components/password_manager/core/browser/password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/password_form_metrics_recorder.h"
 #include "components/password_manager/core/browser/password_form_user_action.h"
@@ -401,9 +400,6 @@
 
   VotesUploader votes_uploader_;
 
-  // Probable filling mechanism used in the renderer for this password form.
-  LikelyFormFilling likely_form_filling_ = LikelyFormFilling::kNoFilling;
-
   // Takes care of recording metrics and events for this PasswordFormManager.
   // Make sure to call Init before using |*this|, to ensure it is not null.
   scoped_refptr<PasswordFormMetricsRecorder> metrics_recorder_;
diff --git a/components/password_manager/core/browser/password_form_metrics_recorder.cc b/components/password_manager/core/browser/password_form_metrics_recorder.cc
index 82610742cd..51910f6 100644
--- a/components/password_manager/core/browser/password_form_metrics_recorder.cc
+++ b/components/password_manager/core/browser/password_form_metrics_recorder.cc
@@ -287,7 +287,67 @@
   manager_action_ = manager_action;
 }
 
-void PasswordFormMetricsRecorder::SetUserAction(UserAction user_action) {
+void PasswordFormMetricsRecorder::CalculateUserAction(
+    const std::map<base::string16, const autofill::PasswordForm*>& best_matches,
+    const autofill::PasswordForm& submitted_form) {
+  const base::string16& submitted_password =
+      !submitted_form.new_password_value.empty()
+          ? submitted_form.new_password_value
+          : submitted_form.password_value;
+
+  if (submitted_form.username_value.empty()) {
+    // In case the submitted form does not have a username field we do not
+    // autofill. Thus the user either explicitly chose this credential from the
+    // dropdown, or created a new password.
+    for (const auto& match : best_matches) {
+      if (match.second->password_value == submitted_password) {
+        user_action_ = UserAction::kChoose;
+        return;
+      }
+    }
+
+    user_action_ = UserAction::kOverridePassword;
+    return;
+  }
+
+  // In case the submitted form has a username value, check if there is an
+  // existing match with the same username. If not, the user created a new
+  // credential.
+  auto found = best_matches.find(submitted_form.username_value);
+  if (found == best_matches.end()) {
+    user_action_ = UserAction::kOverrideUsernameAndPassword;
+    return;
+  }
+
+  // Otherwise check if the user changed the password.
+  const autofill::PasswordForm* existing_match = found->second;
+  if (existing_match->password_value != submitted_password) {
+    user_action_ = UserAction::kOverridePassword;
+    return;
+  }
+
+  // If the existing match is a PSL match, the user purposefully chose it, since
+  // PSL credentials are not autofilled.
+  if (existing_match->is_public_suffix_match) {
+    user_action_ = UserAction::kChoosePslMatch;
+    return;
+  }
+
+  // Lastly, in case the existing match is not a preferred match, or the form
+  // was not filled on page load, the user purposefully chose a credential.
+  // Otherwise the user either did not do anything, or re-selected the default
+  // option.
+  if (!existing_match->preferred ||
+      manager_action_ != kManagerActionAutofilled) {
+    user_action_ = UserAction::kChoose;
+    return;
+  }
+
+  user_action_ = UserAction::kNone;
+}
+
+void PasswordFormMetricsRecorder::SetUserActionForTesting(
+    UserAction user_action) {
   user_action_ = user_action;
 }
 
diff --git a/components/password_manager/core/browser/password_form_metrics_recorder.h b/components/password_manager/core/browser/password_form_metrics_recorder.h
index 265a010..c406d44 100644
--- a/components/password_manager/core/browser/password_form_metrics_recorder.h
+++ b/components/password_manager/core/browser/password_form_metrics_recorder.h
@@ -7,6 +7,7 @@
 
 #include <stdint.h>
 
+#include <map>
 #include <memory>
 #include <set>
 #include <vector>
@@ -307,10 +308,20 @@
   // is was overridden for the form.
   void ReportSpecPriorityForGeneratedPassword(uint32_t spec_priority);
 
-  // Stores the password manager and user actions. During destruction the last
-  // set values will be logged.
+  // Stores the password manager action. During destruction the last
+  // set value will be logged.
   void SetManagerAction(ManagerAction manager_action);
-  void SetUserAction(UserAction user_action);
+
+  // Calculates the user's action depending on the submitted form and existing
+  // matches. Also inspects |manager_action_| to correctly detect if the
+  // user chose a credential.
+  void CalculateUserAction(
+      const std::map<base::string16, const autofill::PasswordForm*>&
+          best_matches,
+      const autofill::PasswordForm& submitted_form);
+
+  // Allow tests to explicitly set a value for |user_action_|.
+  void SetUserActionForTesting(UserAction user_action);
 
   // Gets the current value of |user_action_|.
   UserAction GetUserAction() const;
diff --git a/components/password_manager/core/browser/password_form_metrics_recorder_unittest.cc b/components/password_manager/core/browser/password_form_metrics_recorder_unittest.cc
index 8d31f79..2f125e1 100644
--- a/components/password_manager/core/browser/password_form_metrics_recorder_unittest.cc
+++ b/components/password_manager/core/browser/password_form_metrics_recorder_unittest.cc
@@ -269,8 +269,7 @@
           test.is_main_frame_secure, &test_ukm_recorder);
 
       recorder->SetManagerAction(test.manager_action);
-      if (test.user_action != UserAction::kNone)
-        recorder->SetUserAction(test.user_action);
+      recorder->SetUserActionForTesting(test.user_action);
       if (test.submit_result ==
           PasswordFormMetricsRecorder::kSubmitResultFailed) {
         recorder->LogSubmitFailed();
@@ -297,30 +296,6 @@
   }
 }
 
-// Test that in the case of a sequence of user actions, only the last one is
-// recorded in ActionsV3 but all are recorded as UMA user actions.
-TEST(PasswordFormMetricsRecorder, ActionSequence) {
-  base::test::ScopedTaskEnvironment scoped_task_environment_;
-  ukm::TestAutoSetUkmRecorder test_ukm_recorder;
-  base::HistogramTester histogram_tester;
-  base::UserActionTester user_action_tester;
-
-  // Use a scoped PasswordFromMetricsRecorder because some metrics are recored
-  // on destruction.
-  {
-    auto recorder = CreatePasswordFormMetricsRecorder(
-        true /*is_main_frame_secure*/, &test_ukm_recorder);
-    recorder->SetManagerAction(
-        PasswordFormMetricsRecorder::kManagerActionAutofilled);
-    recorder->SetUserAction(UserAction::kChoosePslMatch);
-    recorder->SetUserAction(UserAction::kOverrideUsernameAndPassword);
-    recorder->LogSubmitPassed();
-  }
-
-  EXPECT_THAT(histogram_tester.GetAllSamples("PasswordManager.ActionsTakenV3"),
-              ::testing::ElementsAre(base::Bucket(39, 1)));
-}
-
 TEST(PasswordFormMetricsRecorder, SubmittedFormType) {
   base::test::ScopedTaskEnvironment scoped_task_environment_;
   static constexpr struct {
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
index dd8eaf3..fac1a9a 100644
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -453,7 +453,7 @@
     const password_manager::PasswordManagerDriver* driver) {
   // If the form was declined by some heuristics, don't show automatic bubble
   // for it, only fallback saving should be available.
-  if (form.only_for_fallback_saving)
+  if (form.only_for_fallback)
     return;
 
   std::unique_ptr<BrowserSavePasswordProgressLogger> logger;
@@ -893,6 +893,9 @@
     return nullptr;
   }
 
+  if (store_password_called_)
+    return nullptr;
+
   // No need to report PasswordManagerMetricsRecorder::EMPTY_PASSWORD, because
   // PasswordToSave in NewPasswordFormManager DCHECKs that the password is never
   // empty.
@@ -900,36 +903,34 @@
   // TODO(https://crbug.com/831123): Add the
   // ShouldBlockPasswordForSameOriginButDifferentScheme check.
 
-  NewPasswordFormManager* matching_form_manager = nullptr;
-  for (const auto& manager : form_managers_) {
-    if (manager->ProvisionallySaveIfIsManaged(submitted_form, driver)) {
-      matching_form_manager = manager.get();
-      break;
-    }
-  }
+  NewPasswordFormManager* matched_manager =
+      GetMatchedManager(driver, submitted_form);
+
   auto availability =
-      matching_form_manager
+      matched_manager
           ? PasswordManagerMetricsRecorder::FormManagerAvailable::kSuccess
           : PasswordManagerMetricsRecorder::FormManagerAvailable::
                 kMissingProvisionallySave;
   if (client_ && client_->GetMetricsRecorder())
     client_->GetMetricsRecorder()->RecordFormManagerAvailable(availability);
 
-  if (!matching_form_manager && !store_password_called_) {
+  if (!matched_manager) {
     RecordProvisionalSaveFailure(
         PasswordManagerMetricsRecorder::NO_MATCHING_FORM, submitted_form.origin,
         logger.get());
-    matching_form_manager = CreateFormManager(driver, submitted_form);
-    matching_form_manager->ProvisionallySaveIfIsManaged(submitted_form, driver);
+    matched_manager = CreateFormManager(driver, submitted_form);
   }
 
+  if (!matched_manager->ProvisionallySave(submitted_form, driver))
+    return nullptr;
+
   // Set all other form managers to no submission state.
   for (const auto& manager : form_managers_) {
-    if (manager.get() != matching_form_manager)
+    if (manager.get() != matched_manager)
       manager->set_not_submitted();
   }
 
-  return matching_form_manager;
+  return matched_manager;
 }
 
 void PasswordManager::ReportSpecPriorityForGeneratedPassword(
@@ -1001,7 +1002,7 @@
     return false;
   }
 
-  return !submitted_manager->GetPendingCredentials().only_for_fallback_saving;
+  return !submitted_manager->GetPendingCredentials().only_for_fallback;
 }
 
 bool PasswordManager::ShouldBlockPasswordForSameOriginButDifferentScheme(
@@ -1141,7 +1142,7 @@
       submitted_manager->GetSubmittedForm()->origin.SchemeIsCryptographic());
 
   // If the form is eligible only for saving fallback, it shouldn't go here.
-  DCHECK(!submitted_manager->GetPendingCredentials().only_for_fallback_saving);
+  DCHECK(!submitted_manager->GetPendingCredentials().only_for_fallback);
 
   // TODO(https://crbug.com/831123): Remove logging when the old form parsing is
   // removed.
@@ -1180,13 +1181,11 @@
           submitted_manager->GetPendingCredentials());
     }
 
-    if (submitted_manager->HasGeneratedPassword()) {
+    if (submitted_manager->HasGeneratedPassword())
       client_->AutomaticPasswordSave(MoveOwnedSubmittedManager());
-    } else {
-      provisional_save_manager_.reset();
-      owned_submitted_form_manager_.reset();
-    }
   }
+  provisional_save_manager_.reset();
+  owned_submitted_form_manager_.reset();
 }
 
 void PasswordManager::MaybeSavePasswordHash(
@@ -1405,12 +1404,8 @@
 PasswordManager::GetMetricRecorderFromNewPasswordFormManager(
     const FormData& form,
     const PasswordManagerDriver* driver) {
-  for (auto& form_manager : form_managers_) {
-    if (form_manager->DoesManage(form, driver))
-      return form_manager->metrics_recorder();
-  }
-
-  return nullptr;
+  NewPasswordFormManager* matched_manager = GetMatchedManager(driver, form);
+  return matched_manager ? matched_manager->metrics_recorder() : nullptr;
 }
 
 // TODO(https://crbug.com/831123): Implement creating missing
@@ -1421,8 +1416,14 @@
   if (!is_new_form_parsing_for_saving_enabled_)
     return GetMatchingPendingManager(form);
 
+  return GetMatchedManager(driver, form.form_data);
+}
+
+NewPasswordFormManager* PasswordManager::GetMatchedManager(
+    const PasswordManagerDriver* driver,
+    const FormData& form) {
   for (auto& form_manager : form_managers_) {
-    if (form_manager->DoesManage(form.form_data, driver))
+    if (form_manager->DoesManage(form, driver))
       return form_manager.get();
   }
   return nullptr;
diff --git a/components/password_manager/core/browser/password_manager.h b/components/password_manager/core/browser/password_manager.h
index 99a30fd..e6a68ab 100644
--- a/components/password_manager/core/browser/password_manager.h
+++ b/components/password_manager/core/browser/password_manager.h
@@ -286,6 +286,11 @@
       const PasswordManagerDriver* driver,
       const autofill::PasswordForm& form);
 
+  // Returns the manager which manages |form|. |driver| is needed to determine
+  // the match. Returns nullptr when no matched manager is found.
+  NewPasswordFormManager* GetMatchedManager(const PasswordManagerDriver* driver,
+                                            const autofill::FormData& form);
+
   // Note about how a PasswordFormManager can transition from
   // pending_login_managers_ to provisional_save_manager_ and the infobar.
   //
diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc
index 584ca4c..bc1afc3 100644
--- a/components/password_manager/core/browser/password_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -44,6 +44,7 @@
 using autofill::FormData;
 using autofill::FormFieldData;
 using autofill::PasswordForm;
+using autofill::PasswordFormFillData;
 using base::ASCIIToUTF16;
 using base::TestMockTimeTaskRunner;
 using testing::_;
@@ -207,6 +208,20 @@
       static_cast<int64_t>(value));
 }
 
+// Sets |unique_id| in fields on iOS.
+void SetUniqueIdIfNeeded(FormData* form) {
+  // On iOS the unique_id member uniquely addresses this field in the DOM.
+  // This is an ephemeral value which is not guaranteed to be stable across
+  // page loads. It serves to allow a given field to be found during the
+  // current navigation.
+  // TODO(crbug.com/896689): Expand the logic/application of this to other
+  // platforms and/or merge this concept with |unique_renderer_id|.
+#if defined(OS_IOS)
+  for (auto& f : form->fields)
+    f.unique_id = f.id_attribute;
+#endif
+}
+
 }  // namespace
 
 class PasswordManagerTest : public testing::Test {
@@ -270,7 +285,7 @@
     form.form_data.name = ASCIIToUTF16("the-form-name");
     form.form_data.unique_renderer_id = 10;
 
-    autofill::FormFieldData field;
+    FormFieldData field;
     field.name = ASCIIToUTF16("Email");
     field.id_attribute = field.name;
     field.name_attribute = field.name;
@@ -287,17 +302,7 @@
     field.unique_renderer_id = 3;
     form.form_data.fields.push_back(field);
 
-// On iOS the unique_id member uniquely addresses this field in the DOM.
-// This is an ephemeral value which is not guaranteed to be stable across
-// page loads. It serves to allow a given field to be found during the
-// current navigation.
-// TODO(crbug.com/896689): Expand the logic/application of this to other
-// platforms and/or merge this concept with |unique_renderer_id|.
-#if defined(OS_IOS)
-    for (auto& f : form.form_data.fields) {
-      f.unique_id = f.id_attribute;
-    }
-#endif
+    SetUniqueIdIfNeeded(&form.form_data);
 
     return form;
   }
@@ -376,6 +381,38 @@
     return form;
   }
 
+  PasswordForm MakeSimpleCreditCardForm() {
+    PasswordForm form;
+    form.origin = GURL("https://accounts.google.com");
+    form.signon_realm = form.origin.spec();
+    form.username_element = ASCIIToUTF16("cc-number");
+    form.password_element = ASCIIToUTF16("cvc");
+    form.username_value = ASCIIToUTF16("1234567");
+    form.password_value = ASCIIToUTF16("123");
+    form.form_data.origin = form.origin;
+
+    FormFieldData field;
+    field.name = form.username_element;
+    field.id_attribute = field.name;
+    field.value = form.username_value;
+    field.form_control_type = "text";
+    field.unique_renderer_id = 2;
+    field.autocomplete_attribute = "cc-name";
+    form.form_data.fields.push_back(field);
+
+    field.name = form.password_element;
+    field.id_attribute = field.name;
+    field.value = form.password_value;
+    field.form_control_type = "password";
+    field.unique_renderer_id = 3;
+    field.autocomplete_attribute = "cc-number";
+    form.form_data.fields.push_back(field);
+
+    SetUniqueIdIfNeeded(&form.form_data);
+
+    return form;
+  }
+
   PasswordManager* manager() { return manager_.get(); }
 
   void OnPasswordFormSubmitted(const PasswordForm& form) {
@@ -3364,4 +3401,56 @@
   }
 }
 
+// Check that on non-password form, saving and filling fallbacks are available
+// but no automatic filling and saving are available.
+TEST_F(PasswordManagerTest, FillingAndSavingFallbacksOnNonPasswordForm) {
+  NewPasswordFormManager::set_wait_for_server_predictions_for_filling(false);
+  for (bool is_new_parsing_on : {false, true}) {
+    SCOPED_TRACE(testing::Message()
+                 << "is_new_parsing_on = " << is_new_parsing_on);
+    base::test::ScopedFeatureList scoped_feature_list;
+    if (is_new_parsing_on)
+      TurnOnNewParsingForSaving(&scoped_feature_list);
+
+    EXPECT_CALL(client_, IsSavingAndFillingEnabled(_))
+        .WillRepeatedly(Return(true));
+
+    PasswordForm saved_match(MakeSimpleForm());
+    PasswordForm credit_card_form(MakeSimpleCreditCardForm());
+    credit_card_form.only_for_fallback = true;
+
+    EXPECT_CALL(*store_, GetLogins(_, _))
+        .WillRepeatedly(WithArg<1>(InvokeConsumer(saved_match)));
+
+    PasswordFormFillData form_data;
+    EXPECT_CALL(driver_, FillPasswordForm(_)).WillOnce(SaveArg<0>(&form_data));
+
+    manager()->OnPasswordFormsParsed(&driver_, {credit_card_form});
+    // Check that manual filling fallback available.
+    EXPECT_EQ(saved_match.username_value, form_data.username_field.value);
+    EXPECT_EQ(saved_match.password_value, form_data.password_field.value);
+    // Check that no automatic filling available.
+    uint32_t renderer_id_not_set = FormFieldData::kNotSetFormControlRendererId;
+    EXPECT_EQ(renderer_id_not_set, form_data.username_field.unique_renderer_id);
+    EXPECT_EQ(renderer_id_not_set, form_data.password_field.unique_renderer_id);
+
+    // Check that saving fallback is available.
+    std::unique_ptr<PasswordFormManagerForUI> form_manager_to_save;
+    EXPECT_CALL(client_, ShowManualFallbackForSavingPtr(_, false, false))
+        .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save)));
+    manager()->ShowManualFallbackForSaving(&driver_, credit_card_form);
+    ASSERT_TRUE(form_manager_to_save);
+    EXPECT_THAT(form_manager_to_save->GetPendingCredentials(),
+                FormMatches(credit_card_form));
+
+    // Check that no automatic save prompt is shown.
+    OnPasswordFormSubmitted(credit_card_form);
+    EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_)).Times(0);
+    manager()->DidNavigateMainFrame(true);
+    manager()->OnPasswordFormsRendered(&driver_, {}, true);
+
+    testing::Mock::VerifyAndClearExpectations(&client_);
+  }
+}
+
 }  // namespace password_manager
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 28f9fb93..11285421 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -11688,7 +11688,6 @@
         'dynamic_refresh': False,
       },
       'example_value': [ "en-US" ],
-      'max_size': 16777216,
       'id': 364,
       'caption': '''Device sign-in screen locale''',
       'tags': [],
@@ -11709,7 +11708,6 @@
         'dynamic_refresh': True,
       },
       'example_value': [ "xkb:us::en", "xkb:ch::ger" ],
-      'max_size': 16777216,
       'id': 365,
       'caption': '''Device sign-in screen keyboard layouts''',
       'tags': [],
@@ -13063,7 +13061,6 @@
         'per_profile': True
       },
       'example_value': [ 'en-US' ],
-      'max_size': 16777216,
       'id': 444,
       'caption': '''Configure the allowed languages in a user session''',
       'tags': [],
@@ -13085,7 +13082,6 @@
         'per_profile': True
       },
       'example_value': [ 'xkb:us::eng' ],
-      'max_size': 16777216,
       'id': 456,
       'caption': '''Configure the allowed input methods in a user session''',
       'tags': [],
diff --git a/components/safe_browsing/proto/csd.proto b/components/safe_browsing/proto/csd.proto
index 2a0fdab..a7216fd7 100644
--- a/components/safe_browsing/proto/csd.proto
+++ b/components/safe_browsing/proto/csd.proto
@@ -1180,7 +1180,12 @@
 
   // URL of the page in the address bar.
   optional string url = 1;
+
+  // Must be set if the ReportType is not one of DANGEROUS_DOWNLOAD_RECOVERY,
+  // DANGEROUS_DOWNLOAD_WARNING, DANGEROUS_DOWNLOAD_BY_API,
+  // DANGEROUS_DOWNLOAD_OPENED, URL_PASSWORD_PROTECTION_PHISHING.
   optional string page_url = 2;
+
   optional string referrer_url = 3;
 
   repeated Resource resources = 4;
diff --git a/components/signin/core/browser/BUILD.gn b/components/signin/core/browser/BUILD.gn
index f6b83fb..548666a 100644
--- a/components/signin/core/browser/BUILD.gn
+++ b/components/signin/core/browser/BUILD.gn
@@ -289,6 +289,7 @@
     "//base/test:test_support",
     "//components/content_settings/core/browser",
     "//components/image_fetcher/core",
+    "//components/image_fetcher/core:test_support",
     "//components/os_crypt:test_support",
     "//components/prefs",
     "//components/prefs:test_support",
diff --git a/components/signin/core/browser/account_fetcher_service.cc b/components/signin/core/browser/account_fetcher_service.cc
index 696caa9c..8028f9f6 100644
--- a/components/signin/core/browser/account_fetcher_service.cc
+++ b/components/signin/core/browser/account_fetcher_service.cc
@@ -48,20 +48,7 @@
 const int AccountFetcherService::kAccountImageDownloadSize = 64;
 
 // AccountFetcherService implementation
-AccountFetcherService::AccountFetcherService()
-    : account_tracker_service_(nullptr),
-      token_service_(nullptr),
-      signin_client_(nullptr),
-      invalidation_service_(nullptr),
-      network_fetches_enabled_(false),
-      profile_loaded_(false),
-      refresh_tokens_loaded_(false),
-      shutdown_called_(false),
-#if defined(OS_ANDROID)
-      child_info_request_(nullptr),
-#endif
-      scheduled_refresh_enabled_(true) {
-}
+AccountFetcherService::AccountFetcherService() = default;
 
 AccountFetcherService::~AccountFetcherService() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -103,7 +90,6 @@
   // unregistered during the lifetime of the invalidation service.
   child_info_request_.reset();
 #endif
-  invalidation_service_ = nullptr;
   shutdown_called_ = true;
 }
 
@@ -117,21 +103,18 @@
   RefreshAccountInfo(account_id, false);
 }
 
-void AccountFetcherService::SetupInvalidationsOnProfileLoad(
-    invalidation::InvalidationService* invalidation_service) {
-  DCHECK(!invalidation_service_);
+void AccountFetcherService::OnProfileLoaded() {
   DCHECK(!profile_loaded_);
   DCHECK(!network_fetches_enabled_);
 #if defined(OS_ANDROID)
   DCHECK(!child_info_request_);
 #endif
-  invalidation_service_ = invalidation_service;
   profile_loaded_ = true;
   MaybeEnableNetworkFetches();
 }
 
 void AccountFetcherService::EnableNetworkFetchesForTest() {
-  SetupInvalidationsOnProfileLoad(nullptr);
+  OnProfileLoaded();
   OnRefreshTokensLoaded();
 }
 
@@ -192,8 +175,6 @@
 }
 
 void AccountFetcherService::ScheduleNextRefresh() {
-  if (!scheduled_refresh_enabled_)
-    return;
   DCHECK(!timer_.IsRunning());
   DCHECK(network_fetches_enabled_);
 
diff --git a/components/signin/core/browser/account_fetcher_service.h b/components/signin/core/browser/account_fetcher_service.h
index 7ced83d..9c425cff 100644
--- a/components/signin/core/browser/account_fetcher_service.h
+++ b/components/signin/core/browser/account_fetcher_service.h
@@ -38,10 +38,6 @@
 class ImageFetcherImpl;
 }  // namespace image_fetcher
 
-namespace invalidation {
-class InvalidationService;
-}
-
 class AccountFetcherService : public KeyedService,
                               public OAuth2TokenService::Observer {
  public:
@@ -77,10 +73,8 @@
   }
 
   // It is important that network fetches are not enabled until the profile is
-  // loaded independent of when we inject the invalidation service.
-  // See http://crbug.com/441399 for more context.
-  void SetupInvalidationsOnProfileLoad(
-      invalidation::InvalidationService* invalidation_service);
+  // loaded. See http://crbug.com/441399 for more context.
+  void OnProfileLoaded();
 
   void EnableNetworkFetchesForTest();
 
@@ -139,25 +133,21 @@
                       const gfx::Image& image,
                       const image_fetcher::RequestMetadata& image_metadata);
 
-  AccountTrackerService* account_tracker_service_;           // Not owned.
-  OAuth2TokenService* token_service_;                        // Not owned.
-  SigninClient* signin_client_;                              // Not owned.
-  invalidation::InvalidationService* invalidation_service_;  // Not owned.
-  bool network_fetches_enabled_;
-  bool profile_loaded_;
-  bool refresh_tokens_loaded_;
+  AccountTrackerService* account_tracker_service_ = nullptr;  // Not owned.
+  OAuth2TokenService* token_service_ = nullptr;               // Not owned.
+  SigninClient* signin_client_ = nullptr;                     // Not owned.
+  bool network_fetches_enabled_ = false;
+  bool profile_loaded_ = false;
+  bool refresh_tokens_loaded_ = false;
+  bool shutdown_called_ = false;
   base::Time last_updated_;
   base::OneShotTimer timer_;
-  bool shutdown_called_;
 
 #if defined(OS_ANDROID)
   std::string child_request_account_id_;
   std::unique_ptr<ChildAccountInfoFetcherAndroid> child_info_request_;
 #endif
 
-  // Only disabled in tests.
-  bool scheduled_refresh_enabled_;
-
   // Holds references to account info fetchers keyed by account_id.
   std::unordered_map<std::string, std::unique_ptr<AccountInfoFetcher>>
       user_info_requests_;
diff --git a/components/signin/core/browser/account_reconcilor_unittest.cc b/components/signin/core/browser/account_reconcilor_unittest.cc
index 5f171f23..7ffec70 100644
--- a/components/signin/core/browser/account_reconcilor_unittest.cc
+++ b/components/signin/core/browser/account_reconcilor_unittest.cc
@@ -19,10 +19,13 @@
 #include "base/time/time.h"
 #include "base/timer/mock_timer.h"
 #include "build/build_config.h"
+#include "components/image_fetcher/core/fake_image_decoder.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/signin/core/browser/account_consistency_method.h"
+#include "components/signin/core/browser/account_fetcher_service.h"
 #include "components/signin/core/browser/account_reconcilor.h"
 #include "components/signin/core/browser/account_tracker_service.h"
+#include "components/signin/core/browser/fake_account_fetcher_service.h"
 #include "components/signin/core/browser/fake_gaia_cookie_manager_service.h"
 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
 #include "components/signin/core/browser/fake_signin_manager.h"
@@ -304,6 +307,7 @@
   DiceTestSigninClient test_signin_client_;
   FakeProfileOAuth2TokenService token_service_;
   AccountTrackerService account_tracker_;
+  FakeAccountFetcherService account_fetcher_;
   GaiaCookieManagerService cookie_manager_service_;
   FakeSigninManagerForTesting signin_manager_;
   identity::IdentityTestEnvironment identity_test_env_;
@@ -370,13 +374,16 @@
                       &token_service_,
                       &account_tracker_,
                       &cookie_manager_service_),
+
 #endif
       identity_test_env_(&account_tracker_,
+                         &account_fetcher_,
                          &token_service_,
                          &signin_manager_,
                          &cookie_manager_service_,
                          &test_url_loader_factory_) {
   AccountTrackerService::RegisterPrefs(pref_service_.registry());
+  AccountFetcherService::RegisterPrefs(pref_service_.registry());
   ProfileOAuth2TokenService::RegisterProfilePrefs(pref_service_.registry());
   SigninManagerBase::RegisterProfilePrefs(pref_service_.registry());
   SigninManagerBase::RegisterPrefs(pref_service_.registry());
@@ -384,6 +391,9 @@
       prefs::kTokenServiceDiceCompatible, false);
 
   account_tracker_.Initialize(&pref_service_, base::FilePath());
+  account_fetcher_.Initialize(
+      &test_signin_client_, &token_service_, &account_tracker_,
+      std::make_unique<image_fetcher::FakeImageDecoder>());
   signin::SetListAccountsResponseHttpNotFound(&test_url_loader_factory_);
   signin_manager_.Initialize(nullptr);
 
@@ -416,6 +426,7 @@
     mock_reconcilor_->Shutdown();
   signin_manager_.Shutdown();
   cookie_manager_service_.Shutdown();
+  account_fetcher_.Shutdown();
   account_tracker_.Shutdown();
   test_signin_client_.Shutdown();
   token_service_.Shutdown();
diff --git a/components/signin/core/browser/signin_status_metrics_provider.cc b/components/signin/core/browser/signin_status_metrics_provider.cc
index 56d2db4..fb07e26b 100644
--- a/components/signin/core/browser/signin_status_metrics_provider.cc
+++ b/components/signin/core/browser/signin_status_metrics_provider.cc
@@ -12,7 +12,6 @@
 #include "base/metrics/histogram.h"
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "components/signin/core/browser/signin_manager.h"
 
 SigninStatusMetricsProvider::SigninStatusMetricsProvider(
     std::unique_ptr<SigninStatusMetricsProviderDelegate> delegate,
@@ -53,29 +52,29 @@
       new SigninStatusMetricsProvider(std::move(delegate), false));
 }
 
-void SigninStatusMetricsProvider::OnSigninManagerCreated(
-    SigninManagerBase* manager) {
-  // Whenever a new profile is created, a new SigninManagerBase will be created
+void SigninStatusMetricsProvider::OnIdentityManagerCreated(
+    identity::IdentityManager* identity_manager) {
+  // Whenever a new profile is created, a new IdentityManager will be created
   // for it. This ensures that all sign-in or sign-out actions of all opened
   // profiles are being monitored.
-  scoped_observer_.Add(manager);
+  scoped_observer_.Add(identity_manager);
 
   // If the status is unknown, it means this is the first created
-  // SigninManagerBase and the corresponding profile should be the only opened
+  // IdentityManager and the corresponding profile should be the only opened
   // profile.
   if (signin_status() == UNKNOWN_SIGNIN_STATUS) {
-    size_t signed_in_count = manager->IsAuthenticated() ? 1 : 0;
+    size_t signed_in_count = identity_manager->HasPrimaryAccount() ? 1 : 0;
     UpdateInitialSigninStatus(1, signed_in_count);
   }
 }
 
-void SigninStatusMetricsProvider::OnSigninManagerShutdown(
-    SigninManagerBase* manager) {
-  if (scoped_observer_.IsObserving(manager))
-    scoped_observer_.Remove(manager);
+void SigninStatusMetricsProvider::OnIdentityManagerShutdown(
+    identity::IdentityManager* identity_manager) {
+  if (scoped_observer_.IsObserving(identity_manager))
+    scoped_observer_.Remove(identity_manager);
 }
 
-void SigninStatusMetricsProvider::GoogleSigninSucceeded(
+void SigninStatusMetricsProvider::OnPrimaryAccountSet(
     const AccountInfo& account_info) {
   SigninStatus recorded_signin_status = signin_status();
   if (recorded_signin_status == ALL_PROFILES_NOT_SIGNED_IN) {
@@ -87,7 +86,7 @@
   }
 }
 
-void SigninStatusMetricsProvider::GoogleSignedOut(
+void SigninStatusMetricsProvider::OnPrimaryAccountCleared(
     const AccountInfo& account_info) {
   SigninStatus recorded_signin_status = signin_status();
   if (recorded_signin_status == ALL_PROFILES_SIGNED_IN) {
@@ -102,13 +101,14 @@
 void SigninStatusMetricsProvider::Initialize() {
   delegate_->Initialize();
 
-  // Start observing all already-created SigninManagers.
-  for (SigninManager* manager : delegate_->GetSigninManagersForAllAccounts()) {
+  // Start observing all already-created IdentityManagers.
+  for (identity::IdentityManager* manager :
+       delegate_->GetIdentityManagersForAllAccounts()) {
     DCHECK(!scoped_observer_.IsObserving(manager));
     scoped_observer_.Add(manager);
   }
 
-  // It is possible that when this object is created, no SigninManager is
+  // It is possible that when this object is created, no IdentityManager is
   // created yet, for example, when Chrome is opened for the first time after
   // installation on desktop, or when Chrome on Android is loaded into memory.
   if (delegate_->GetStatusOfAllAccounts().num_accounts == 0) {
diff --git a/components/signin/core/browser/signin_status_metrics_provider.h b/components/signin/core/browser/signin_status_metrics_provider.h
index f01dfe5f..0bd325ec 100644
--- a/components/signin/core/browser/signin_status_metrics_provider.h
+++ b/components/signin/core/browser/signin_status_metrics_provider.h
@@ -14,9 +14,9 @@
 #include "base/memory/weak_ptr.h"
 #include "base/scoped_observer.h"
 #include "build/build_config.h"
-#include "components/signin/core/browser/signin_manager_base.h"
 #include "components/signin/core/browser/signin_status_metrics_provider_base.h"
 #include "components/signin/core/browser/signin_status_metrics_provider_delegate.h"
+#include "services/identity/public/cpp/identity_manager.h"
 
 namespace metrics {
 class ChromeUserMetricsExtension;
@@ -28,7 +28,7 @@
 // record the value into a histogram before UMA log is uploaded on platform
 // Windows, Linux, Mac and Android.
 class SigninStatusMetricsProvider : public SigninStatusMetricsProviderBase,
-                                    public SigninManagerBase::Observer {
+                                    public identity::IdentityManager::Observer {
  public:
   ~SigninStatusMetricsProvider() override;
 
@@ -40,11 +40,11 @@
   static std::unique_ptr<SigninStatusMetricsProvider> CreateInstance(
       std::unique_ptr<SigninStatusMetricsProviderDelegate> delegate);
 
-  // Update the sign-in status when a SigninManager is created.
-  void OnSigninManagerCreated(SigninManagerBase* manager);
+  // Update the sign-in status when a IdentityManager is created.
+  void OnIdentityManagerCreated(identity::IdentityManager* identity_manager);
 
-  // Update the sign-in status when a SigninManager is shut down.
-  void OnSigninManagerShutdown(SigninManagerBase* manager);
+  // Update the sign-in status when a IdentityManager is shut down.
+  void OnIdentityManagerShutdown(identity::IdentityManager* identity_manager);
 
   // Updates the initial sign-in status. For testing purpose only.
   void UpdateInitialSigninStatusForTesting(size_t total_count,
@@ -57,8 +57,9 @@
   FRIEND_TEST_ALL_PREFIXES(SigninStatusMetricsProviderTest,
                            UpdateInitialSigninStatus);
   FRIEND_TEST_ALL_PREFIXES(SigninStatusMetricsProviderTest,
-                           GoogleSigninSucceeded);
-  FRIEND_TEST_ALL_PREFIXES(SigninStatusMetricsProviderTest, GoogleSignedOut);
+                           OnPrimaryAccountSet);
+  FRIEND_TEST_ALL_PREFIXES(SigninStatusMetricsProviderTest,
+                           OnPrimaryAccountCleared);
 
   // The boolean |is_test| indicates whether or not this is an instance for
   // testing purpose. If so, skip the initialization. Except for testing
@@ -68,9 +69,9 @@
       std::unique_ptr<SigninStatusMetricsProviderDelegate> delegate,
       bool is_test);
 
-  // SigninManagerBase::Observer:
-  void GoogleSigninSucceeded(const AccountInfo& account_info) override;
-  void GoogleSignedOut(const AccountInfo& account_info) override;
+  // IdentityManager::Observer:
+  void OnPrimaryAccountSet(const AccountInfo& account_info) override;
+  void OnPrimaryAccountCleared(const AccountInfo& account_info) override;
 
   // Obtain sign-in status and add observers.
   void Initialize();
@@ -87,9 +88,9 @@
 
   std::unique_ptr<SigninStatusMetricsProviderDelegate> delegate_;
 
-  // Used to track the SigninManagers that this instance is observing so that
+  // Used to track the IdentityManagers that this instance is observing so that
   // this instance can be removed as an observer on its destruction.
-  ScopedObserver<SigninManagerBase, SigninManagerBase::Observer>
+  ScopedObserver<identity::IdentityManager, identity::IdentityManager::Observer>
       scoped_observer_;
 
   // Whether the instance is for testing or not.
diff --git a/components/signin/core/browser/signin_status_metrics_provider_delegate.h b/components/signin/core/browser/signin_status_metrics_provider_delegate.h
index f1c778b1..763a8b7c 100644
--- a/components/signin/core/browser/signin_status_metrics_provider_delegate.h
+++ b/components/signin/core/browser/signin_status_metrics_provider_delegate.h
@@ -12,9 +12,12 @@
 #include "base/macros.h"
 #include "build/build_config.h"
 
-class SigninManager;
 class SigninStatusMetricsProvider;
 
+namespace identity {
+class IdentityManager;
+}
+
 // Provides information relating to the status of accounts in the embedder: how
 // many there are, how many are open, and how many are signed in. Note that
 // "open" is an embedder-defined concept; in some embedders, all accounts are
@@ -44,8 +47,9 @@
   // Returns the status of all accounts.
   virtual AccountsStatus GetStatusOfAllAccounts() = 0;
 
-  // Returns the SigninManager instance (if any) associated with each account.
-  virtual std::vector<SigninManager*> GetSigninManagersForAllAccounts() = 0;
+  // Returns the IdentityManager instance (if any) associated with each account.
+  virtual std::vector<identity::IdentityManager*>
+  GetIdentityManagersForAllAccounts() = 0;
 
  protected:
   SigninStatusMetricsProvider* owner() { return owner_; }
diff --git a/components/signin/core/browser/signin_status_metrics_provider_unittest.cc b/components/signin/core/browser/signin_status_metrics_provider_unittest.cc
index 203e98a..974ad479 100644
--- a/components/signin/core/browser/signin_status_metrics_provider_unittest.cc
+++ b/components/signin/core/browser/signin_status_metrics_provider_unittest.cc
@@ -22,34 +22,34 @@
             metrics_provider.GetSigninStatusForTesting());
 }
 
-TEST(SigninStatusMetricsProviderTest, GoogleSigninSucceeded) {
+TEST(SigninStatusMetricsProviderTest, OnPrimaryAccountSet) {
   SigninStatusMetricsProvider metrics_provider(nullptr, true);
 
   // Initial status is all signed out and then one of the profiles is signed in.
   metrics_provider.UpdateInitialSigninStatus(2, 0);
-  metrics_provider.GoogleSigninSucceeded(AccountInfo());
+  metrics_provider.OnPrimaryAccountSet(AccountInfo());
   EXPECT_EQ(SigninStatusMetricsProviderBase::MIXED_SIGNIN_STATUS,
             metrics_provider.GetSigninStatusForTesting());
 
   // Initial status is mixed and then one of the profiles is signed in.
   metrics_provider.UpdateInitialSigninStatus(2, 1);
-  metrics_provider.GoogleSigninSucceeded(AccountInfo());
+  metrics_provider.OnPrimaryAccountSet(AccountInfo());
   EXPECT_EQ(SigninStatusMetricsProviderBase::MIXED_SIGNIN_STATUS,
             metrics_provider.GetSigninStatusForTesting());
 }
 
-TEST(SigninStatusMetricsProviderTest, GoogleSignedOut) {
+TEST(SigninStatusMetricsProviderTest, OnPrimaryAccountCleared) {
   SigninStatusMetricsProvider metrics_provider(nullptr, true);
 
   // Initial status is all signed in and then one of the profiles is signed out.
   metrics_provider.UpdateInitialSigninStatus(2, 2);
-  metrics_provider.GoogleSignedOut(AccountInfo());
+  metrics_provider.OnPrimaryAccountCleared(AccountInfo());
   EXPECT_EQ(SigninStatusMetricsProviderBase::MIXED_SIGNIN_STATUS,
             metrics_provider.GetSigninStatusForTesting());
 
   // Initial status is mixed and then one of the profiles is signed out.
   metrics_provider.UpdateInitialSigninStatus(2, 1);
-  metrics_provider.GoogleSignedOut(AccountInfo());
+  metrics_provider.OnPrimaryAccountCleared(AccountInfo());
   EXPECT_EQ(SigninStatusMetricsProviderBase::MIXED_SIGNIN_STATUS,
             metrics_provider.GetSigninStatusForTesting());
 }
diff --git a/components/signin/ios/browser/account_consistency_service_unittest.mm b/components/signin/ios/browser/account_consistency_service_unittest.mm
index acc44e7..39dbb9c3 100644
--- a/components/signin/ios/browser/account_consistency_service_unittest.mm
+++ b/components/signin/ios/browser/account_consistency_service_unittest.mm
@@ -14,6 +14,7 @@
 #include "components/signin/core/browser/account_reconcilor.h"
 #include "components/signin/core/browser/account_reconcilor_delegate.h"
 #include "components/signin/core/browser/account_tracker_service.h"
+#include "components/signin/core/browser/fake_account_fetcher_service.h"
 #include "components/signin/core/browser/fake_gaia_cookie_manager_service.h"
 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
 #include "components/signin/core/browser/fake_signin_manager.h"
@@ -153,6 +154,7 @@
     ActiveStateManager::FromBrowserState(&browser_state_)->SetActive(true);
     AccountConsistencyService::RegisterPrefs(prefs_.registry());
     AccountTrackerService::RegisterPrefs(prefs_.registry());
+    AccountFetcherService::RegisterPrefs(prefs_.registry());
     ProfileOAuth2TokenService::RegisterProfilePrefs(prefs_.registry());
     content_settings::CookieSettings::RegisterProfilePrefs(prefs_.registry());
     HostContentSettingsMap::RegisterProfilePrefs(prefs_.registry());
@@ -163,12 +165,16 @@
     signin_client_.reset(new TestSigninClient(&prefs_));
     account_tracker_service_.Initialize(&prefs_, base::FilePath());
     token_service_.reset(new FakeProfileOAuth2TokenService(&prefs_));
+    account_fetcher_service_.Initialize(
+        signin_client_.get(), token_service_.get(), &account_tracker_service_,
+        std::make_unique<TestImageDecoder>());
     signin_manager_.reset(
         new FakeSigninManager(signin_client_.get(), token_service_.get(),
                               &account_tracker_service_, nullptr));
     signin_manager_->Initialize(nullptr);
     identity_test_env_.reset(new identity::IdentityTestEnvironment(
-        &account_tracker_service_, token_service_.get(), signin_manager_.get(),
+        &account_tracker_service_, &account_fetcher_service_,
+        token_service_.get(), signin_manager_.get(),
         gaia_cookie_manager_service_.get()));
     settings_map_ = new HostContentSettingsMap(
         &prefs_, false /* incognito_profile */, false /* guest_profile */,
@@ -187,6 +193,8 @@
     account_consistency_service_->Shutdown();
     settings_map_->ShutdownOnUIThread();
     ActiveStateManager::FromBrowserState(&browser_state_)->SetActive(false);
+    account_fetcher_service_.Shutdown();
+    account_tracker_service_.Shutdown();
     identity_test_env_.reset();
     PlatformTest::TearDown();
   }
@@ -269,6 +277,7 @@
   // thread.
   web::TestWebThreadBundle thread_bundle_;
   AccountTrackerService account_tracker_service_;
+  FakeAccountFetcherService account_fetcher_service_;
   web::TestBrowserState browser_state_;
   sync_preferences::TestingPrefServiceSyncable prefs_;
   TestWebState web_state_;
diff --git a/components/viz/common/gl_scaler.cc b/components/viz/common/gl_scaler.cc
index 417b83d..a05d958 100644
--- a/components/viz/common/gl_scaler.cc
+++ b/components/viz/common/gl_scaler.cc
@@ -185,17 +185,16 @@
       params_.scale_from != params_.scale_to) {
     // Ensure the scaling color space is using a linear transfer function.
     constexpr auto kLinearFunction = std::make_tuple(1, 0, 1, 0, 0, 0, 1);
-    SkColorSpaceTransferFn fn;
+    skcms_TransferFunction fn;
     if (params_.source_color_space.GetTransferFunction(&fn) &&
-        std::make_tuple(fn.fA, fn.fB, fn.fC, fn.fD, fn.fE, fn.fF, fn.fG) ==
+        std::make_tuple(fn.a, fn.b, fn.c, fn.d, fn.e, fn.f, fn.g) ==
             kLinearFunction) {
       scaling_color_space_ = params_.source_color_space;
     } else {
       // Use the source color space, but with a linear transfer function.
       skcms_Matrix3x3 to_XYZD50;
       params_.source_color_space.GetPrimaryMatrix(&to_XYZD50);
-      std::tie(fn.fA, fn.fB, fn.fC, fn.fD, fn.fE, fn.fF, fn.fG) =
-          kLinearFunction;
+      std::tie(fn.a, fn.b, fn.c, fn.d, fn.e, fn.f, fn.g) = kLinearFunction;
       scaling_color_space_ = gfx::ColorSpace::CreateCustom(to_XYZD50, fn);
     }
     intermediate_texture_type = GL_HALF_FLOAT_OES;
diff --git a/components/viz/service/display/gl_renderer_unittest.cc b/components/viz/service/display/gl_renderer_unittest.cc
index 91d4ca5f4..0fc3f992 100644
--- a/components/viz/service/display/gl_renderer_unittest.cc
+++ b/components/viz/service/display/gl_renderer_unittest.cc
@@ -229,7 +229,7 @@
 
   void TestColorShaders() {
     const size_t kNumTransferFns = 7;
-    SkColorSpaceTransferFn transfer_fns[kNumTransferFns] = {
+    skcms_TransferFunction transfer_fns[kNumTransferFns] = {
         // The identity.
         {1.f, 1.f, 0.f, 1.f, 0.f, 0.f, 0.f},
         // The identity, with an if statement.
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.h b/content/browser/accessibility/browser_accessibility_state_impl.h
index 1b592367..30dd3485 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl.h
+++ b/content/browser/accessibility/browser_accessibility_state_impl.h
@@ -10,10 +10,16 @@
 #include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "base/memory/singleton.h"
+#include "build/build_config.h"
 #include "content/public/browser/browser_accessibility_state.h"
 #include "ui/accessibility/ax_mode.h"
 #include "ui/accessibility/ax_mode_observer.h"
 
+#if defined(OS_WIN)
+#include <memory>
+#include "ui/gfx/win/singleton_hwnd_observer.h"
+#endif
+
 namespace content {
 
 // The BrowserAccessibilityState class is used to determine if Chrome should be
@@ -93,6 +99,11 @@
 
   bool disable_hot_tracking_;
 
+#if defined(OS_WIN)
+  // Only used on Windows
+  std::unique_ptr<gfx::SingletonHwndObserver> singleton_hwnd_observer_;
+#endif
+
   DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityStateImpl);
 };
 
diff --git a/content/browser/accessibility/browser_accessibility_state_impl_mac.mm b/content/browser/accessibility/browser_accessibility_state_impl_mac.mm
index 229a9f0..fde90e81 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_state_impl_mac.mm
@@ -7,6 +7,8 @@
 #import <Cocoa/Cocoa.h>
 
 #include "base/metrics/histogram_macros.h"
+#include "content/browser/web_contents/web_contents_impl.h"
+#include "ui/gfx/animation/animation.h"
 
 @interface NSWorkspace (Partials)
 
@@ -23,7 +25,39 @@
 
 namespace content {
 
-void BrowserAccessibilityStateImpl::PlatformInitialize() {}
+namespace {
+void SetupAccessibilityDisplayOptionsNotifier() {
+  // We need to call into gfx::Animation and WebContentsImpl on the UI thread,
+  // so ensure that we setup the notification on the correct thread.
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+  if (@available(macOS 10.10, *)) {
+    // Listen to accessibility display options changing, so that we can update
+    // the renderer for the prefers reduced motion settings.
+    //
+    // BrowserAccessibilityStateImpl is a deliberately leaked singleton, so we
+    // don't need to record the notification token for later cleanup.
+    [[[NSWorkspace sharedWorkspace] notificationCenter]
+        addObserverForName:
+            NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification
+                    object:nil
+                     queue:nil
+                usingBlock:^(NSNotification* notification) {
+                  gfx::Animation::UpdatePrefersReducedMotion();
+                  for (WebContentsImpl* wc :
+                       WebContentsImpl::GetAllWebContents()) {
+                    wc->GetRenderViewHost()->OnWebkitPreferencesChanged();
+                  }
+                }];
+  }
+}
+}  // namespace
+
+void BrowserAccessibilityStateImpl::PlatformInitialize() {
+  base::PostTaskWithTraits(
+      FROM_HERE, {BrowserThread::UI},
+      base::BindOnce(&SetupAccessibilityDisplayOptionsNotifier));
+}
 
 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
   // NOTE: This function is running on the file thread.
diff --git a/content/browser/accessibility/browser_accessibility_state_impl_win.cc b/content/browser/accessibility/browser_accessibility_state_impl_win.cc
index 8c876758..b18657e 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl_win.cc
+++ b/content/browser/accessibility/browser_accessibility_state_impl_win.cc
@@ -15,7 +15,9 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
+#include "content/browser/web_contents/web_contents_impl.h"
 #include "ui/accessibility/platform/ax_platform_node_win.h"
+#include "ui/gfx/animation/animation.h"
 
 namespace content {
 
@@ -67,11 +69,24 @@
   bool acc_name_called_ = false;
 };
 
+void OnWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  if (message == WM_SETTINGCHANGE && wparam == SPI_SETCLIENTAREAANIMATION) {
+    gfx::Animation::UpdatePrefersReducedMotion();
+    for (WebContentsImpl* wc : WebContentsImpl::GetAllWebContents()) {
+      wc->GetRenderViewHost()->OnWebkitPreferencesChanged();
+    }
+  }
+}
+
 }  // namespace
 
 void BrowserAccessibilityStateImpl::PlatformInitialize() {
   ui::GetIAccessible2UsageObserverList().AddObserver(
       new WindowsAccessibilityEnabler());
+
+  singleton_hwnd_observer_.reset(
+      new gfx::SingletonHwndObserver(base::BindRepeating(&OnWndProc)));
 }
 
 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
diff --git a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
index 614b977..2b62753 100644
--- a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
+++ b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
@@ -572,9 +572,6 @@
   PlaceAndCaptureBox(kFrameSize, gfx::Size(100, 200), 2.0, 1.);
   PlaceAndCaptureBox(kFrameSize, gfx::Size(100, 200), 0.5, 1.);
 
-  // Ensure that content outside the emulated frame is painted, too.
-  PlaceAndCaptureBox(kFrameSize, gfx::Size(10, 8192), 1.0, 1.);
-
   // Check non-1 device scale factor.
   PlaceAndCaptureBox(kFrameSize, gfx::Size(100, 200), 1.0, 2.);
   // Ensure not emulating device scale factor works.
diff --git a/content/browser/media/session/media_session_impl.cc b/content/browser/media/session/media_session_impl.cc
index cdd22404..f49a56e 100644
--- a/content/browser/media/session/media_session_impl.cc
+++ b/content/browser/media/session/media_session_impl.cc
@@ -18,6 +18,7 @@
 #include "content/browser/media/session/media_session_controller.h"
 #include "content/browser/media/session/media_session_player_observer.h"
 #include "content/browser/media/session/media_session_service_impl.h"
+#include "content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/browser/media_session.h"
 #include "content/public/browser/navigation_handle.h"
@@ -1026,6 +1027,14 @@
       routed_service_ ? routed_service_->actions()
                       : std::set<media_session::mojom::MediaSessionAction>();
 
+  // Picture-in-Picture window controller needs to know only actions that are
+  // handled by the website.
+  if (auto* pip_window_controller_ =
+          PictureInPictureWindowControllerImpl::FromWebContents(
+              web_contents())) {
+    pip_window_controller_->MediaSessionActionsChanged(actions);
+  }
+
   // If we are controllable then we should always add these actions as we can
   // support them by directly interacting with the players underneath.
   if (IsControllable()) {
diff --git a/content/browser/media/session/media_session_impl.h b/content/browser/media/session/media_session_impl.h
index 4eeea228..7326a1d 100644
--- a/content/browser/media/session/media_session_impl.h
+++ b/content/browser/media/session/media_session_impl.h
@@ -236,6 +236,9 @@
     return audio_focus_group_id_;
   }
 
+  // Returns whether the action should be routed to |routed_service_|.
+  bool ShouldRouteAction(media_session::mojom::MediaSessionAction action) const;
+
  private:
   friend class content::WebContentsUserData<MediaSessionImpl>;
   friend class ::MediaSessionImplBrowserTest;
@@ -327,9 +330,6 @@
   // to update |routed_service_|.
   CONTENT_EXPORT MediaSessionServiceImpl* ComputeServiceForRouting();
 
-  // Returns whether the action should be routed to |routed_service_|.
-  bool ShouldRouteAction(media_session::mojom::MediaSessionAction action) const;
-
   // Rebuilds |actions_| and notifies observers if they have changed.
   void RebuildAndNotifyActionsChanged();
 
diff --git a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc
index 90eb615..663d555 100644
--- a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc
+++ b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc
@@ -4,13 +4,15 @@
 
 #include "content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h"
 
+#include <set>
+
 #include "components/viz/common/surfaces/surface_id.h"
 #include "content/browser/media/media_web_contents_observer.h"
+#include "content/browser/media/session/media_session_impl.h"
 #include "content/browser/picture_in_picture/overlay_surface_embedder.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/common/media/media_player_delegate_messages.h"
 #include "content/public/browser/content_browser_client.h"
-#include "content/public/browser/media_session.h"
 #include "content/public/browser/overlay_window.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_observer.h"
@@ -55,8 +57,7 @@
 
 PictureInPictureWindowControllerImpl::PictureInPictureWindowControllerImpl(
     WebContents* initiator)
-    : initiator_(static_cast<WebContentsImpl* const>(initiator)),
-      observer_binding_(this) {
+    : initiator_(static_cast<WebContentsImpl* const>(initiator)) {
   DCHECK(initiator_);
 
   media_web_contents_observer_ = initiator_->media_web_contents_observer();
@@ -69,18 +70,19 @@
   DCHECK(window_);
   DCHECK(surface_id_.is_valid());
 
+  MediaSessionImpl* media_session = MediaSessionImpl::Get(initiator_);
+  media_session_action_play_handled_ = media_session->ShouldRouteAction(
+      media_session::mojom::MediaSessionAction::kPlay);
+  media_session_action_pause_handled_ = media_session->ShouldRouteAction(
+      media_session::mojom::MediaSessionAction::kPause);
+  media_session_action_skip_ad_handled_ = media_session->ShouldRouteAction(
+      media_session::mojom::MediaSessionAction::kSkipAd);
+
+  UpdatePlayPauseButtonVisibility();
+  window_->SetSkipAdButtonVisibility(media_session_action_skip_ad_handled_);
   window_->Show();
-  window_->SetSkipAdButtonVisibility(false);
   initiator_->SetHasPictureInPictureVideo(true);
 
-  if (observer_binding_.is_bound()) {
-    observer_binding_.Close();
-  }
-
-  media_session::mojom::MediaSessionObserverPtr observer;
-  observer_binding_.Bind(mojo::MakeRequest(&observer));
-  MediaSession::Get(initiator_)->AddObserver(std::move(observer));
-
   return window_->GetBounds().size();
 }
 
@@ -184,16 +186,27 @@
   DCHECK(window_);
 
   if (IsPlayerActive()) {
+    if (media_session_action_pause_handled_) {
+      MediaSessionImpl::Get(initiator_)
+          ->Suspend(MediaSession::SuspendType::kUI);
+      return true /* still playing */;
+    }
+
     media_player_id_->render_frame_host->Send(new MediaPlayerDelegateMsg_Pause(
         media_player_id_->render_frame_host->GetRoutingID(),
         media_player_id_->delegate_id));
-    return false;
+    return false /* paused */;
+  }
+
+  if (media_session_action_play_handled_) {
+    MediaSessionImpl::Get(initiator_)->Resume(MediaSession::SuspendType::kUI);
+    return false /* still paused */;
   }
 
   media_player_id_->render_frame_host->Send(new MediaPlayerDelegateMsg_Play(
       media_player_id_->render_frame_host->GetRoutingID(),
       media_player_id_->delegate_id));
-  return true;
+  return true /* playing */;
 }
 
 void PictureInPictureWindowControllerImpl::CustomControlPressed(
@@ -208,31 +221,38 @@
 
 void PictureInPictureWindowControllerImpl::SetAlwaysHidePlayPauseButton(
     bool is_visible) {
-  if (!window_)
-    return;
-
-  window_->SetAlwaysHidePlayPauseButton(is_visible);
+  always_hide_play_pause_button_ = is_visible;
+  UpdatePlayPauseButtonVisibility();
 }
 
 void PictureInPictureWindowControllerImpl::SkipAd() {
-  if (base::FeatureList::IsEnabled(media::kSkipAd))
+  if (base::FeatureList::IsEnabled(media::kSkipAd) &&
+      media_session_action_skip_ad_handled_)
     MediaSession::Get(initiator_)->SkipAd();
 }
 
 void PictureInPictureWindowControllerImpl::MediaSessionActionsChanged(
-    const std::vector<media_session::mojom::MediaSessionAction>& actions) {
-  if (!window_)
-    return;
-
+    const std::set<media_session::mojom::MediaSessionAction>& actions) {
   // TODO(crbug.com/919842): Currently, the first Media Session to be created
   // (independently of the frame) will be used. This means, we could show a
   // Skip Ad button for a PiP video from another frame. Ideally, we should have
   // a Media Session per frame, not per tab. This is not implemented yet.
 
-  auto result = std::find(std::begin(actions), std::end(actions),
-                          media_session::mojom::MediaSessionAction::kSkipAd);
-  bool show_skip_ad_button = result != actions.end();
-  window_->SetSkipAdButtonVisibility(show_skip_ad_button);
+  media_session_action_pause_handled_ =
+      actions.find(media_session::mojom::MediaSessionAction::kPause) !=
+      actions.end();
+  media_session_action_play_handled_ =
+      actions.find(media_session::mojom::MediaSessionAction::kPlay) !=
+      actions.end();
+  media_session_action_skip_ad_handled_ =
+      actions.find(media_session::mojom::MediaSessionAction::kSkipAd) !=
+      actions.end();
+
+  if (!window_)
+    return;
+
+  UpdatePlayPauseButtonVisibility();
+  window_->SetSkipAdButtonVisibility(media_session_action_skip_ad_handled_);
 }
 
 void PictureInPictureWindowControllerImpl::OnLeavingPictureInPicture(
@@ -265,10 +285,6 @@
 
   initiator_->SetHasPictureInPictureVideo(false);
   OnLeavingPictureInPicture(should_pause_video, should_reset_pip_player);
-
-  if (observer_binding_.is_bound()) {
-    observer_binding_.Close();
-  }
 }
 
 void PictureInPictureWindowControllerImpl::EnsureWindow() {
@@ -279,6 +295,15 @@
       GetContentClient()->browser()->CreateWindowForPictureInPicture(this);
 }
 
+void PictureInPictureWindowControllerImpl::UpdatePlayPauseButtonVisibility() {
+  if (!window_)
+    return;
+
+  window_->SetAlwaysHidePlayPauseButton((media_session_action_pause_handled_ &&
+                                         media_session_action_play_handled_) ||
+                                        always_hide_play_pause_button_);
+}
+
 WEB_CONTENTS_USER_DATA_KEY_IMPL(PictureInPictureWindowControllerImpl)
 
 }  // namespace content
diff --git a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h
index a7832f06..f44a7ca 100644
--- a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h
+++ b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h
@@ -10,8 +10,6 @@
 #include "content/public/browser/picture_in_picture_window_controller.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
-#include "mojo/public/cpp/bindings/binding.h"
-#include "services/media_session/public/cpp/media_metadata.h"
 #include "services/media_session/public/mojom/media_session.mojom.h"
 
 namespace content {
@@ -29,8 +27,7 @@
 // work with it. https://crbug.com/589840.
 class PictureInPictureWindowControllerImpl
     : public PictureInPictureWindowController,
-      public WebContentsUserData<PictureInPictureWindowControllerImpl>,
-      public media_session::mojom::MediaSessionObserver {
+      public WebContentsUserData<PictureInPictureWindowControllerImpl> {
  public:
   // Gets a reference to the controller associated with |initiator| and creates
   // one if it does not exist. The returned pointer is guaranteed to be
@@ -62,14 +59,8 @@
   CONTENT_EXPORT void SetAlwaysHidePlayPauseButton(bool is_visible) override;
   CONTENT_EXPORT void SkipAd() override;
 
-  // media_session::mojom::MediaSessionObserver overrides.
-  CONTENT_EXPORT void MediaSessionInfoChanged(
-      media_session::mojom::MediaSessionInfoPtr session_info) override {}
-  CONTENT_EXPORT void MediaSessionMetadataChanged(
-      const base::Optional<media_session::MediaMetadata>& metadata) override {}
   CONTENT_EXPORT void MediaSessionActionsChanged(
-      const std::vector<media_session::mojom::MediaSessionAction>& actions)
-      override;
+      const std::set<media_session::mojom::MediaSessionAction>& actions);
 
  private:
   friend class WebContentsUserData<PictureInPictureWindowControllerImpl>;
@@ -91,12 +82,15 @@
   // because of the system control of the window.
   void EnsureWindow();
 
+  // Allow play/pause button to be visible if Media Session actions "play" and
+  // "pause" are both handled by the website or if
+  // always_hide_play_pause_button_ is false.
+  void UpdatePlayPauseButtonVisibility();
+
   std::unique_ptr<OverlayWindow> window_;
   std::unique_ptr<OverlaySurfaceEmbedder> embedder_;
   WebContentsImpl* const initiator_;
 
-  mojo::Binding<media_session::mojom::MediaSessionObserver> observer_binding_;
-
   // Used to determine the state of the media player and route messages to
   // the corresponding media player with id |media_player_id_|.
   MediaWebContentsObserver* media_web_contents_observer_;
@@ -104,6 +98,17 @@
 
   viz::SurfaceId surface_id_;
 
+  // Used to show/hide some actions in Picture-in-Picture window. These are set
+  // to true when website handles some Media Session actions.
+  bool media_session_action_play_handled_ = false;
+  bool media_session_action_pause_handled_ = false;
+  bool media_session_action_skip_ad_handled_ = false;
+
+  // Used to hide play/pause button if video is a MediaStream or has infinite
+  // duration. Play/pause button visibility can be overridden by the Media
+  // Session API in UpdatePlayPauseButtonVisibility().
+  bool always_hide_play_pause_button_ = false;
+
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
   DISALLOW_COPY_AND_ASSIGN(PictureInPictureWindowControllerImpl);
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
index 2f8b369e..e1f92ea 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -356,10 +356,12 @@
     return touch_event_id;
   }
 
-  int PressTouchPoint(int x, int y) { return touch_event_.PressPoint(x, y); }
+  int PressTouchPoint(int x, int y) {
+    return touch_event_.PressPoint(x, y, radius_x_, radius_y_);
+  }
 
   void MoveTouchPoint(int index, int x, int y) {
-    touch_event_.MovePoint(index, x, y);
+    touch_event_.MovePoint(index, x, y, radius_x_, radius_y_);
   }
 
   void ReleaseTouchPoint(int index) { touch_event_.ReleasePoint(index); }
@@ -474,6 +476,8 @@
     EXPECT_EQ(input_router_->AllowedTouchAction(), expected_touch_action);
   }
 
+  const float radius_x_ = 20.0f;
+  const float radius_y_ = 20.0f;
   InputRouter::Config config_;
   std::unique_ptr<MockInputRouterImplClient> client_;
   std::unique_ptr<InputRouterImpl> input_router_;
@@ -2207,15 +2211,15 @@
     EXPECT_EQ(40, sent_event->touches[0].PositionInWidget().y);
     EXPECT_EQ(10, sent_event->touches[0].PositionInScreen().x);
     EXPECT_EQ(20, sent_event->touches[0].PositionInScreen().y);
-    EXPECT_EQ(40, sent_event->touches[0].radius_x);
-    EXPECT_EQ(40, sent_event->touches[0].radius_y);
+    EXPECT_EQ(2 * radius_x_, sent_event->touches[0].radius_x);
+    EXPECT_EQ(2 * radius_x_, sent_event->touches[0].radius_y);
 
     EXPECT_EQ(200, sent_event->touches[1].PositionInWidget().x);
     EXPECT_EQ(400, sent_event->touches[1].PositionInWidget().y);
     EXPECT_EQ(100, sent_event->touches[1].PositionInScreen().x);
     EXPECT_EQ(200, sent_event->touches[1].PositionInScreen().y);
-    EXPECT_EQ(40, sent_event->touches[1].radius_x);
-    EXPECT_EQ(40, sent_event->touches[1].radius_y);
+    EXPECT_EQ(2 * radius_x_, sent_event->touches[1].radius_x);
+    EXPECT_EQ(2 * radius_x_, sent_event->touches[1].radius_y);
 
     const WebTouchEvent* filter_event = GetFilterWebInputEvent<WebTouchEvent>();
     ASSERT_EQ(2u, filter_event->touches_length);
@@ -2223,15 +2227,15 @@
     EXPECT_EQ(20, filter_event->touches[0].PositionInWidget().y);
     EXPECT_EQ(10, filter_event->touches[0].PositionInScreen().x);
     EXPECT_EQ(20, filter_event->touches[0].PositionInScreen().y);
-    EXPECT_EQ(20, filter_event->touches[0].radius_x);
-    EXPECT_EQ(20, filter_event->touches[0].radius_y);
+    EXPECT_EQ(radius_x_, filter_event->touches[0].radius_x);
+    EXPECT_EQ(radius_x_, filter_event->touches[0].radius_y);
 
     EXPECT_EQ(100, filter_event->touches[1].PositionInWidget().x);
     EXPECT_EQ(200, filter_event->touches[1].PositionInWidget().y);
     EXPECT_EQ(100, filter_event->touches[1].PositionInScreen().x);
     EXPECT_EQ(200, filter_event->touches[1].PositionInScreen().y);
-    EXPECT_EQ(20, filter_event->touches[1].radius_x);
-    EXPECT_EQ(20, filter_event->touches[1].radius_y);
+    EXPECT_EQ(radius_x_, filter_event->touches[1].radius_x);
+    EXPECT_EQ(radius_x_, filter_event->touches[1].radius_y);
   }
 
   void FlushTouchEvent(WebInputEvent::Type type) {
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
index 9c48880..ecb9a86 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
@@ -403,9 +403,4 @@
   return timeout_handler_ && timeout_handler_->IsTimeoutTimerRunning();
 }
 
-const TouchEventWithLatencyInfo&
-PassthroughTouchEventQueue::GetLatestEventForTesting() const {
-  return *outstanding_touches_.rbegin();
-}
-
 }  // namespace content
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue.h b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
index 5c6061e..4e9564f 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue.h
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
@@ -182,7 +182,6 @@
   void AckCompletedEvents();
 
   bool IsTimeoutRunningForTesting() const;
-  const TouchEventWithLatencyInfo& GetLatestEventForTesting() const;
   size_t SizeForTesting() const;
 
   // Handles touch event forwarding and ack'ed event dispatch.
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
index 2fb51060..27bfd0d 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
@@ -183,12 +183,12 @@
   }
 
   void PressTouchPoint(float x, float y) {
-    touch_event_.PressPoint(x, y);
+    touch_event_.PressPoint(x, y, radius_x_, radius_y_);
     SendTouchEvent();
   }
 
   void MoveTouchPoint(int index, float x, float y) {
-    touch_event_.MovePoint(index, x, y);
+    touch_event_.MovePoint(index, x, y, radius_x_, radius_y_);
     SendTouchEvent();
   }
 
@@ -259,8 +259,6 @@
                               base::TimeDelta::FromSecondsD(seconds));
   }
 
-  void ResetTouchEvent() { touch_event_ = SyntheticWebTouchEvent(); }
-
   size_t GetAndResetAckedEventCount() {
     size_t count = acked_event_count_;
     acked_event_count_ = 0;
@@ -291,10 +289,6 @@
 
   size_t queued_event_count() const { return queue_->SizeForTesting(); }
 
-  const WebTouchEvent& latest_event() const {
-    return queue_->GetLatestEventForTesting().event;
-  }
-
   const WebTouchEvent& acked_event() const { return last_acked_event_; }
 
   const WebTouchEvent& sent_event() const {
@@ -324,6 +318,9 @@
 
   int GetUniqueTouchEventID() { return sent_events_ids_.back(); }
 
+  const float radius_x_ = 20.0f;
+  const float radius_y_ = 20.0f;
+
  private:
   void SendTouchEvent() {
     SendTouchEvent(touch_event_);
@@ -1630,8 +1627,8 @@
   PressTouchPoint(1, 1);
   SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
 
-  // Default initial radiusX/Y is (1.f, 1.f).
-  // Default initial rotationAngle is 1.f.
+  // Default initial radiusX/Y is (20.f, 20.f).
+  // Default initial rotationAngle is 0.f.
   // Default initial force is 1.f.
 
   // Change touch point radius only.
@@ -1690,7 +1687,7 @@
 
   // Do not really move any touch points, but use previous values.
   MoveTouchPoint(0, 10, 10);
-  ChangeTouchPointRadius(1, 20, 20);
+  ChangeTouchPointRadius(1, radius_x_, radius_y_);
   MoveTouchPoint(1, 2, 2);
   EXPECT_EQ(4U, queued_event_count());
   EXPECT_EQ(0U, GetAndResetSentEventCount());
diff --git a/content/browser/renderer_host/input/synthetic_mouse_driver.cc b/content/browser/renderer_host/input/synthetic_mouse_driver.cc
index 31e6b96e..2ed28da 100644
--- a/content/browser/renderer_host/input/synthetic_mouse_driver.cc
+++ b/content/browser/renderer_host/input/synthetic_mouse_driver.cc
@@ -27,7 +27,11 @@
                                  float y,
                                  int index,
                                  SyntheticPointerActionParams::Button button,
-                                 int key_modifiers) {
+                                 int key_modifiers,
+                                 float width,
+                                 float height,
+                                 float rotation_angle,
+                                 float force) {
   DCHECK_EQ(index, 0);
   int modifiers =
       SyntheticPointerActionParams::GetWebMouseEventModifier(button);
@@ -43,7 +47,11 @@
 void SyntheticMouseDriver::Move(float x,
                                 float y,
                                 int index,
-                                int key_modifiers) {
+                                int key_modifiers,
+                                float width,
+                                float height,
+                                float rotation_angle,
+                                float force) {
   DCHECK_EQ(index, 0);
   mouse_event_ = SyntheticWebMouseEventBuilder::Build(
       blink::WebInputEvent::kMouseMove, x, y, key_modifiers | last_modifiers_,
diff --git a/content/browser/renderer_host/input/synthetic_mouse_driver.h b/content/browser/renderer_host/input/synthetic_mouse_driver.h
index 594a1d6..1f32756 100644
--- a/content/browser/renderer_host/input/synthetic_mouse_driver.h
+++ b/content/browser/renderer_host/input/synthetic_mouse_driver.h
@@ -25,8 +25,19 @@
              int index = 0,
              SyntheticPointerActionParams::Button button =
                  SyntheticPointerActionParams::Button::LEFT,
-             int key_modifiers = 0) override;
-  void Move(float x, float y, int index = 0, int key_modifiers = 0) override;
+             int key_modifiers = 0,
+             float width = 1.f,
+             float height = 1.f,
+             float rotation_angle = 0.f,
+             float force = 1.f) override;
+  void Move(float x,
+            float y,
+            int index = 0,
+            int key_modifiers = 0,
+            float width = 1.f,
+            float height = 1.f,
+            float rotation_angle = 0.f,
+            float force = 1.f) override;
   void Release(int index = 0,
                SyntheticPointerActionParams::Button button =
                    SyntheticPointerActionParams::Button::LEFT,
diff --git a/content/browser/renderer_host/input/synthetic_pointer_action.cc b/content/browser/renderer_host/input/synthetic_pointer_action.cc
index 7e370d5c..93a60ba 100644
--- a/content/browser/renderer_host/input/synthetic_pointer_action.cc
+++ b/content/browser/renderer_host/input/synthetic_pointer_action.cc
@@ -75,12 +75,14 @@
       case SyntheticPointerActionParams::PointerActionType::PRESS:
         synthetic_pointer_driver_->Press(
             param.position().x(), param.position().y(), param.pointer_id(),
-            param.button(), param.key_modifiers());
+            param.button(), param.key_modifiers(), param.width(),
+            param.height(), param.rotation_angle(), param.force());
         break;
       case SyntheticPointerActionParams::PointerActionType::MOVE:
         synthetic_pointer_driver_->Move(
             param.position().x(), param.position().y(), param.pointer_id(),
-            param.key_modifiers());
+            param.key_modifiers(), param.width(), param.height(),
+            param.rotation_angle(), param.force());
         break;
       case SyntheticPointerActionParams::PointerActionType::RELEASE:
         synthetic_pointer_driver_->Release(param.pointer_id(), param.button(),
diff --git a/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc b/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc
index 326b505f..ffb7206 100644
--- a/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc
+++ b/content/browser/renderer_host/input/synthetic_pointer_action_unittest.cc
@@ -142,6 +142,13 @@
       positions_[num_dispatched_pointer_actions_] =
           gfx::PointF(touch_event.touches[i].PositionInWidget());
       states_[num_dispatched_pointer_actions_] = touch_event.touches[i].state;
+      widths_[num_dispatched_pointer_actions_] =
+          2 * touch_event.touches[i].radius_x;
+      heights_[num_dispatched_pointer_actions_] =
+          2 * touch_event.touches[i].radius_y;
+      rotation_angles_[num_dispatched_pointer_actions_] =
+          touch_event.touches[i].rotation_angle;
+      forces_[num_dispatched_pointer_actions_] = touch_event.touches[i].force;
       num_dispatched_pointer_actions_++;
     }
   }
@@ -166,6 +173,31 @@
                << positions_[index].ToString() << ", expected "
                << param.position().ToString() << ".";
       }
+
+      if (widths_[index] != param.width()) {
+        return testing::AssertionFailure()
+               << "Pointer width at index " << index << " was "
+               << widths_[index] << ", expected " << param.width() << ".";
+      }
+
+      if (heights_[index] != param.height()) {
+        return testing::AssertionFailure()
+               << "Pointer height at index " << index << " was "
+               << heights_[index] << ", expected " << param.height() << ".";
+      }
+
+      if (rotation_angles_[index] != param.rotation_angle()) {
+        return testing::AssertionFailure()
+               << "Pointer rotation_angle at index " << index << " was "
+               << rotation_angles_[index] << ", expected "
+               << param.rotation_angle() << ".";
+      }
+
+      if (forces_[index] != param.force()) {
+        return testing::AssertionFailure()
+               << "Pointer force at index " << index << " was "
+               << forces_[index] << ", expected " << param.force() << ".";
+      }
     }
 
     if (states_[index] != ToWebTouchPointState(param.pointer_action_type())) {
@@ -204,6 +236,10 @@
   gfx::PointF positions_[WebTouchEvent::kTouchesLengthCap];
   uint32_t indexes_[WebTouchEvent::kTouchesLengthCap];
   WebTouchPoint::State states_[WebTouchEvent::kTouchesLengthCap];
+  float widths_[WebTouchEvent::kTouchesLengthCap];
+  float heights_[WebTouchEvent::kTouchesLengthCap];
+  float rotation_angles_[WebTouchEvent::kTouchesLengthCap];
+  float forces_[WebTouchEvent::kTouchesLengthCap];
 };
 
 class MockSyntheticPointerMouseActionTarget
@@ -369,6 +405,10 @@
       SyntheticPointerActionParams::PointerActionType::PRESS);
   param1.set_pointer_id(0);
   param1.set_position(gfx::PointF(54, 89));
+  param1.set_width(30);
+  param1.set_height(45);
+  param1.set_rotation_angle(10);
+  param1.set_force(15);
   SyntheticPointerActionListParams::ParamList param_list1;
   param_list1.push_back(param1);
   params_.PushPointerActionParamsList(param_list1);
@@ -382,6 +422,10 @@
       SyntheticPointerActionParams::PointerActionType::PRESS);
   param2.set_pointer_id(1);
   param2.set_position(gfx::PointF(79, 132));
+  param2.set_width(10);
+  param2.set_height(35);
+  param2.set_rotation_angle(30);
+  param2.set_force(10);
   SyntheticPointerActionListParams::ParamList param_list2;
   param_list2.push_back(param1);
   param_list2.push_back(param2);
diff --git a/content/browser/renderer_host/input/synthetic_pointer_driver.h b/content/browser/renderer_host/input/synthetic_pointer_driver.h
index 75a6392a..c6329ab8c 100644
--- a/content/browser/renderer_host/input/synthetic_pointer_driver.h
+++ b/content/browser/renderer_host/input/synthetic_pointer_driver.h
@@ -33,8 +33,19 @@
                      int index = 0,
                      SyntheticPointerActionParams::Button button =
                          SyntheticPointerActionParams::Button::LEFT,
-                     int key_modifiers = 0) = 0;
-  virtual void Move(float x, float y, int index = 0, int key_modifiers = 0) = 0;
+                     int key_modifiers = 0,
+                     float width = 1.f,
+                     float height = 1.f,
+                     float rotation_angle = 0.f,
+                     float force = 1.f) = 0;
+  virtual void Move(float x,
+                    float y,
+                    int index = 0,
+                    int key_modifiers = 0,
+                    float width = 1.f,
+                    float height = 1.f,
+                    float rotation_angle = 0.f,
+                    float force = 1.f) = 0;
   virtual void Release(int index = 0,
                        SyntheticPointerActionParams::Button button =
                            SyntheticPointerActionParams::Button::LEFT,
diff --git a/content/browser/renderer_host/input/synthetic_touch_driver.cc b/content/browser/renderer_host/input/synthetic_touch_driver.cc
index 015acb3..4028588 100644
--- a/content/browser/renderer_host/input/synthetic_touch_driver.cc
+++ b/content/browser/renderer_host/input/synthetic_touch_driver.cc
@@ -28,10 +28,15 @@
                                  float y,
                                  int index,
                                  SyntheticPointerActionParams::Button button,
-                                 int key_modifiers) {
+                                 int key_modifiers,
+                                 float width,
+                                 float height,
+                                 float rotation_angle,
+                                 float force) {
   DCHECK_GE(index, 0);
   DCHECK(pointer_id_map_.find(index) == pointer_id_map_.end());
-  int touch_index = touch_event_.PressPoint(x, y);
+  int touch_index = touch_event_.PressPoint(x, y, width / 2.f, height / 2.f,
+                                            rotation_angle, force);
   touch_event_.touches[touch_index].id = index;
   pointer_id_map_[index] = touch_index;
 }
@@ -39,10 +44,15 @@
 void SyntheticTouchDriver::Move(float x,
                                 float y,
                                 int index,
-                                int key_modifiers) {
+                                int key_modifiers,
+                                float width,
+                                float height,
+                                float rotation_angle,
+                                float force) {
   DCHECK_GE(index, 0);
   DCHECK(pointer_id_map_.find(index) != pointer_id_map_.end());
-  touch_event_.MovePoint(pointer_id_map_[index], x, y);
+  touch_event_.MovePoint(pointer_id_map_[index], x, y, width / 2.f,
+                         height / 2.f, rotation_angle, force);
 }
 
 void SyntheticTouchDriver::Release(int index,
diff --git a/content/browser/renderer_host/input/synthetic_touch_driver.h b/content/browser/renderer_host/input/synthetic_touch_driver.h
index b73d951..687a619b 100644
--- a/content/browser/renderer_host/input/synthetic_touch_driver.h
+++ b/content/browser/renderer_host/input/synthetic_touch_driver.h
@@ -27,8 +27,19 @@
              int index,
              SyntheticPointerActionParams::Button button =
                  SyntheticPointerActionParams::Button::LEFT,
-             int key_modifiers = 0) override;
-  void Move(float x, float y, int index, int key_modifiers = 0) override;
+             int key_modifiers = 0,
+             float width = 40.f,
+             float height = 40.f,
+             float rotation_angle = 0.f,
+             float force = 1.f) override;
+  void Move(float x,
+            float y,
+            int index,
+            int key_modifiers = 0,
+            float width = 40.f,
+            float height = 40.f,
+            float rotation_angle = 0.f,
+            float force = 1.f) override;
   void Release(int index,
                SyntheticPointerActionParams::Button button =
                    SyntheticPointerActionParams::Button::LEFT,
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index d4c3eaa..125dc6e9 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -211,17 +211,10 @@
 // initializers if |kUseFakeDeviceForMediaStream| is set. Returns a
 // MediaStreamDevice with default DesktopMediaID otherwise.
 MediaStreamDevice MediaStreamDeviceFromFakeDeviceConfig() {
-  // TODO(emircan): When getDisplayMedia() accepts constraints, pick
-  // the corresponding type.
-  DesktopMediaID media_id(DesktopMediaID::TYPE_SCREEN, DesktopMediaID::kNullId);
-
-  MediaStreamDevice device(blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
-                           media_id.ToString(), media_id.ToString());
+  DesktopMediaID::Type desktop_media_type = DesktopMediaID::TYPE_SCREEN;
+  DesktopMediaID::Id desktop_media_id_id = DesktopMediaID::kNullId;
   media::mojom::DisplayCaptureSurfaceType display_surface =
       media::mojom::DisplayCaptureSurfaceType::MONITOR;
-  device.display_media_info = media::mojom::DisplayMediaInformation::New(
-      display_surface, true, media::mojom::CursorCaptureType::NEVER);
-
   const base::CommandLine* command_line =
       base::CommandLine::ForCurrentProcess();
   if (command_line &&
@@ -232,29 +225,29 @@
             command_line->GetSwitchValueASCII(
                 switches::kUseFakeDeviceForMediaStream),
             &config);
-    if (config.empty())
-      return device;
-
-    DesktopMediaID::Type desktop_media_type = DesktopMediaID::TYPE_NONE;
-    switch (config[0].display_media_type) {
-      case media::FakeVideoCaptureDevice::DisplayMediaType::ANY:
-      case media::FakeVideoCaptureDevice::DisplayMediaType::MONITOR:
-        desktop_media_type = DesktopMediaID::TYPE_SCREEN;
-        display_surface = media::mojom::DisplayCaptureSurfaceType::MONITOR;
-        break;
-      case media::FakeVideoCaptureDevice::DisplayMediaType::WINDOW:
-        desktop_media_type = DesktopMediaID::TYPE_WINDOW;
-        display_surface = media::mojom::DisplayCaptureSurfaceType::WINDOW;
-        break;
-      case media::FakeVideoCaptureDevice::DisplayMediaType::BROWSER:
-        desktop_media_type = DesktopMediaID::TYPE_WEB_CONTENTS;
-        display_surface = media::mojom::DisplayCaptureSurfaceType::BROWSER;
-        break;
+    if (!config.empty()) {
+      desktop_media_type = DesktopMediaID::TYPE_NONE;
+      desktop_media_id_id = DesktopMediaID::kFakeId;
+      switch (config[0].display_media_type) {
+        case media::FakeVideoCaptureDevice::DisplayMediaType::ANY:
+        case media::FakeVideoCaptureDevice::DisplayMediaType::MONITOR:
+          desktop_media_type = DesktopMediaID::TYPE_SCREEN;
+          display_surface = media::mojom::DisplayCaptureSurfaceType::MONITOR;
+          break;
+        case media::FakeVideoCaptureDevice::DisplayMediaType::WINDOW:
+          desktop_media_type = DesktopMediaID::TYPE_WINDOW;
+          display_surface = media::mojom::DisplayCaptureSurfaceType::WINDOW;
+          break;
+        case media::FakeVideoCaptureDevice::DisplayMediaType::BROWSER:
+          desktop_media_type = DesktopMediaID::TYPE_WEB_CONTENTS;
+          display_surface = media::mojom::DisplayCaptureSurfaceType::BROWSER;
+          break;
+      }
     }
-    media_id = DesktopMediaID(desktop_media_type, DesktopMediaID::kFakeId);
   }
-  device = MediaStreamDevice(blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
-                             media_id.ToString(), media_id.ToString());
+  DesktopMediaID media_id(desktop_media_type, desktop_media_id_id);
+  MediaStreamDevice device(blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
+                           media_id.ToString(), media_id.ToString());
   device.display_media_info = media::mojom::DisplayMediaInformation::New(
       display_surface, true, media::mojom::CursorCaptureType::NEVER);
   return device;
@@ -1156,6 +1149,13 @@
     MediaStreamDevices devices;
     if (request->video_type() == blink::MEDIA_DISPLAY_VIDEO_CAPTURE) {
       devices.push_back(MediaStreamDeviceFromFakeDeviceConfig());
+      if (request->audio_type() == blink::MEDIA_DISPLAY_AUDIO_CAPTURE) {
+        DesktopMediaID media_id(DesktopMediaID::TYPE_SCREEN,
+                                DesktopMediaID::kNullId);
+        devices.emplace_back(
+            MediaStreamDevice(blink::MEDIA_DISPLAY_AUDIO_CAPTURE,
+                              media_id.ToString(), media_id.ToString()));
+      }
     } else if (request->video_type() ==
                blink::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE) {
       // Cache the |label| in the device name field, for unit test purpose only.
@@ -1255,7 +1255,8 @@
   // selection of a source, see
   // https://w3c.github.io/mediacapture-screen-share/#constraints.
   if (!request->controls.video.requested ||
-      !request->controls.video.device_id.empty()) {
+      !request->controls.video.device_id.empty() ||
+      !request->controls.audio.device_id.empty()) {
     LOG(ERROR) << "Invalid display media request.";
     return false;
   }
diff --git a/content/browser/renderer_host/media/media_stream_manager_unittest.cc b/content/browser/renderer_host/media/media_stream_manager_unittest.cc
index d00a39c..7a35143 100644
--- a/content/browser/renderer_host/media/media_stream_manager_unittest.cc
+++ b/content/browser/renderer_host/media/media_stream_manager_unittest.cc
@@ -233,6 +233,89 @@
         controls, security_origin, std::move(callback));
   }
 
+  void RequestAndStopGetDisplayMedia(bool request_audio) {
+    media_stream_manager_->UseFakeUIFactoryForTests(base::BindRepeating([]() {
+      return std::make_unique<FakeMediaStreamUIProxy>(
+          true
+          /*tests_use_fake_render_frame_hosts=*/);
+    }));
+
+    blink::StreamControls controls(request_audio /* request_audio */,
+                                   true /* request_video */);
+    controls.video.stream_type = blink::MEDIA_DISPLAY_VIDEO_CAPTURE;
+    if (request_audio)
+      controls.audio.stream_type = blink::MEDIA_DISPLAY_AUDIO_CAPTURE;
+    const int render_process_id = 1;
+    const int render_frame_id = 1;
+    const int requester_id = 1;
+    const int page_request_id = 1;
+
+    blink::MediaStreamDevice video_device;
+    blink::MediaStreamDevice audio_device;
+    MediaStreamManager::GenerateStreamCallback generate_stream_callback =
+        base::BindOnce(
+            [](base::RunLoop* wait_loop, bool request_audio,
+               blink::MediaStreamDevice* audio_device,
+               blink::MediaStreamDevice* video_device,
+               blink::MediaStreamRequestResult result, const std::string& label,
+               const blink::MediaStreamDevices& audio_devices,
+               const blink::MediaStreamDevices& video_devices) {
+              if (request_audio) {
+                EXPECT_EQ(1u, audio_devices.size());
+                *audio_device = audio_devices[0];
+              }
+              ASSERT_EQ(1u, video_devices.size());
+              *video_device = video_devices[0];
+              wait_loop->Quit();
+            },
+            &run_loop_, request_audio, &audio_device, &video_device);
+    MediaStreamManager::DeviceStoppedCallback stopped_callback;
+    MediaStreamManager::DeviceChangedCallback changed_callback;
+
+    std::vector<blink::MediaStreamType> expected_types;
+    expected_types.push_back(blink::MEDIA_DISPLAY_VIDEO_CAPTURE);
+    if (request_audio)
+      expected_types.push_back(blink::MEDIA_DISPLAY_AUDIO_CAPTURE);
+    for (blink::MediaStreamType expected_type : expected_types) {
+      EXPECT_CALL(*media_observer_, OnMediaRequestStateChanged(
+                                        _, _, _, _, expected_type,
+                                        MEDIA_REQUEST_STATE_PENDING_APPROVAL));
+      EXPECT_CALL(*media_observer_,
+                  OnMediaRequestStateChanged(_, _, _, _, expected_type,
+                                             MEDIA_REQUEST_STATE_OPENING));
+      EXPECT_CALL(*media_observer_,
+                  OnMediaRequestStateChanged(_, _, _, _, expected_type,
+                                             MEDIA_REQUEST_STATE_DONE));
+    }
+    media_stream_manager_->GenerateStream(
+        render_process_id, render_frame_id, requester_id, page_request_id,
+        controls, MediaDeviceSaltAndOrigin(), false /* user_gesture */,
+        std::move(generate_stream_callback), std::move(stopped_callback),
+        std::move(changed_callback));
+    run_loop_.Run();
+
+    EXPECT_EQ(blink::MEDIA_DISPLAY_VIDEO_CAPTURE, video_device.type);
+    if (request_audio)
+      EXPECT_EQ(blink::MEDIA_DISPLAY_AUDIO_CAPTURE, audio_device.type);
+
+    EXPECT_CALL(*media_observer_,
+                OnMediaRequestStateChanged(_, _, _, _,
+                                           blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
+                                           MEDIA_REQUEST_STATE_CLOSING));
+    media_stream_manager_->StopStreamDevice(render_process_id, render_frame_id,
+                                            requester_id, video_device.id,
+                                            video_device.session_id);
+    if (request_audio) {
+      EXPECT_CALL(*media_observer_,
+                  OnMediaRequestStateChanged(_, _, _, _,
+                                             blink::MEDIA_DISPLAY_AUDIO_CAPTURE,
+                                             MEDIA_REQUEST_STATE_CLOSING));
+      media_stream_manager_->StopStreamDevice(
+          render_process_id, render_frame_id, requester_id, audio_device.id,
+          audio_device.session_id);
+    }
+  }
+
   // media_stream_manager_ needs to outlive thread_bundle_ because it is a
   // MessageLoopCurrent::DestructionObserver. audio_manager_ needs to outlive
   // thread_bundle_ because it uses the underlying message loop.
@@ -428,63 +511,12 @@
     EXPECT_TRUE(base::IsAsciiDigit(c) || (c >= 'a' && c <= 'f'));
 }
 
-TEST_F(MediaStreamManagerTest, GetDisplayMediaRequest) {
-  media_stream_manager_->UseFakeUIFactoryForTests(base::BindRepeating([]() {
-    return std::make_unique<FakeMediaStreamUIProxy>(
-        /*tests_use_fake_render_frame_hosts=*/true);
-  }));
+TEST_F(MediaStreamManagerTest, GetDisplayMediaRequestVideoOnly) {
+  RequestAndStopGetDisplayMedia(false /* request_audio */);
+}
 
-  blink::StreamControls controls(false /* request_audio */,
-                                 true /* request_video */);
-  controls.video.stream_type = blink::MEDIA_DISPLAY_VIDEO_CAPTURE;
-  const int render_process_id = 1;
-  const int render_frame_id = 1;
-  const int requester_id = 1;
-  const int page_request_id = 1;
-
-  blink::MediaStreamDevice video_device;
-  MediaStreamManager::GenerateStreamCallback generate_stream_callback =
-      base::BindOnce(
-          [](base::RunLoop* wait_loop, blink::MediaStreamDevice* video_device,
-             blink::MediaStreamRequestResult result, const std::string& label,
-             const blink::MediaStreamDevices& audio_devices,
-             const blink::MediaStreamDevices& video_devices) {
-            EXPECT_EQ(0u, audio_devices.size());
-            ASSERT_EQ(1u, video_devices.size());
-            *video_device = video_devices[0];
-            wait_loop->Quit();
-          },
-          &run_loop_, &video_device);
-  MediaStreamManager::DeviceStoppedCallback stopped_callback;
-  MediaStreamManager::DeviceChangedCallback changed_callback;
-  EXPECT_CALL(
-      *media_observer_,
-      OnMediaRequestStateChanged(_, _, _, _, blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
-                                 MEDIA_REQUEST_STATE_PENDING_APPROVAL));
-  EXPECT_CALL(
-      *media_observer_,
-      OnMediaRequestStateChanged(_, _, _, _, blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
-                                 MEDIA_REQUEST_STATE_OPENING));
-  EXPECT_CALL(
-      *media_observer_,
-      OnMediaRequestStateChanged(_, _, _, _, blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
-                                 MEDIA_REQUEST_STATE_DONE));
-  media_stream_manager_->GenerateStream(
-      render_process_id, render_frame_id, requester_id, page_request_id,
-      controls, MediaDeviceSaltAndOrigin(), false /* user_gesture */,
-      std::move(generate_stream_callback), std::move(stopped_callback),
-      std::move(changed_callback));
-  run_loop_.Run();
-
-  EXPECT_EQ(blink::MEDIA_DISPLAY_VIDEO_CAPTURE, video_device.type);
-  EXPECT_TRUE(video_device.display_media_info.has_value());
-  EXPECT_CALL(
-      *media_observer_,
-      OnMediaRequestStateChanged(_, _, _, _, blink::MEDIA_DISPLAY_VIDEO_CAPTURE,
-                                 MEDIA_REQUEST_STATE_CLOSING));
-  media_stream_manager_->StopStreamDevice(render_process_id, render_frame_id,
-                                          requester_id, video_device.id,
-                                          video_device.session_id);
+TEST_F(MediaStreamManagerTest, GetDisplayMediaRequestAudioAndVideo) {
+  RequestAndStopGetDisplayMedia(true /* request_audio */);
 }
 
 TEST_F(MediaStreamManagerTest, GetDisplayMediaRequestCallsUIProxy) {
diff --git a/content/browser/renderer_host/render_view_host_delegate.cc b/content/browser/renderer_host/render_view_host_delegate.cc
index 8aa0ca33..89feeaf9 100644
--- a/content/browser/renderer_host/render_view_host_delegate.cc
+++ b/content/browser/renderer_host/render_view_host_delegate.cc
@@ -65,4 +65,8 @@
   return nullptr;
 }
 
+bool RenderViewHostDelegate::IsPortal() const {
+  return false;
+}
+
 }  // namespace content
diff --git a/content/browser/renderer_host/render_view_host_delegate.h b/content/browser/renderer_host/render_view_host_delegate.h
index 27e5c470..3d15672 100644
--- a/content/browser/renderer_host/render_view_host_delegate.h
+++ b/content/browser/renderer_host/render_view_host_delegate.h
@@ -195,6 +195,9 @@
   // has been visually updated.
   virtual void DidCommitAndDrawCompositorFrame(RenderViewHostImpl* source) {}
 
+  // Returns true if the render view is rendering a portal.
+  virtual bool IsPortal() const;
+
  protected:
   virtual ~RenderViewHostDelegate() {}
 };
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index 29f92fa..a8df14b2 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -376,6 +376,7 @@
   // GuestViews in the same StoragePartition need to find each other's frames.
   params->renderer_wide_named_frame_lookup =
       GetSiteInstance()->GetSiteURL().SchemeIs(kGuestScheme);
+  params->inside_portal = delegate_->IsPortal();
 
   bool needs_ack = false;
   GetWidget()->GetVisualProperties(&params->visual_properties, &needs_ack);
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 60e37cf..97e5dcb 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -850,40 +850,39 @@
 bool RenderWidgetHostImpl::GetVisualProperties(
     VisualProperties* visual_properties,
     bool* needs_ack) {
+  // This is only called while the RenderWidgetHost is attached to a delegate
+  // still.
+  DCHECK(delegate_);
+
   *visual_properties = VisualProperties();
 
   GetScreenInfo(&visual_properties->screen_info);
 
-  if (!delegate_) {
-    visual_properties->display_mode = blink::kWebDisplayModeBrowser;
-  } else {
-    visual_properties->is_fullscreen_granted =
-        delegate_->IsFullscreenForCurrentTab();
-    visual_properties->display_mode = delegate_->GetDisplayMode(this);
-    visual_properties->zoom_level = delegate_->GetPendingPageZoomLevel();
+  visual_properties->is_fullscreen_granted =
+      delegate_->IsFullscreenForCurrentTab();
+  visual_properties->display_mode = delegate_->GetDisplayMode(this);
+  visual_properties->zoom_level = delegate_->GetPendingPageZoomLevel();
 
-    RenderViewHostDelegateView* rvh_delegate_view =
-        delegate_->GetDelegateView();
-    DCHECK(rvh_delegate_view);
+  RenderViewHostDelegateView* rvh_delegate_view = delegate_->GetDelegateView();
+  DCHECK(rvh_delegate_view);
 
-    visual_properties->browser_controls_shrink_blink_size =
-        rvh_delegate_view->DoBrowserControlsShrinkRendererSize();
+  visual_properties->browser_controls_shrink_blink_size =
+      rvh_delegate_view->DoBrowserControlsShrinkRendererSize();
 
-    float top_controls_height = rvh_delegate_view->GetTopControlsHeight();
-    float bottom_controls_height = rvh_delegate_view->GetBottomControlsHeight();
-    float browser_controls_dsf_multiplier = 1.f;
-    // The top and bottom control sizes are physical pixels but the IPC wants
-    // DIPs *when not using page zoom for DSF* because blink layout is working
-    // in DIPs then.
-    if (!IsUseZoomForDSFEnabled()) {
-      browser_controls_dsf_multiplier =
-          visual_properties->screen_info.device_scale_factor;
-    }
-    visual_properties->top_controls_height =
-        top_controls_height / browser_controls_dsf_multiplier;
-    visual_properties->bottom_controls_height =
-        bottom_controls_height / browser_controls_dsf_multiplier;
+  float top_controls_height = rvh_delegate_view->GetTopControlsHeight();
+  float bottom_controls_height = rvh_delegate_view->GetBottomControlsHeight();
+  float browser_controls_dsf_multiplier = 1.f;
+  // The top and bottom control sizes are physical pixels but the IPC wants
+  // DIPs *when not using page zoom for DSF* because blink layout is working
+  // in DIPs then.
+  if (!IsUseZoomForDSFEnabled()) {
+    browser_controls_dsf_multiplier =
+        visual_properties->screen_info.device_scale_factor;
   }
+  visual_properties->top_controls_height =
+      top_controls_height / browser_controls_dsf_multiplier;
+  visual_properties->bottom_controls_height =
+      bottom_controls_height / browser_controls_dsf_multiplier;
 
   visual_properties->auto_resize_enabled = auto_resize_enabled_;
   visual_properties->min_size_for_auto_resize = min_size_for_auto_resize_;
@@ -2168,6 +2167,8 @@
   g_routing_id_widget_map.Get().erase(
       RenderWidgetHostID(process_->GetID(), routing_id_));
 
+  // The |delegate_| may have been destroyed (or is in the process of being
+  // destroyed) and detached first.
   if (delegate_)
     delegate_->RenderWidgetDeleted(this);
 
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 4fd95dc..0748ea2c 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -510,6 +510,9 @@
   // properties.
   void ResetSentVisualProperties();
 
+  // When the WebContents (which acts as the Delegate) is destroyed, this object
+  // may still outlive it while the renderer is shutting down. In that case the
+  // delegate pointer is removed (since it would be a UAF).
   void DetachDelegate();
 
   // Update the renderer's cache of the screen rect of the view and window.
diff --git a/content/browser/resources/indexed_db/indexeddb_internals.html b/content/browser/resources/indexed_db/indexeddb_internals.html
index 2c87cd9d..0b66ea2 100644
--- a/content/browser/resources/indexed_db/indexeddb_internals.html
+++ b/content/browser/resources/indexed_db/indexeddb_internals.html
@@ -1,13 +1,12 @@
 <!doctype html>
-<html i18n-values="dir:textdirection;lang:language">
+<html dir="$i18n{textdirection}" lang="$i18n{language}">
 <head>
   <meta charset="utf-8">
   <title>IndexedDB</title>
-  <link rel="stylesheet" href="chrome://resources/css/tabs.css">
-  <link rel="stylesheet" href="chrome://resources/css/widgets.css">
+  <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
   <link rel="stylesheet" href="indexeddb_internals.css">
 </head>
-<body i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize">
+<body>
     <!-- templates -->
     <div style="display:none">
         <div id="indexeddb-list-template"
@@ -172,9 +171,6 @@
     <script src="chrome://resources/js/util.js"></script>
     <script src="chrome://resources/js/cr.js"></script>
     <script src="indexeddb_internals.js"></script>
-    <script src="chrome://resources/js/load_time_data.js"></script>
     <script src="chrome://resources/js/jstemplate_compiled.js"></script>
-    <script src="strings.js"></script>
-    <script src="chrome://resources/js/i18n_template.js"></script>
 </body>
 </html>
diff --git a/content/browser/speech/tts_platform_impl.cc b/content/browser/speech/tts_platform_impl.cc
index b6805ab..877ba2ab 100644
--- a/content/browser/speech/tts_platform_impl.cc
+++ b/content/browser/speech/tts_platform_impl.cc
@@ -5,7 +5,10 @@
 #include "content/browser/speech/tts_platform_impl.h"
 
 #include "build/build_config.h"
+
+#if defined(OS_CHROMEOS)
 #include "content/public/browser/content_browser_client.h"
+#endif
 
 #include <string>
 
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 4c43834..3ee27915 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4955,6 +4955,10 @@
     observer.DidCommitAndDrawCompositorFrame();
 }
 
+bool WebContentsImpl::IsPortal() const {
+  return portal();
+}
+
 void WebContentsImpl::NotifyBeforeFormRepostWarningShow() {
   for (auto& observer : observers_)
     observer.BeforeFormRepostWarningShow();
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 91546771..177a548 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -669,6 +669,7 @@
   RenderFrameHost* GetPendingMainFrame() override;
   void DidFirstVisuallyNonEmptyPaint(RenderViewHostImpl* source) override;
   void DidCommitAndDrawCompositorFrame(RenderViewHostImpl* source) override;
+  bool IsPortal() const override;
 
   // NavigatorDelegate ---------------------------------------------------------
 
@@ -1019,7 +1020,7 @@
   // then this WebContents is embedded in a portal and its outer WebContents can
   // be found by using GetOuterWebContents().
   void set_portal(Portal* portal) { portal_ = portal; }
-  Portal* portal() { return portal_; }
+  Portal* portal() const { return portal_; }
 
  private:
   friend class WebContentsObserver;
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc
index 1814d26..e9217f0 100644
--- a/content/child/blink_platform_impl.cc
+++ b/content/child/blink_platform_impl.cc
@@ -51,7 +51,6 @@
 #include "third_party/zlib/google/compression_utils.h"
 #include "ui/base/layout.h"
 #include "ui/events/gestures/blink/web_gesture_curve_impl.h"
-#include "ui/events/keycodes/dom/keycode_converter.h"
 
 using blink::WebData;
 using blink::WebLocalizedString;
@@ -680,31 +679,6 @@
   return base::SysInfo::IsLowEndDevice();
 }
 
-WebString BlinkPlatformImpl::DomCodeStringFromEnum(int dom_code) {
-  return WebString::FromUTF8(ui::KeycodeConverter::DomCodeToCodeString(
-      static_cast<ui::DomCode>(dom_code)));
-}
-
-int BlinkPlatformImpl::DomEnumFromCodeString(const WebString& code) {
-  return static_cast<int>(
-      ui::KeycodeConverter::CodeStringToDomCode(code.Utf8()));
-}
-
-WebString BlinkPlatformImpl::DomKeyStringFromEnum(int dom_key) {
-  return WebString::FromUTF8(ui::KeycodeConverter::DomKeyToKeyString(
-      static_cast<ui::DomKey>(dom_key)));
-}
-
-int BlinkPlatformImpl::DomKeyEnumFromString(const WebString& key_string) {
-  return static_cast<int>(
-      ui::KeycodeConverter::KeyStringToDomKey(key_string.Utf8()));
-}
-
-bool BlinkPlatformImpl::IsDomKeyForModifier(int dom_key) {
-  return ui::KeycodeConverter::IsDomKeyForModifier(
-      static_cast<ui::DomKey>(dom_key));
-}
-
 scoped_refptr<base::SingleThreadTaskRunner> BlinkPlatformImpl::GetIOTaskRunner()
     const {
   return io_thread_task_runner_;
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h
index 000a65c..73426b23 100644
--- a/content/child/blink_platform_impl.h
+++ b/content/child/blink_platform_impl.h
@@ -79,12 +79,6 @@
   const char* GetBrowserServiceName() const override;
   blink::WebMediaCapabilitiesClient* MediaCapabilitiesClient() override;
 
-  blink::WebString DomCodeStringFromEnum(int dom_code) override;
-  int DomEnumFromCodeString(const blink::WebString& codeString) override;
-  blink::WebString DomKeyStringFromEnum(int dom_key) override;
-  int DomKeyEnumFromString(const blink::WebString& key_string) override;
-  bool IsDomKeyForModifier(int dom_key) override;
-
   scoped_refptr<base::SingleThreadTaskRunner> GetIOTaskRunner() const override;
   std::unique_ptr<NestedMessageLoopRunner> CreateNestedMessageLoopRunner()
       const override;
diff --git a/content/common/input/synthetic_pointer_action_params.cc b/content/common/input/synthetic_pointer_action_params.cc
index 1987447..2bd7dc7 100644
--- a/content/common/input/synthetic_pointer_action_params.cc
+++ b/content/common/input/synthetic_pointer_action_params.cc
@@ -6,20 +6,13 @@
 
 namespace content {
 
-SyntheticPointerActionParams::SyntheticPointerActionParams()
-    : pointer_action_type_(PointerActionType::NOT_INITIALIZED),
-      pointer_id_(0),
-      button_(Button::LEFT),
-      key_modifiers_(0) {}
+SyntheticPointerActionParams::SyntheticPointerActionParams() = default;
 
 SyntheticPointerActionParams::SyntheticPointerActionParams(
     PointerActionType action_type)
-    : pointer_action_type_(action_type),
-      pointer_id_(0),
-      button_(Button::LEFT),
-      key_modifiers_(0) {}
+    : pointer_action_type_(action_type) {}
 
-SyntheticPointerActionParams::~SyntheticPointerActionParams() {}
+SyntheticPointerActionParams::~SyntheticPointerActionParams() = default;
 
 // static
 unsigned SyntheticPointerActionParams::GetWebMouseEventModifier(
diff --git a/content/common/input/synthetic_pointer_action_params.h b/content/common/input/synthetic_pointer_action_params.h
index a11c855..68b0becc 100644
--- a/content/common/input/synthetic_pointer_action_params.h
+++ b/content/common/input/synthetic_pointer_action_params.h
@@ -46,7 +46,7 @@
   };
 
   SyntheticPointerActionParams();
-  SyntheticPointerActionParams(PointerActionType action_type);
+  explicit SyntheticPointerActionParams(PointerActionType action_type);
   ~SyntheticPointerActionParams();
 
   void set_pointer_action_type(PointerActionType pointer_action_type) {
@@ -72,6 +72,30 @@
     key_modifiers_ = key_modifiers;
   }
 
+  void set_width(float width) {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    width_ = width;
+  }
+
+  void set_height(float height) {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    height_ = height;
+  }
+
+  void set_rotation_angle(float rotation_angle) {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    rotation_angle_ = rotation_angle;
+  }
+
+  void set_force(float force) {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    force_ = force;
+  }
+
   PointerActionType pointer_action_type() const { return pointer_action_type_; }
 
   uint32_t pointer_id() const { return pointer_id_; }
@@ -93,6 +117,30 @@
     return key_modifiers_;
   }
 
+  float width() const {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    return width_;
+  }
+
+  float height() const {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    return height_;
+  }
+
+  float rotation_angle() const {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    return rotation_angle_;
+  }
+
+  float force() const {
+    DCHECK(pointer_action_type_ == PointerActionType::PRESS ||
+           pointer_action_type_ == PointerActionType::MOVE);
+    return force_;
+  }
+
   static unsigned GetWebMouseEventModifier(
       SyntheticPointerActionParams::Button button);
   static blink::WebMouseEvent::Button GetWebMouseEventButton(
@@ -104,16 +152,20 @@
   friend struct IPC::ParamTraits<content::SyntheticPointerActionParams>;
   friend struct ipc_fuzzer::FuzzTraits<content::SyntheticPointerActionParams>;
 
-  PointerActionType pointer_action_type_;
+  PointerActionType pointer_action_type_ = PointerActionType::NOT_INITIALIZED;
   // The position of the pointer, where it presses or moves to.
   gfx::PointF position_;
   // The id of the pointer given by the users.
-  uint32_t pointer_id_;
-  Button button_;
+  uint32_t pointer_id_ = 0;
+  Button button_ = Button::LEFT;
   // “Alt“, ”Control“, ”Meta“, ”Shift“, ”CapsLock“, ”NumLock“, ”AltGraph”
   // buttons are supported right now. It stores a matching modifiers defined
   // in WebInputEvent class.
-  int key_modifiers_;
+  int key_modifiers_ = 0;
+  float width_ = 40.f;
+  float height_ = 40.f;
+  float rotation_angle_ = 0.f;
+  float force_ = 1.f;
 };
 
 }  // namespace content
diff --git a/content/common/input/synthetic_web_input_event_builders.cc b/content/common/input/synthetic_web_input_event_builders.cc
index dc22dac..dafd7e1 100644
--- a/content/common/input/synthetic_web_input_event_builders.cc
+++ b/content/common/input/synthetic_web_input_event_builders.cc
@@ -202,7 +202,12 @@
   unique_touch_event_id = ui::GetNextTouchEventId();
 }
 
-int SyntheticWebTouchEvent::PressPoint(float x, float y) {
+int SyntheticWebTouchEvent::PressPoint(float x,
+                                       float y,
+                                       float radius_x,
+                                       float radius_y,
+                                       float rotation_angle,
+                                       float force) {
   int index = FirstFreeIndex();
   if (index == -1)
     return -1;
@@ -211,10 +216,10 @@
   point.SetPositionInWidget(x, y);
   point.SetPositionInScreen(x, y);
   point.state = WebTouchPoint::kStatePressed;
-  // Use radius != default(25.f) to test the value is propagated correctly
-  point.radius_x = point.radius_y = 20.f;
-  point.rotation_angle = 1.f;
-  point.force = 1.f;
+  point.radius_x = radius_x;
+  point.radius_y = radius_y;
+  point.rotation_angle = rotation_angle;
+  point.force = force;
   point.tilt_x = point.tilt_y = 0;
   point.pointer_type = blink::WebPointerProperties::PointerType::kTouch;
   ++touches_length;
@@ -222,7 +227,13 @@
   return index;
 }
 
-void SyntheticWebTouchEvent::MovePoint(int index, float x, float y) {
+void SyntheticWebTouchEvent::MovePoint(int index,
+                                       float x,
+                                       float y,
+                                       float radius_x,
+                                       float radius_y,
+                                       float rotation_angle,
+                                       float force) {
   CHECK_GE(index, 0);
   CHECK_LT(index, kTouchesLengthCap);
   // Always set this bit to avoid otherwise unexpected touchmove suppression.
@@ -231,7 +242,11 @@
   WebTouchPoint& point = touches[index];
   point.SetPositionInWidget(x, y);
   point.SetPositionInScreen(x, y);
-  touches[index].state = WebTouchPoint::kStateMoved;
+  point.state = WebTouchPoint::kStateMoved;
+  point.radius_x = radius_x;
+  point.radius_y = radius_y;
+  point.rotation_angle = rotation_angle;
+  point.force = force;
   WebTouchEventTraits::ResetType(WebInputEvent::kTouchMove, TimeStamp(), this);
 }
 
diff --git a/content/common/input/synthetic_web_input_event_builders.h b/content/common/input/synthetic_web_input_event_builders.h
index 52c0b72..9c29e98b 100644
--- a/content/common/input/synthetic_web_input_event_builders.h
+++ b/content/common/input/synthetic_web_input_event_builders.h
@@ -91,8 +91,19 @@
   void ResetPoints();
 
   // Adds an additional point to the touch list, returning the point's index.
-  int PressPoint(float x, float y);
-  void MovePoint(int index, float x, float y);
+  int PressPoint(float x,
+                 float y,
+                 float radius_x = 20.f,
+                 float radius_y = 20.f,
+                 float rotation_angle = 0.f,
+                 float force = 1.f);
+  void MovePoint(int index,
+                 float x,
+                 float y,
+                 float radius_x = 20.f,
+                 float radius_y = 20.f,
+                 float rotation_angle = 0.f,
+                 float force = 1.f);
   void ReleasePoint(int index);
   void CancelPoint(int index);
 
diff --git a/content/common/input_messages.h b/content/common/input_messages.h
index e870323f..a979b27b 100644
--- a/content/common/input_messages.h
+++ b/content/common/input_messages.h
@@ -145,6 +145,10 @@
   IPC_STRUCT_TRAITS_MEMBER(position_)
   IPC_STRUCT_TRAITS_MEMBER(button_)
   IPC_STRUCT_TRAITS_MEMBER(key_modifiers_)
+  IPC_STRUCT_TRAITS_MEMBER(width_)
+  IPC_STRUCT_TRAITS_MEMBER(height_)
+  IPC_STRUCT_TRAITS_MEMBER(rotation_angle_)
+  IPC_STRUCT_TRAITS_MEMBER(force_)
 IPC_STRUCT_TRAITS_END()
 
 IPC_STRUCT_TRAITS_BEGIN(content::SyntheticPointerActionListParams)
diff --git a/content/common/renderer.mojom b/content/common/renderer.mojom
index 008ccd37c..45cc39c 100644
--- a/content/common/renderer.mojom
+++ b/content/common/renderer.mojom
@@ -81,6 +81,9 @@
   // window.open or via <a target=...>) should be renderer-wide (i.e. going
   // beyond the usual opener-relationship-based BrowsingInstance boundaries).
   bool renderer_wide_named_frame_lookup;
+
+  // Set this to true when creating a RenderView inside a portal.
+  bool inside_portal;
 };
 
 struct CreateFrameWidgetParams {
diff --git a/content/public/renderer/chrome_object_extensions_utils.cc b/content/public/renderer/chrome_object_extensions_utils.cc
index c2d0dc3..de4c0e4 100644
--- a/content/public/renderer/chrome_object_extensions_utils.cc
+++ b/content/public/renderer/chrome_object_extensions_utils.cc
@@ -10,13 +10,16 @@
 namespace content {
 
 v8::Local<v8::Object> GetOrCreateChromeObject(v8::Isolate* isolate,
-                                              v8::Local<v8::Object> global) {
+                                              v8::Local<v8::Context> context) {
+  v8::Local<v8::Object> global = context->Global();
   v8::Local<v8::Object> chrome;
-  v8::Local<v8::Value> chrome_value =
-      global->Get(gin::StringToV8(isolate, "chrome"));
-  if (chrome_value.IsEmpty() || !chrome_value->IsObject()) {
+  v8::Local<v8::Value> chrome_value;
+  if (!global->Get(context, gin::StringToV8(isolate, "chrome"))
+           .ToLocal(&chrome_value) ||
+      !chrome_value->IsObject()) {
     chrome = v8::Object::New(isolate);
-    global->Set(gin::StringToSymbol(isolate, "chrome"), chrome);
+    global->Set(context, gin::StringToSymbol(isolate, "chrome"), chrome)
+        .Check();
   } else {
     chrome = v8::Local<v8::Object>::Cast(chrome_value);
   }
diff --git a/content/public/renderer/chrome_object_extensions_utils.h b/content/public/renderer/chrome_object_extensions_utils.h
index edb6d25a..3667a561 100644
--- a/content/public/renderer/chrome_object_extensions_utils.h
+++ b/content/public/renderer/chrome_object_extensions_utils.h
@@ -9,6 +9,7 @@
 
 namespace v8 {
 template<class T> class Local;
+class Context;
 class Object;
 class Isolate;
 }  // namespace v8
@@ -17,7 +18,7 @@
 
 CONTENT_EXPORT v8::Local<v8::Object> GetOrCreateChromeObject(
     v8::Isolate* isolate,
-    v8::Local<v8::Object> global);
+    v8::Local<v8::Context> context);
 
 }  // namespace content
 
diff --git a/content/renderer/gpu_benchmarking_extension.cc b/content/renderer/gpu_benchmarking_extension.cc
index 924ca71..16042eca 100644
--- a/content/renderer/gpu_benchmarking_extension.cc
+++ b/content/renderer/gpu_benchmarking_extension.cc
@@ -525,8 +525,7 @@
   if (controller.IsEmpty())
     return;
 
-  v8::Local<v8::Object> chrome =
-      GetOrCreateChromeObject(isolate, context->Global());
+  v8::Local<v8::Object> chrome = GetOrCreateChromeObject(isolate, context);
   chrome->Set(gin::StringToV8(isolate, "gpuBenchmarking"), controller.ToV8());
 }
 
diff --git a/content/renderer/media/stream/user_media_processor.cc b/content/renderer/media/stream/user_media_processor.cc
index e0e837a..7b848aa9 100644
--- a/content/renderer/media/stream/user_media_processor.cc
+++ b/content/renderer/media/stream/user_media_processor.cc
@@ -64,6 +64,15 @@
 
 void InitializeAudioTrackControls(const blink::WebUserMediaRequest& web_request,
                                   TrackControls* track_controls) {
+  if (web_request.MediaRequestType() ==
+      blink::WebUserMediaRequest::MediaType::kDisplayMedia) {
+    track_controls->requested = true;
+    track_controls->stream_type = blink::MEDIA_DISPLAY_AUDIO_CAPTURE;
+    return;
+  }
+
+  DCHECK_EQ(blink::WebUserMediaRequest::MediaType::kUserMedia,
+            web_request.MediaRequestType());
   const blink::WebMediaConstraints& constraints =
       web_request.AudioConstraints();
   DCHECK(!constraints.IsNull());
@@ -475,6 +484,13 @@
   auto& audio_controls = current_request_info_->stream_controls()->audio;
   InitializeAudioTrackControls(current_request_info_->web_request(),
                                &audio_controls);
+
+  if (audio_controls.stream_type == blink::MEDIA_DISPLAY_AUDIO_CAPTURE) {
+    SelectAudioSettings(current_request_info_->web_request(),
+                        {AudioDeviceCaptureCapability()});
+    return;
+  }
+
   if (IsDeviceMediaType(audio_controls.stream_type)) {
     GetMediaDevicesDispatcher()->GetAudioInputCapabilities(base::BindOnce(
         &UserMediaProcessor::SelectAudioDeviceSettings,
@@ -550,10 +566,13 @@
     GetUserMediaRequestFailed(result, failed_constraint_name);
     return;
   }
-  current_request_info_->stream_controls()->audio.device_id =
-      settings.device_id();
-  current_request_info_->stream_controls()->disable_local_echo =
-      settings.disable_local_echo();
+  if (current_request_info_->stream_controls()->audio.stream_type !=
+      blink::MEDIA_DISPLAY_AUDIO_CAPTURE) {
+    current_request_info_->stream_controls()->audio.device_id =
+        settings.device_id();
+    current_request_info_->stream_controls()->disable_local_echo =
+        settings.disable_local_echo();
+  }
   current_request_info_->SetAudioCaptureSettings(
       settings,
       !IsDeviceMediaType(
@@ -575,12 +594,6 @@
   auto& video_controls = current_request_info_->stream_controls()->video;
   InitializeVideoTrackControls(current_request_info_->web_request(),
                                &video_controls);
-
-  if (video_controls.stream_type == blink::MEDIA_DISPLAY_VIDEO_CAPTURE) {
-    SelectVideoContentSettings(false /* allow_device_id_constraint */);
-    return;
-  }
-
   if (IsDeviceMediaType(video_controls.stream_type)) {
     GetMediaDevicesDispatcher()->GetVideoInputCapabilities(base::BindOnce(
         &UserMediaProcessor::SelectVideoDeviceSettings,
@@ -597,7 +610,7 @@
       GetUserMediaRequestFailed(result, failed_constraint_name);
       return;
     }
-    SelectVideoContentSettings(true /* allow_device_id_constraint */);
+    SelectVideoContentSettings();
   }
 }
 
@@ -643,8 +656,7 @@
   GenerateStreamForCurrentRequestInfo();
 }
 
-void UserMediaProcessor::SelectVideoContentSettings(
-    bool allow_device_id_constraint) {
+void UserMediaProcessor::SelectVideoContentSettings() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(current_request_info_);
   gfx::Size screen_size = GetScreenSize();
@@ -660,10 +672,12 @@
                               failed_constraint_name);
     return;
   }
-  if (allow_device_id_constraint) {
+  if (current_request_info_->stream_controls()->video.stream_type !=
+      blink::MEDIA_DISPLAY_VIDEO_CAPTURE) {
     current_request_info_->stream_controls()->video.device_id =
         settings.device_id();
   }
+
   current_request_info_->SetVideoCaptureSettings(settings,
                                                  true /* is_content_capture */);
   GenerateStreamForCurrentRequestInfo();
diff --git a/content/renderer/media/stream/user_media_processor.h b/content/renderer/media/stream/user_media_processor.h
index cbc0b25..8a7c93a2 100644
--- a/content/renderer/media/stream/user_media_processor.h
+++ b/content/renderer/media/stream/user_media_processor.h
@@ -275,7 +275,7 @@
   void FinalizeSelectVideoDeviceSettings(
       const blink::WebUserMediaRequest& web_request,
       const VideoCaptureSettings& settings);
-  void SelectVideoContentSettings(bool allow_device_id_constraint);
+  void SelectVideoContentSettings();
 
   void GenerateStreamForCurrentRequestInfo();
 
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 398e0972..0de6fea 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -562,6 +562,11 @@
 
   nav_state_sync_timer_.SetTaskRunner(task_runner);
 
+  // We pass this state to Page, but it's only used by the main frame in the
+  // page.
+  if (params->inside_portal)
+    webview()->SetInsidePortal(true);
+
 #if defined(OS_ANDROID)
   // TODO(sgurun): crbug.com/325351 Needed only for android webview's deprecated
   // HandleNavigation codepath.
diff --git a/content/renderer/skia_benchmarking_extension.cc b/content/renderer/skia_benchmarking_extension.cc
index ae5dd66b..0ad993d7 100644
--- a/content/renderer/skia_benchmarking_extension.cc
+++ b/content/renderer/skia_benchmarking_extension.cc
@@ -124,8 +124,7 @@
   if (controller.IsEmpty())
     return;
 
-  v8::Local<v8::Object> chrome = GetOrCreateChromeObject(isolate,
-                                                          context->Global());
+  v8::Local<v8::Object> chrome = GetOrCreateChromeObject(isolate, context);
   chrome->Set(gin::StringToV8(isolate, "skiaBenchmarking"), controller.ToV8());
 }
 
diff --git a/content/renderer/web_ui_extension.cc b/content/renderer/web_ui_extension.cc
index 31ace7b..2e37ad5 100644
--- a/content/renderer/web_ui_extension.cc
+++ b/content/renderer/web_ui_extension.cc
@@ -73,8 +73,7 @@
 
   v8::Context::Scope context_scope(context);
 
-  v8::Local<v8::Object> chrome = GetOrCreateChromeObject(isolate,
-                                                          context->Global());
+  v8::Local<v8::Object> chrome = GetOrCreateChromeObject(isolate, context);
   chrome->Set(
       gin::StringToSymbol(isolate, "send"),
       gin::CreateFunctionTemplate(isolate, base::Bind(&WebUIExtension::Send))
diff --git a/content/test/data/accessibility/html/address-expected-android.txt b/content/test/data/accessibility/html/address-expected-android.txt
index 1a6c1d46..d7f7787 100644
--- a/content/test/data/accessibility/html/address-expected-android.txt
+++ b/content/test/data/accessibility/html/address-expected-android.txt
@@ -1,2 +1,2 @@
 android.webkit.WebView focusable focused scrollable
-++android.view.View role_description='content info' name='Please contact John Citizen for more information.'
\ No newline at end of file
+++android.view.View name='Please contact John Citizen for more information.'
diff --git a/content/test/data/accessibility/html/address-expected-auralinux.txt b/content/test/data/accessibility/html/address-expected-auralinux.txt
index 1216a6af..3dcd78f 100644
--- a/content/test/data/accessibility/html/address-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/address-expected-auralinux.txt
@@ -1,3 +1,3 @@
 [document web]
-++[landmark]
+++[section]
 ++++[text] name='Please contact John Citizen for more information.'
diff --git a/content/test/data/accessibility/html/address-expected-blink.txt b/content/test/data/accessibility/html/address-expected-blink.txt
index 5f80ebb..cc35b42 100644
--- a/content/test/data/accessibility/html/address-expected-blink.txt
+++ b/content/test/data/accessibility/html/address-expected-blink.txt
@@ -1,4 +1,4 @@
 rootWebArea
-++contentInfo
+++genericContainer
 ++++staticText name='Please contact John Citizen for more information.'
-++++++inlineTextBox name='Please contact John Citizen for more information.'
\ No newline at end of file
+++++++inlineTextBox name='Please contact John Citizen for more information.'
diff --git a/content/test/data/accessibility/html/address-expected-mac.txt b/content/test/data/accessibility/html/address-expected-mac.txt
index bbf11ae..b84eb60 100644
--- a/content/test/data/accessibility/html/address-expected-mac.txt
+++ b/content/test/data/accessibility/html/address-expected-mac.txt
@@ -1,3 +1,3 @@
 AXWebArea AXRoleDescription='HTML content'
-++AXGroup AXSubrole=AXLandmarkContentInfo AXRoleDescription='content info'
+++AXGroup AXRoleDescription='group'
 ++++AXStaticText AXRoleDescription='text' AXValue='Please contact John Citizen for more information.'
diff --git a/content/test/data/accessibility/html/address-expected-win.txt b/content/test/data/accessibility/html/address-expected-win.txt
index 4a89798..3cf37efe 100644
--- a/content/test/data/accessibility/html/address-expected-win.txt
+++ b/content/test/data/accessibility/html/address-expected-win.txt
@@ -1,3 +1,3 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++IA2_ROLE_LANDMARK
-++++ROLE_SYSTEM_STATICTEXT name='Please contact John Citizen for more information.'
\ No newline at end of file
+++IA2_ROLE_SECTION
+++++ROLE_SYSTEM_STATICTEXT name='Please contact John Citizen for more information.'
diff --git a/content/test/data/accessibility/html/landmark-expected-android.txt b/content/test/data/accessibility/html/landmark-expected-android.txt
index 9b5f5bf..8dd34dd 100644
--- a/content/test/data/accessibility/html/landmark-expected-android.txt
+++ b/content/test/data/accessibility/html/landmark-expected-android.txt
@@ -1,7 +1,7 @@
 android.webkit.WebView focusable focused scrollable
 ++android.view.View role_description='banner' name='This is a header element.'
 ++android.view.View role_description='complementary' name='This is an aside element.'
-++android.view.View role_description='content info' name='This is an address element.'
+++android.view.View name='This is an address element.'
 ++android.view.View role_description='footer' name='This is a footer element.'
 ++android.view.View name='This is a form element.'
 ++android.view.View role_description='main' name='This is a main element.'
@@ -91,4 +91,4 @@
 ++android.view.View
 ++++android.view.View name='This should NOT have footer role.'
 ++android.view.View role_description='main'
-++++android.view.View name='This should NOT have footer role.'
\ No newline at end of file
+++++android.view.View name='This should NOT have footer role.'
diff --git a/content/test/data/accessibility/html/landmark-expected-auralinux.txt b/content/test/data/accessibility/html/landmark-expected-auralinux.txt
index 185c954c..01e583e3 100644
--- a/content/test/data/accessibility/html/landmark-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/landmark-expected-auralinux.txt
@@ -3,7 +3,7 @@
 ++++[text] name='This is a header element.'
 ++[landmark] xml-roles:complementary
 ++++[text] name='This is an aside element.'
-++[landmark]
+++[section]
 ++++[text] name='This is an address element.'
 ++[footer] xml-roles:contentinfo
 ++++[text] name='This is a footer element.'
diff --git a/content/test/data/accessibility/html/landmark-expected-blink.txt b/content/test/data/accessibility/html/landmark-expected-blink.txt
index 3ff926d..eed5d09 100644
--- a/content/test/data/accessibility/html/landmark-expected-blink.txt
+++ b/content/test/data/accessibility/html/landmark-expected-blink.txt
@@ -5,7 +5,7 @@
 ++complementary
 ++++staticText name='This is an aside element.'
 ++++++inlineTextBox name='This is an aside element.'
-++contentInfo
+++genericContainer
 ++++staticText name='This is an address element.'
 ++++++inlineTextBox name='This is an address element.'
 ++footer
diff --git a/content/test/data/accessibility/html/landmark-expected-mac.txt b/content/test/data/accessibility/html/landmark-expected-mac.txt
index 5e45a8dd..077ee09 100644
--- a/content/test/data/accessibility/html/landmark-expected-mac.txt
+++ b/content/test/data/accessibility/html/landmark-expected-mac.txt
@@ -3,7 +3,7 @@
 ++++AXStaticText AXRoleDescription='text' AXValue='This is a header element.'
 ++AXGroup AXSubrole=AXLandmarkComplementary AXRoleDescription='complementary'
 ++++AXStaticText AXRoleDescription='text' AXValue='This is an aside element.'
-++AXGroup AXSubrole=AXLandmarkContentInfo AXRoleDescription='content info'
+++AXGroup AXRoleDescription='group'
 ++++AXStaticText AXRoleDescription='text' AXValue='This is an address element.'
 ++AXGroup AXSubrole=AXLandmarkContentInfo AXRoleDescription='footer'
 ++++AXStaticText AXRoleDescription='text' AXValue='This is a footer element.'
@@ -146,4 +146,4 @@
 ++++++AXStaticText AXRoleDescription='text' AXValue='This should NOT have footer role.'
 ++AXGroup AXSubrole=AXLandmarkMain AXRoleDescription='main'
 ++++AXGroup AXRoleDescription='group'
-++++++AXStaticText AXRoleDescription='text' AXValue='This should NOT have footer role.'
\ No newline at end of file
+++++++AXStaticText AXRoleDescription='text' AXValue='This should NOT have footer role.'
diff --git a/content/test/data/accessibility/html/landmark-expected-win.txt b/content/test/data/accessibility/html/landmark-expected-win.txt
index 2b7a0457..d3a879c 100644
--- a/content/test/data/accessibility/html/landmark-expected-win.txt
+++ b/content/test/data/accessibility/html/landmark-expected-win.txt
@@ -3,7 +3,7 @@
 ++++ROLE_SYSTEM_STATICTEXT name='This is a header element.'
 ++IA2_ROLE_LANDMARK xml-roles:complementary
 ++++ROLE_SYSTEM_STATICTEXT name='This is an aside element.'
-++IA2_ROLE_LANDMARK
+++IA2_ROLE_SECTION
 ++++ROLE_SYSTEM_STATICTEXT name='This is an address element.'
 ++IA2_ROLE_FOOTER xml-roles:contentinfo
 ++++ROLE_SYSTEM_STATICTEXT name='This is a footer element.'
@@ -146,4 +146,4 @@
 ++++++ROLE_SYSTEM_STATICTEXT name='This should NOT have footer role.'
 ++IA2_ROLE_LANDMARK xml-roles:main
 ++++IA2_ROLE_SECTION
-++++++ROLE_SYSTEM_STATICTEXT name='This should NOT have footer role.'
\ No newline at end of file
+++++++ROLE_SYSTEM_STATICTEXT name='This should NOT have footer role.'
diff --git a/content/test/fuzzer/BUILD.gn b/content/test/fuzzer/BUILD.gn
index ded844b..e91ab33 100644
--- a/content/test/fuzzer/BUILD.gn
+++ b/content/test/fuzzer/BUILD.gn
@@ -210,10 +210,12 @@
       "//content/common/content_export.h",
     ]
 
+    # TODO(https://crbug.com/927728): Refactor target to not require this.
+    check_includes = false
+
     deps = [
       "//base",
       "//base/test:test_support",
-      "//content/public/browser:browser_sources",
       "//ui/base",
       "//url:url",
     ]
diff --git a/content/test/gpu/gpu_tests/pixel_expectations.py b/content/test/gpu/gpu_tests/pixel_expectations.py
index 8a61b577..fccaa81 100644
--- a/content/test/gpu/gpu_tests/pixel_expectations.py
+++ b/content/test/gpu/gpu_tests/pixel_expectations.py
@@ -18,9 +18,11 @@
 
     # Software compositing is not supported on Android: we skip the tests that
     # disable GPU compositing (--disable-gpu-compositing).
-    self.Skip('Pixel_OffscreenCanvasUnaccelerated2D', ['android'])
-    self.Skip('Pixel_OffscreenCanvasUnaccelerated2DWorker', ['android'])
-    self.Skip('Pixel_OffscreenCanvasUnaccelerated2DGPUCompositing', ['android'])
+    # TODO(mtklein): restore these next three after rebaselining
+    #self.Skip('Pixel_OffscreenCanvasUnaccelerated2D', ['android'])
+    #self.Skip('Pixel_OffscreenCanvasUnaccelerated2DWorker', ['android'])
+    #self.Skip('Pixel_OffscreenCanvasUnaccelerated2DGPUCompositing',
+    #          ['android'])
     self.Skip('Pixel_OffscreenCanvasUnaccelerated2DGPUCompositingWorker',
               ['android'])
     self.Skip('Pixel_OffscreenCanvasWebGLSoftwareCompositing', ['android'])
@@ -145,3 +147,8 @@
     self.Fail('Pixel_Video_MP4_FourColors_Rot_90', ['android'], bug=925744)
     self.Fail('Pixel_Video_VP9', ['android'], bug=925744)
     self.Fail('Pixel_Video_Context_Loss_VP9', ['android'], bug=925744)
+
+    # TODO(mtklein): need a rebaseline for crrev.com/c/1412462
+    self.Fail('Pixel_OffscreenCanvasUnaccelerated2D', bug=913223)
+    self.Fail('Pixel_OffscreenCanvasUnaccelerated2DWorker', bug=913223)
+    self.Fail('Pixel_OffscreenCanvasUnaccelerated2DGPUCompositing', bug=913223)
diff --git a/content/test/gpu/gpu_tests/pixel_test_pages.py b/content/test/gpu/gpu_tests/pixel_test_pages.py
index 3815e38..265c0c13 100644
--- a/content/test/gpu/gpu_tests/pixel_test_pages.py
+++ b/content/test/gpu/gpu_tests/pixel_test_pages.py
@@ -868,21 +868,21 @@
       'pixel_offscreenCanvas_2d_commit_main.html',
       base_name + '_OffscreenCanvasUnaccelerated2D',
       test_rect=[0, 0, 360, 200],
-      revision=8,
+      revision=9,
       browser_args=browser_args + unaccelerated_args),
 
     PixelTestPage(
       'pixel_offscreenCanvas_2d_commit_worker.html',
       base_name + '_OffscreenCanvasUnaccelerated2DWorker',
       test_rect=[0, 0, 360, 200],
-      revision=8,
+      revision=9,
       browser_args=browser_args + unaccelerated_args),
 
     PixelTestPage(
       'pixel_offscreenCanvas_2d_commit_main.html',
       base_name + '_OffscreenCanvasUnaccelerated2DGPUCompositing',
       test_rect=[0, 0, 360, 200],
-      revision=13,
+      revision=14,
       browser_args=browser_args + ['--disable-accelerated-2d-canvas']),
 
     PixelTestPage(
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
index 86b15d96..9e67639 100644
--- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -182,8 +182,6 @@
     self.Flaky('conformance2/textures/image_bitmap_from_image_data/' +
         'tex-2d-rgb9_e5-rgb-float.html',
         ['win', ('nvidia', 0x1cb3), 'opengl', 'passthrough'], bug=921055)
-    self.Flaky('conformance2/vertex_arrays/vertex-array-object.html',
-        ['win', ('nvidia', 0x1cb3), 'opengl', 'passthrough'], bug=920265)
     self.Fail('conformance/limits/gl-max-texture-dimensions.html',
         ['win', ('nvidia', 0x1cb3), 'opengl'], bug=715001)
     self.Fail('conformance/textures/misc/texture-size.html',
@@ -331,6 +329,8 @@
         ['passthrough', 'opengl'], bug=602688)
     self.Fail('conformance2/state/gl-get-calls.html', ['passthrough', 'opengl'],
         bug=602688)
+    self.Flaky('conformance2/vertex_arrays/vertex-array-object.html',
+        ['passthrough', 'opengl'], bug=920265)
     self.Fail('deqp/functional/gles3/integerstatequery.html',
         ['passthrough', 'opengl'], bug=602688)
     self.Fail('conformance/textures/canvas/' +
diff --git a/docs/infra/cq_builders.md b/docs/infra/cq_builders.md
index 24d6779..ed65c6bd 100644
--- a/docs/infra/cq_builders.md
+++ b/docs/infra/cq_builders.md
@@ -1,7 +1,7 @@
 # List of CQ builders
 
 This page is auto generated using the script
-//infra/config/branch/cq_config_presubmit.py. Do not manually edit.
+//infra/config/global/cq_config_presubmit.py. Do not manually edit.
 
 [TOC]
 
@@ -14,77 +14,77 @@
 
 These builders must pass before a CL may land.
 
-* [android-binary-size](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-binary-size) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android-binary-size)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android-binary-size))
+* [android-binary-size](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-binary-size) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android-binary-size)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android-binary-size))
 
-* [android-kitkat-arm-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-kitkat-arm-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android-kitkat-arm-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android-kitkat-arm-rel))
+* [android-kitkat-arm-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-kitkat-arm-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android-kitkat-arm-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android-kitkat-arm-rel))
 
-* [android-marshmallow-arm64-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-marshmallow-arm64-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android-marshmallow-arm64-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android-marshmallow-arm64-rel))
+* [android-marshmallow-arm64-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-marshmallow-arm64-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android-marshmallow-arm64-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android-marshmallow-arm64-rel))
 
-* [android_arm64_dbg_recipe](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_arm64_dbg_recipe) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_arm64_dbg_recipe)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_arm64_dbg_recipe))
+* [android_arm64_dbg_recipe](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_arm64_dbg_recipe) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android_arm64_dbg_recipe)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_arm64_dbg_recipe))
 
-* [android_clang_dbg_recipe](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_clang_dbg_recipe) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_clang_dbg_recipe)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_clang_dbg_recipe))
+* [android_clang_dbg_recipe](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_clang_dbg_recipe) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android_clang_dbg_recipe)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_clang_dbg_recipe))
 
-* [android_compile_dbg](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_compile_dbg) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_compile_dbg)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_compile_dbg))
+* [android_compile_dbg](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_compile_dbg) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android_compile_dbg)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_compile_dbg))
 
-* [android_cronet](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_cronet) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_cronet)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_cronet))
+* [android_cronet](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_cronet) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android_cronet)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_cronet))
 
-* [cast_shell_android](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/cast_shell_android) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+cast_shell_android)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+cast_shell_android))
+* [cast_shell_android](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/cast_shell_android) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/cast_shell_android)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+cast_shell_android))
 
-* [cast_shell_linux](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/cast_shell_linux) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+cast_shell_linux)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+cast_shell_linux))
+* [cast_shell_linux](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/cast_shell_linux) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/cast_shell_linux)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+cast_shell_linux))
 
-* [chromeos-amd64-generic-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromeos-amd64-generic-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+chromeos-amd64-generic-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+chromeos-amd64-generic-rel))
+* [chromeos-amd64-generic-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromeos-amd64-generic-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/chromeos-amd64-generic-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+chromeos-amd64-generic-rel))
 
-* [chromeos-daisy-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromeos-daisy-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+chromeos-daisy-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+chromeos-daisy-rel))
+* [chromeos-daisy-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromeos-daisy-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/chromeos-daisy-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+chromeos-daisy-rel))
 
-* [chromium_presubmit](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromium_presubmit) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+chromium_presubmit)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+chromium_presubmit))
+* [chromium_presubmit](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/chromium_presubmit) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/chromium_presubmit)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+chromium_presubmit))
 
-* [fuchsia_arm64](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/fuchsia_arm64) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+fuchsia_arm64)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+fuchsia_arm64))
+* [fuchsia_arm64](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/fuchsia_arm64) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/fuchsia_arm64)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+fuchsia_arm64))
 
-* [fuchsia_x64](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/fuchsia_x64) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+fuchsia_x64)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+fuchsia_x64))
+* [fuchsia_x64](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/fuchsia_x64) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/fuchsia_x64)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+fuchsia_x64))
 
-* [ios-simulator](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+ios-simulator)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator))
+* [ios-simulator](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/ios-simulator)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator))
 
-* [linux-chromeos-compile-dbg](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-chromeos-compile-dbg) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-chromeos-compile-dbg)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-chromeos-compile-dbg))
+* [linux-chromeos-compile-dbg](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-chromeos-compile-dbg) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-chromeos-compile-dbg)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-chromeos-compile-dbg))
 
-* [linux-chromeos-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-chromeos-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-chromeos-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-chromeos-rel))
+* [linux-chromeos-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-chromeos-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-chromeos-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-chromeos-rel))
 
-* [linux-jumbo-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-jumbo-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-jumbo-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-jumbo-rel))
+* [linux-jumbo-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-jumbo-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-jumbo-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-jumbo-rel))
 
-* [linux-libfuzzer-asan-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-libfuzzer-asan-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-libfuzzer-asan-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-libfuzzer-asan-rel))
+* [linux-libfuzzer-asan-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-libfuzzer-asan-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-libfuzzer-asan-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-libfuzzer-asan-rel))
 
-* [linux-ozone-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-ozone-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-ozone-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-ozone-rel))
+* [linux-ozone-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-ozone-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-ozone-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-ozone-rel))
 
-* [linux-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-rel))
+* [linux-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-rel))
 
-* [linux_chromium_asan_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_asan_rel_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_chromium_asan_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_asan_rel_ng))
+* [linux_chromium_asan_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_asan_rel_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_chromium_asan_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_asan_rel_ng))
 
-* [linux_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_compile_dbg_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_compile_dbg_ng))
+* [linux_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_compile_dbg_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_compile_dbg_ng))
 
-* [linux_chromium_headless_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_headless_rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_chromium_headless_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_headless_rel))
+* [linux_chromium_headless_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_headless_rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_chromium_headless_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_headless_rel))
 
-* [linux_chromium_tsan_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_tsan_rel_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_chromium_tsan_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_tsan_rel_ng))
+* [linux_chromium_tsan_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_tsan_rel_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_chromium_tsan_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_tsan_rel_ng))
 
-* [mac-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+mac-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+mac-rel))
+* [mac-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/mac-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+mac-rel))
 
-* [mac_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac_chromium_compile_dbg_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+mac_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+mac_chromium_compile_dbg_ng))
+* [mac_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac_chromium_compile_dbg_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/mac_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+mac_chromium_compile_dbg_ng))
 
-* [win-libfuzzer-asan-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win-libfuzzer-asan-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+win-libfuzzer-asan-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win-libfuzzer-asan-rel))
+* [win-libfuzzer-asan-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win-libfuzzer-asan-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win-libfuzzer-asan-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win-libfuzzer-asan-rel))
 
-* [win10_chromium_x64_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win10_chromium_x64_rel_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+win10_chromium_x64_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win10_chromium_x64_rel_ng))
+* [win10_chromium_x64_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win10_chromium_x64_rel_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win10_chromium_x64_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win10_chromium_x64_rel_ng))
 
-* [win7-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win7-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+win7-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win7-rel))
+* [win7-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win7-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win7-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win7-rel))
 
-* [win_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_chromium_compile_dbg_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+win_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win_chromium_compile_dbg_ng))
+* [win_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_chromium_compile_dbg_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win_chromium_compile_dbg_ng))
 
 
 ## Optional builders
 
 These builders optionally run, depending on the files in a
 CL. For example, a CL which touches `//gpu/BUILD.gn` would trigger the builder
-`android_optional_gpu_tests_rel`, due to the `path_regexp` values for that
+`android_optional_gpu_tests_rel`, due to the `location_regexp` values for that
 builder.
 
-* [android_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_optional_gpu_tests_rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_optional_gpu_tests_rel))
+* [android_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_optional_gpu_tests_rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/android_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_optional_gpu_tests_rel))
 
   Path regular expressions:
     * [`//cc/.+`](https://cs.chromium.org/chromium/src/cc/)
@@ -100,24 +100,24 @@
     * [`//third_party/blink/renderer/modules/webgl/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/webgl/)
     * [`//ui/gl/.+`](https://cs.chromium.org/chromium/src/ui/gl/)
 
-* [closure_compilation](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/closure_compilation) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+closure_compilation)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+closure_compilation))
+* [closure_compilation](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/closure_compilation) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/closure_compilation)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+closure_compilation))
 
   Path regular expressions:
     * [`//third_party/closure_compiler/.+`](https://cs.chromium.org/chromium/src/third_party/closure_compiler/)
 
-* [ios-simulator-cronet](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator-cronet) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+ios-simulator-cronet)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator-cronet))
+* [ios-simulator-cronet](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator-cronet) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/ios-simulator-cronet)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator-cronet))
 
   Path regular expressions:
     * [`//components/cronet/.+`](https://cs.chromium.org/chromium/src/components/cronet/)
     * [`//components/grpc_support/.+`](https://cs.chromium.org/chromium/src/components/grpc_support/)
     * [`//ios/.+`](https://cs.chromium.org/chromium/src/ios/)
 
-* [ios-simulator-full-configs](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator-full-configs) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+ios-simulator-full-configs)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator-full-configs))
+* [ios-simulator-full-configs](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator-full-configs) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/ios-simulator-full-configs)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator-full-configs))
 
   Path regular expressions:
     * [`//ios/.+`](https://cs.chromium.org/chromium/src/ios/)
 
-* [linux-blink-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-blink-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-blink-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-blink-rel))
+* [linux-blink-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-blink-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-blink-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-blink-rel))
 
   Path regular expressions:
     * [`//cc/.+`](https://cs.chromium.org/chromium/src/cc/)
@@ -127,12 +127,12 @@
     * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint)
     * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/)
 
-* [linux_chromium_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_dbg_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_chromium_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_dbg_ng))
+* [linux_chromium_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_dbg_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_chromium_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_chromium_dbg_ng))
 
   Path regular expressions:
     * [`//build/.*check_gn_headers.*`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:build/.*check_gn_headers.*)
 
-* [linux_layout_tests_composite_after_paint](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_layout_tests_composite_after_paint) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_layout_tests_composite_after_paint)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_layout_tests_composite_after_paint))
+* [linux_layout_tests_composite_after_paint](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_layout_tests_composite_after_paint) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_layout_tests_composite_after_paint)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_layout_tests_composite_after_paint))
 
   Path regular expressions:
     * [`//third_party/blink/renderer/core/paint/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/paint/)
@@ -141,7 +141,7 @@
     * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint)
     * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/)
 
-* [linux_layout_tests_layout_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_layout_tests_layout_ng) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_layout_tests_layout_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_layout_tests_layout_ng))
+* [linux_layout_tests_layout_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_layout_tests_layout_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_layout_tests_layout_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_layout_tests_layout_ng))
 
   Path regular expressions:
     * [`//third_party/blink/renderer/core/editing/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/editing/)
@@ -153,14 +153,14 @@
     * [`//third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG)
     * [`//third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/.+`](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/)
 
-* [linux_mojo](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_mojo) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_mojo)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_mojo))
+* [linux_mojo](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_mojo) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_mojo)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_mojo))
 
   Path regular expressions:
     * [`//services/network/.+`](https://cs.chromium.org/chromium/src/services/network/)
     * [`//testing/buildbot/filters/mojo\\.fyi\\.network_.*`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:testing/buildbot/filters/mojo\\.fyi\\.network_.*)
     * [`//third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService`](https://cs.chromium.org/search/?q=package:%5Echromium$+file:third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService)
 
-* [linux_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_optional_gpu_tests_rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_optional_gpu_tests_rel))
+* [linux_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_optional_gpu_tests_rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_optional_gpu_tests_rel))
 
   Path regular expressions:
     * [`//chrome/browser/vr/.+`](https://cs.chromium.org/chromium/src/chrome/browser/vr/)
@@ -173,12 +173,12 @@
     * [`//third_party/blink/renderer/modules/webgl/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/webgl/)
     * [`//ui/gl/.+`](https://cs.chromium.org/chromium/src/ui/gl/)
 
-* [linux_vr](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_vr) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux_vr)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_vr))
+* [linux_vr](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_vr) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux_vr)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux_vr))
 
   Path regular expressions:
     * [`//chrome/browser/vr/.+`](https://cs.chromium.org/chromium/src/chrome/browser/vr/)
 
-* [mac_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac_optional_gpu_tests_rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+mac_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+mac_optional_gpu_tests_rel))
+* [mac_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac_optional_gpu_tests_rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/mac_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+mac_optional_gpu_tests_rel))
 
   Path regular expressions:
     * [`//chrome/browser/vr/.+`](https://cs.chromium.org/chromium/src/chrome/browser/vr/)
@@ -192,7 +192,7 @@
     * [`//third_party/blink/renderer/modules/webgl/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/webgl/)
     * [`//ui/gl/.+`](https://cs.chromium.org/chromium/src/ui/gl/)
 
-* [win_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_optional_gpu_tests_rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+win_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win_optional_gpu_tests_rel))
+* [win_optional_gpu_tests_rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_optional_gpu_tests_rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win_optional_gpu_tests_rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win_optional_gpu_tests_rel))
 
   Path regular expressions:
     * [`//chrome/browser/vr/.+`](https://cs.chromium.org/chromium/src/chrome/browser/vr/)
@@ -209,28 +209,6 @@
     * [`//third_party/blink/renderer/platform/graphics/gpu/.+`](https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/graphics/gpu/)
     * [`//ui/gl/.+`](https://cs.chromium.org/chromium/src/ui/gl/)
 
-* [android_compile_x64_dbg](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_compile_x64_dbg) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_compile_x64_dbg)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_compile_x64_dbg))
-
-  Path regular expressions:
-    * [`//sandbox/linux/seccomp-bpf/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/seccomp-bpf/)
-    * [`//sandbox/linux/seccomp-bpf-helpers/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/seccomp-bpf-helpers/)
-    * [`//sandbox/linux/system_headers/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/system_headers/)
-    * [`//sandbox/linux/tests/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/tests/)
-
-* [android_compile_x86_dbg](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_compile_x86_dbg) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_compile_x86_dbg)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_compile_x86_dbg))
-
-  Path regular expressions:
-    * [`//sandbox/linux/seccomp-bpf/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/seccomp-bpf/)
-    * [`//sandbox/linux/seccomp-bpf-helpers/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/seccomp-bpf-helpers/)
-    * [`//sandbox/linux/system_headers/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/system_headers/)
-    * [`//sandbox/linux/tests/.+`](https://cs.chromium.org/chromium/src/sandbox/linux/tests/)
-
-* [android_cronet_tester](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android_cronet_tester) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+android_cronet_tester)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+android_cronet_tester))
-
-  Path regular expressions:
-    * [`//components/cronet/.+`](https://cs.chromium.org/chromium/src/components/cronet/)
-    * [`//components/grpc_support/.+`](https://cs.chromium.org/chromium/src/components/grpc_support/)
-
 
 ## Experimental builders
 
@@ -238,37 +216,37 @@
 by CQ. These are often used to test new configurations before they are added
 as required builders.
 
-* [ios-device](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-device) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+ios-device)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-device))
+* [ios-device](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-device) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/ios-device)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-device))
 
   https://crbug.com/739556; make this non-experimental ASAP.
 
   * Experimental percentage: 10
 
-* [ios-device-xcode-clang](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-device-xcode-clang) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+ios-device-xcode-clang)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-device-xcode-clang))
+* [ios-device-xcode-clang](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-device-xcode-clang) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/ios-device-xcode-clang)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-device-xcode-clang))
 
   https://crbug.com/739556
 
   * Experimental percentage: 10
 
-* [ios-simulator-xcode-clang](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator-xcode-clang) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+ios-simulator-xcode-clang)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator-xcode-clang))
+* [ios-simulator-xcode-clang](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/ios-simulator-xcode-clang) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/ios-simulator-xcode-clang)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+ios-simulator-xcode-clang))
 
   https://crbug.com/739556
 
   * Experimental percentage: 10
 
-* [linux-dcheck-off-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-dcheck-off-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-dcheck-off-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-dcheck-off-rel))
+* [linux-dcheck-off-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-dcheck-off-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-dcheck-off-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-dcheck-off-rel))
 
   https://crbug.com/833482
 
   * Experimental percentage: 10
 
-* [linux-goma-rbe-staging-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-goma-rbe-staging-rel) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+linux-goma-rbe-staging-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-goma-rbe-staging-rel))
+* [linux-goma-rbe-staging-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux-goma-rbe-staging-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/linux-goma-rbe-staging-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+linux-goma-rbe-staging-rel))
 
   https://crbug.com/855319
 
   * Experimental percentage: 40
 
-* [win7_chromium_rel_loc_exp](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win7_chromium_rel_loc_exp) ([`cq.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:cq.cfg+win7_chromium_rel_loc_exp)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win7_chromium_rel_loc_exp))
+* [win7_chromium_rel_loc_exp](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win7_chromium_rel_loc_exp) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win7_chromium_rel_loc_exp)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win7_chromium_rel_loc_exp))
 
   * Experimental percentage: 20
 
diff --git a/docs/security/url_display_guidelines/url_display_guidelines.md b/docs/security/url_display_guidelines/url_display_guidelines.md
index c710417..9e1580e 100644
--- a/docs/security/url_display_guidelines/url_display_guidelines.md
+++ b/docs/security/url_display_guidelines/url_display_guidelines.md
@@ -324,6 +324,10 @@
 
 This is, generally, outside of the client threat-model, although in some cases (e.g., AMP), the client platform may attempt to introduce new UI to clarify the situation.
 
+## Testing URL Displays
+
+Chromium's open-source [Trickuri](https://github.com/chromium/trickuri) tool is a Go-based proxy server designed to enable manual testing of URL display behavior.
+
 ## Further Reading
 
 * [The Trouble with URLs](https://docs.google.com/presentation/d/1Nr47m1qlLjV8xZfw03jVKU3GQpSwbC0PWLHhXcyMcQM/) (LocoMoco Sec Conference talk)
diff --git a/docs/threading_and_tasks_faq.md b/docs/threading_and_tasks_faq.md
index ac918435..329987e5 100644
--- a/docs/threading_and_tasks_faq.md
+++ b/docs/threading_and_tasks_faq.md
@@ -37,6 +37,22 @@
 tasks should generally run on a sequence in a thread pool rather than on a
 dedicated thread.
 
+### Does release of a TaskRunner block on posted tasks?
+
+Releasing a TaskRunner reference does not wait for tasks previously posted to
+the TaskRunner to complete their execution. Tasks can run normally after the
+last client reference to the TaskRunner to which they were posted has been
+released and it can even be kept alive indefinitely through
+`SequencedTaskRunnerHandle::Get()` or `ThreadTaskRunnerHandle::Get()`.
+
+If you want some state to be deleted only after all tasks currently posted to a
+SequencedTaskRunner have run, store that state in a helper object and schedule
+deletion of that helper object on the SequencedTaskRunner using
+`base::OnTaskRunnerDeleter` after posting the last task. See
+[example CL](https://crrev.com/c/1416271/15/chrome/browser/performance_monitor/system_monitor.h).
+But be aware that any task posting back to its "current" sequence can enqueue
+itself after that "last" task.
+
 ## Making blocking calls (which do not use the CPU)
 
 ### How to make a blocking call without preventing other tasks from being scheduled?
diff --git a/docs/webui_explainer.md b/docs/webui_explainer.md
index 5ea9f10..4b050e2 100644
--- a/docs/webui_explainer.md
+++ b/docs/webui_explainer.md
@@ -502,8 +502,7 @@
 
 ```c++
 // WebUIExtension::Install():
-v8::Local<v8::Object> chrome =
-    GetOrCreateChromeObject(isolate, context->Global());
+v8::Local<v8::Object> chrome = GetOrCreateChromeObject(isolate, context);
 chrome->Set(gin::StringToSymbol(isolate, "send"),
             gin::CreateFunctionTemplate(
                 isolate, base::Bind(&WebUIExtension::Send))->GetFunction());
diff --git a/extensions/browser/extension_event_histogram_value.h b/extensions/browser/extension_event_histogram_value.h
index d29bd5d6..8a2ecb2 100644
--- a/extensions/browser/extension_event_histogram_value.h
+++ b/extensions/browser/extension_event_histogram_value.h
@@ -453,6 +453,7 @@
   STORAGE_MANAGED_ON_CHANGE = 432,
   AUTOFILL_PRIVATE_ON_LOCAL_CREDIT_CARD_LIST_CHANGED = 433,
   AUTOFILL_PRIVATE_ON_SERVER_CREDIT_CARD_LIST_CHANGED = 434,
+  ACCESSIBILITY_PRIVATE_ON_ANNOUNCE_FOR_ACCESSIBILITY = 435,
   // Last entry: Add new entries above, then run:
   // python tools/metrics/histograms/update_extension_histograms.py
   ENUM_BOUNDARY
diff --git a/extensions/browser/extension_pref_value_map.cc b/extensions/browser/extension_pref_value_map.cc
index 4b4ff07..1368beb 100644
--- a/extensions/browser/extension_pref_value_map.cc
+++ b/extensions/browser/extension_pref_value_map.cc
@@ -4,6 +4,8 @@
 
 #include "extensions/browser/extension_pref_value_map.h"
 
+#include <utility>
+
 #include "base/memory/ptr_util.h"
 #include "base/values.h"
 #include "components/prefs/pref_value_map.h"
@@ -48,11 +50,9 @@
 void ExtensionPrefValueMap::SetExtensionPref(const std::string& ext_id,
                                              const std::string& key,
                                              ExtensionPrefsScope scope,
-                                             base::Value* value) {
+                                             base::Value value) {
   PrefValueMap* prefs = GetExtensionPrefValueMap(ext_id, scope);
-  std::unique_ptr<base::Value> owned_value = base::WrapUnique(value);
-  if (prefs->SetValue(key,
-                      base::Value::FromUniquePtrValue(std::move(owned_value))))
+  if (prefs->SetValue(key, std::move(value)))
     NotifyPrefValueChanged(key);
 }
 
diff --git a/extensions/browser/extension_pref_value_map.h b/extensions/browser/extension_pref_value_map.h
index 3323eea..85fa0cc 100644
--- a/extensions/browser/extension_pref_value_map.h
+++ b/extensions/browser/extension_pref_value_map.h
@@ -85,14 +85,13 @@
   void Shutdown() override;
 
   // Set an extension preference |value| for |key| of extension |ext_id|.
-  // Takes ownership of |value|.
   // Note that regular extension pref values need to be reported to
   // incognito and to regular ExtensionPrefStores.
   // Precondition: the extension must be registered.
   void SetExtensionPref(const std::string& ext_id,
                         const std::string& key,
                         extensions::ExtensionPrefsScope scope,
-                        base::Value* value);
+                        base::Value value);
 
   // Remove the extension preference value for |key| of extension |ext_id|.
   // Precondition: the extension must be registered.
diff --git a/extensions/browser/extension_pref_value_map_unittest.cc b/extensions/browser/extension_pref_value_map_unittest.cc
index 5c0c728..5d6a8cf 100644
--- a/extensions/browser/extension_pref_value_map_unittest.cc
+++ b/extensions/browser/extension_pref_value_map_unittest.cc
@@ -26,8 +26,8 @@
 const char kPref4[] = "path4";
 }  // namespace
 
-static base::Value* CreateVal(const char* str) {
-  return new base::Value(str);
+static base::Value CreateVal(const char* str) {
+  return base::Value(str);
 }
 
 static base::Time CreateTime(int64_t t) {
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
index f818e05..5121eea 100644
--- a/extensions/browser/extension_prefs.cc
+++ b/extensions/browser/extension_prefs.cc
@@ -1970,10 +1970,9 @@
   if (!source_dict->GetDictionary(key, &preferences))
     return;
 
-  for (base::DictionaryValue::Iterator iter(*preferences); !iter.IsAtEnd();
-       iter.Advance()) {
-    extension_pref_value_map_->SetExtensionPref(extension_id, iter.key(), scope,
-                                                iter.value().DeepCopy());
+  for (const auto& pair : preferences->DictItems()) {
+    extension_pref_value_map_->SetExtensionPref(extension_id, pair.first, scope,
+                                                pair.second.Clone());
   }
 }
 
diff --git a/extensions/common/image_util.cc b/extensions/common/image_util.cc
index 841950fc..a616f30 100644
--- a/extensions/common/image_util.cc
+++ b/extensions/common/image_util.cc
@@ -180,7 +180,7 @@
   constexpr unsigned int kAlphaThreshold = 10;
   // The minimum "percent" of pixels that must be visible for the icon to be
   // considered OK.
-  constexpr double kMinPercentVisiblePixels = 0.05;
+  constexpr double kMinPercentVisiblePixels = 0.03;
   const int total_pixels = bitmap.height() * bitmap.width();
   // Pre-calculate the minimum number of visible pixels so we can exit early.
   // Since we expect most icons to be visible, this will perform better for
diff --git a/fuchsia/http/sandbox_policy b/fuchsia/http/sandbox_policy
index 63bb84253..1700868 100644
--- a/fuchsia/http/sandbox_policy
+++ b/fuchsia/http/sandbox_policy
@@ -1,7 +1,6 @@
 {
   "features": [ "root-ssl-certificates" ],
   "services": [
-      "fuchsia.net.LegacySocketProvider",
       "fuchsia.net.SocketProvider",
       "fuchsia.netstack.Netstack"
   ]
diff --git a/fuchsia/runners/cast/sandbox_policy b/fuchsia/runners/cast/sandbox_policy
index bb596db1..1b71af62 100644
--- a/fuchsia/runners/cast/sandbox_policy
+++ b/fuchsia/runners/cast/sandbox_policy
@@ -4,7 +4,6 @@
       "chromium.web.ContextProvider",
       "fuchsia.fonts.Provider",
       "fuchsia.media.Audio",
-      "fuchsia.net.LegacySocketProvider",
       "fuchsia.net.SocketProvider",
       "fuchsia.netstack.Netstack",
       "fuchsia.process.Launcher",
diff --git a/fuchsia/runners/web/sandbox_policy b/fuchsia/runners/web/sandbox_policy
index 7db7d14..4038e53 100644
--- a/fuchsia/runners/web/sandbox_policy
+++ b/fuchsia/runners/web/sandbox_policy
@@ -5,7 +5,6 @@
       "fuchsia.fonts.Provider",
       "fuchsia.media.Audio",
       "fuchsia.mediacodec.CodecFactory",
-      "fuchsia.net.LegacySocketProvider",
       "fuchsia.net.SocketProvider",
       "fuchsia.netstack.Netstack",
       "fuchsia.process.Launcher",
diff --git a/gin/converter_unittest.cc b/gin/converter_unittest.cc
index 2c40462..4b0cc64 100644
--- a/gin/converter_unittest.cc
+++ b/gin/converter_unittest.cc
@@ -139,9 +139,12 @@
       Converter<std::vector<int>>::ToV8(instance_->isolate(), expected)
           .As<Array>();
   EXPECT_EQ(3u, js_array->Length());
+  v8::Local<v8::Context> context = instance_->isolate()->GetCurrentContext();
   for (size_t i = 0; i < expected.size(); ++i) {
-    EXPECT_TRUE(Integer::New(instance_->isolate(), expected[i])
-                    ->StrictEquals(js_array->Get(static_cast<int>(i))));
+    EXPECT_TRUE(
+        Integer::New(instance_->isolate(), expected[i])
+            ->StrictEquals(
+                js_array->Get(context, static_cast<int>(i)).ToLocalChecked()));
   }
 }
 
diff --git a/gin/object_template_builder.h b/gin/object_template_builder.h
index 2d67bb8..3f3b7a5 100644
--- a/gin/object_template_builder.h
+++ b/gin/object_template_builder.h
@@ -38,20 +38,6 @@
 
 }  // namespace internal
 
-template <typename T>
-void SetAsFunctionHandler(v8::Isolate* isolate,
-                          v8::Local<v8::ObjectTemplate> tmpl,
-                          T callback) {
-  // We need to handle member function pointers case specially because the first
-  // parameter for callbacks to MFP should typically come from the the
-  // JavaScript "this" object the function was called on, not from the first
-  // normal parameter.
-  InvokerOptions options = {std::is_member_function_pointer<T>::value, nullptr};
-
-  CreateFunctionHandler(isolate, tmpl, base::BindRepeating(std::move(callback)),
-                        std::move(options));
-}
-
 // ObjectTemplateBuilder provides a handy interface to creating
 // v8::ObjectTemplate instances with various sorts of properties.
 class GIN_EXPORT ObjectTemplateBuilder {
diff --git a/gin/shell_runner_unittest.cc b/gin/shell_runner_unittest.cc
index 8c0873a..9e277e2 100644
--- a/gin/shell_runner_unittest.cc
+++ b/gin/shell_runner_unittest.cc
@@ -45,8 +45,11 @@
   runner.Run(source, "test_data.js");
 
   std::string result;
-  EXPECT_TRUE(Converter<std::string>::FromV8(isolate,
-      runner.global()->Get(StringToV8(isolate, "result")),
+  EXPECT_TRUE(Converter<std::string>::FromV8(
+      isolate,
+      runner.global()
+          ->Get(isolate->GetCurrentContext(), StringToV8(isolate, "result"))
+          .ToLocalChecked(),
       &result));
   EXPECT_EQ("PASS", result);
 }
diff --git a/gpu/command_buffer/service/gl_context_virtual.cc b/gpu/command_buffer/service/gl_context_virtual.cc
index 8eea608..fad50ab 100644
--- a/gpu/command_buffer/service/gl_context_virtual.cc
+++ b/gpu/command_buffer/service/gl_context_virtual.cc
@@ -27,7 +27,9 @@
     base::WeakPtr<GLContextVirtualDelegate> delegate)
     : GLContext(share_group),
       shared_context_(shared_context),
-      delegate_(delegate) {}
+      delegate_(delegate) {
+  shared_context_->AddVirtualOwner(this);
+}
 
 bool GLContextVirtual::Initialize(gl::GLSurface* compatible_surface,
                                   const gl::GLContextAttribs& attribs) {
@@ -36,7 +38,8 @@
 }
 
 void GLContextVirtual::Destroy() {
-  shared_context_->OnReleaseVirtuallyCurrent(this);
+  ReleaseCurrent(nullptr);
+  shared_context_->RemoveVirtualOwner(this);
   shared_context_ = nullptr;
 }
 
@@ -54,10 +57,17 @@
 }
 
 void GLContextVirtual::ReleaseCurrent(gl::GLSurface* surface) {
-  if (IsCurrent(surface)) {
-    shared_context_->OnReleaseVirtuallyCurrent(this);
+  if (!IsCurrent(surface))
+    return;
+
+  shared_context_->OnReleaseVirtuallyCurrent(this);
+
+  // If we are releasing a specific surface, we need to call ReleaseCurrent, as
+  // the surface may need to be destroyed.
+  // Additionally, if this is the last virtual context owner of a real context
+  // we may be tearing down and should also release.
+  if (surface || shared_context_->IsLastVirtualOwner(this))
     shared_context_->ReleaseCurrent(surface);
-  }
 }
 
 bool GLContextVirtual::IsCurrent(gl::GLSurface* surface) {
diff --git a/gpu/command_buffer/service/gl_context_virtual.h b/gpu/command_buffer/service/gl_context_virtual.h
index dc3d4d5..7b8dcc15 100644
--- a/gpu/command_buffer/service/gl_context_virtual.h
+++ b/gpu/command_buffer/service/gl_context_virtual.h
@@ -24,7 +24,9 @@
 class GLContextVirtualDelegate;
 
 // Encapsulates a virtual OpenGL context.
-class GPU_GLES2_EXPORT GLContextVirtual : public gl::GLContext {
+// This class is final to avoid potential issues due to virtual function calls
+// in the destructor.
+class GPU_GLES2_EXPORT GLContextVirtual final : public gl::GLContext {
  public:
   GLContextVirtual(gl::GLShareGroup* share_group,
                    gl::GLContext* shared_context,
diff --git a/gpu/command_buffer/service/gl_context_virtual_unittest.cc b/gpu/command_buffer/service/gl_context_virtual_unittest.cc
index fb9ab6c2..d1553e1 100644
--- a/gpu/command_buffer/service/gl_context_virtual_unittest.cc
+++ b/gpu/command_buffer/service/gl_context_virtual_unittest.cc
@@ -37,30 +37,148 @@
   EXPECT_CALL(*gl_, GetError())
       .Times(AnyNumber())
       .WillRepeatedly(Return(GL_NO_ERROR));
+  {
+    scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
+    gl::GLShareGroup* share_group = base_context->share_group();
+    share_group->SetSharedContext(GetGLSurface(), base_context.get());
+    scoped_refptr<GLContextVirtual> context(new GLContextVirtual(
+        share_group, base_context.get(), decoder_->AsWeakPtr()));
+    EXPECT_TRUE(context->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+    EXPECT_TRUE(context->MakeCurrent(GetGLSurface()));
+  }
+  {
+    scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
+    gl::GLShareGroup* share_group = base_context->share_group();
+    share_group->SetSharedContext(GetGLSurface(), base_context.get());
+    scoped_refptr<GLContextVirtual> context(new GLContextVirtual(
+        share_group, base_context.get(), decoder_->AsWeakPtr()));
+    EXPECT_TRUE(context->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+    EXPECT_TRUE(context->MakeCurrent(GetGLSurface()));
+  }
+}
+
+// Tests that destroying the last virtual context referring to a real context
+// releases the real context.
+TEST_F(GLContextVirtualTest, DestroyMultiple) {
+  // Setup.
+  EXPECT_CALL(*gl_, GetError())
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(GL_NO_ERROR));
   EXPECT_CALL(*gl_, GetString(GL_VERSION))
       .Times(AnyNumber())
-      .WillRepeatedly(Return(reinterpret_cast<unsigned const char *>("2.0")));
+      .WillRepeatedly(Return(reinterpret_cast<unsigned const char*>("2.0")));
   EXPECT_CALL(*gl_, GetString(GL_EXTENSIONS))
       .Times(AnyNumber())
-      .WillRepeatedly(Return(reinterpret_cast<unsigned const char *>("")));
-  {
-    scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
-    gl::GLShareGroup* share_group = base_context->share_group();
-    share_group->SetSharedContext(GetGLSurface(), base_context.get());
-    scoped_refptr<GLContextVirtual> context(new GLContextVirtual(
-        share_group, base_context.get(), decoder_->AsWeakPtr()));
-    EXPECT_TRUE(context->Initialize(GetGLSurface(), gl::GLContextAttribs()));
-    EXPECT_TRUE(context->MakeCurrent(GetGLSurface()));
-  }
-  {
-    scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
-    gl::GLShareGroup* share_group = base_context->share_group();
-    share_group->SetSharedContext(GetGLSurface(), base_context.get());
-    scoped_refptr<GLContextVirtual> context(new GLContextVirtual(
-        share_group, base_context.get(), decoder_->AsWeakPtr()));
-    EXPECT_TRUE(context->Initialize(GetGLSurface(), gl::GLContextAttribs()));
-    EXPECT_TRUE(context->MakeCurrent(GetGLSurface()));
-  }
+      .WillRepeatedly(Return(reinterpret_cast<unsigned const char*>("")));
+
+  scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
+  gl::GLShareGroup* share_group = base_context->share_group();
+  share_group->SetSharedContext(GetGLSurface(), base_context.get());
+
+  // Create two virtual contexts.
+  scoped_refptr<GLContextVirtual> context_a(new GLContextVirtual(
+      share_group, base_context.get(), decoder_->AsWeakPtr()));
+  EXPECT_TRUE(context_a->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+  EXPECT_TRUE(context_a->MakeCurrent(GetGLSurface()));
+
+  scoped_refptr<GLContextVirtual> context_b(new GLContextVirtual(
+      share_group, base_context.get(), decoder_->AsWeakPtr()));
+  EXPECT_TRUE(context_b->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+  EXPECT_TRUE(context_b->MakeCurrent(GetGLSurface()));
+
+  // Ensure that the base context is current.
+  EXPECT_TRUE(base_context->IsCurrent(GetGLSurface()));
+
+  // Release the first context, base context should still be current.
+  context_a.reset();
+  EXPECT_TRUE(base_context->IsCurrent(GetGLSurface()));
+
+  // Release the second context, base context should now no longer be current.
+  context_b.reset();
+  EXPECT_FALSE(base_context->IsCurrent(GetGLSurface()));
+}
+
+// Tests that calling ReleaseCurrent on a virtual context does not release the
+// real context if other virtual contexts referring to it exist.
+TEST_F(GLContextVirtualTest, ReleaseLastOwner) {
+  // Setup.
+  EXPECT_CALL(*gl_, GetError())
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(GL_NO_ERROR));
+  EXPECT_CALL(*gl_, GetString(GL_VERSION))
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(reinterpret_cast<unsigned const char*>("2.0")));
+  EXPECT_CALL(*gl_, GetString(GL_EXTENSIONS))
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(reinterpret_cast<unsigned const char*>("")));
+
+  scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
+  gl::GLShareGroup* share_group = base_context->share_group();
+  share_group->SetSharedContext(GetGLSurface(), base_context.get());
+
+  // Create two virtual contexts.
+  scoped_refptr<GLContextVirtual> context_a(new GLContextVirtual(
+      share_group, base_context.get(), decoder_->AsWeakPtr()));
+  EXPECT_TRUE(context_a->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+  EXPECT_TRUE(context_a->MakeCurrent(GetGLSurface()));
+
+  scoped_refptr<GLContextVirtual> context_b(new GLContextVirtual(
+      share_group, base_context.get(), decoder_->AsWeakPtr()));
+  EXPECT_TRUE(context_b->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+  EXPECT_TRUE(context_b->MakeCurrent(GetGLSurface()));
+
+  // Ensure that the base context is current.
+  EXPECT_TRUE(base_context->IsCurrent(GetGLSurface()));
+
+  // Release the first context, base context should still be current.
+  context_a->ReleaseCurrent(nullptr);
+  EXPECT_TRUE(base_context->IsCurrent(GetGLSurface()));
+
+  // Delete |context_a| - still no change.
+  context_a.reset();
+  EXPECT_TRUE(base_context->IsCurrent(GetGLSurface()));
+
+  // Release the second context, base context should now no longer be current.
+  context_b->ReleaseCurrent(nullptr);
+  EXPECT_FALSE(base_context->IsCurrent(GetGLSurface()));
+}
+
+// Tests that releasing a specific surface always calls ReleaseCurrent, even if
+// other virtual contextx exist.
+TEST_F(GLContextVirtualTest, ReleaseSpecificSurface) {
+  // Setup.
+  EXPECT_CALL(*gl_, GetError())
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(GL_NO_ERROR));
+  EXPECT_CALL(*gl_, GetString(GL_VERSION))
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(reinterpret_cast<unsigned const char*>("2.0")));
+  EXPECT_CALL(*gl_, GetString(GL_EXTENSIONS))
+      .Times(AnyNumber())
+      .WillRepeatedly(Return(reinterpret_cast<unsigned const char*>("")));
+
+  scoped_refptr<gl::GLContextStub> base_context = new gl::GLContextStub;
+  gl::GLShareGroup* share_group = base_context->share_group();
+  share_group->SetSharedContext(GetGLSurface(), base_context.get());
+
+  // Create two virtual contexts.
+  scoped_refptr<GLContextVirtual> context_a(new GLContextVirtual(
+      share_group, base_context.get(), decoder_->AsWeakPtr()));
+  EXPECT_TRUE(context_a->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+  EXPECT_TRUE(context_a->MakeCurrent(GetGLSurface()));
+
+  scoped_refptr<GLContextVirtual> context_b(new GLContextVirtual(
+      share_group, base_context.get(), decoder_->AsWeakPtr()));
+  EXPECT_TRUE(context_b->Initialize(GetGLSurface(), gl::GLContextAttribs()));
+  EXPECT_TRUE(context_b->MakeCurrent(GetGLSurface()));
+
+  // Ensure that the base context is current.
+  EXPECT_TRUE(base_context->IsCurrent(GetGLSurface()));
+
+  // Release a specific surface on the first context, base context should be
+  // released.
+  context_a->ReleaseCurrent(GetGLSurface());
+  EXPECT_FALSE(base_context->IsCurrent(GetGLSurface()));
 }
 
 }  // anonymous namespace
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index ec7662313..e270703 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -18507,7 +18507,7 @@
   // On Adreno Android devices we need to use a workaround to force caches to
   // clear.
   if (workarounds().unbind_egl_context_to_flush_driver_caches) {
-    context_->ReleaseCurrent(nullptr);
+    context_->ReleaseCurrent(surface_.get());
     context_->MakeCurrent(surface_.get());
   }
 }
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
index fc5aca5b..3a349268 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
@@ -4526,7 +4526,7 @@
   // On Adreno Android devices we need to use a workaround to force caches to
   // clear.
   if (feature_info_->workarounds().unbind_egl_context_to_flush_driver_caches) {
-    context_->ReleaseCurrent(nullptr);
+    context_->ReleaseCurrent(surface_.get());
     context_->MakeCurrent(surface_.get());
   }
   return error::kNoError;
diff --git a/headless/BUILD.gn b/headless/BUILD.gn
index 7450e8c..01b8e67 100644
--- a/headless/BUILD.gn
+++ b/headless/BUILD.gn
@@ -18,12 +18,9 @@
 import("//tools/grit/repack.gni")
 import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
 
-config("headless_implementation") {
+# For code inside the build component "headless".
+config("inside_headless_component") {
   defines = [ "HEADLESS_IMPLEMENTATION" ]
-
-  if (headless_use_embedded_resources) {
-    defines += [ "HEADLESS_USE_EMBEDDED_RESOURCES" ]
-  }
 }
 
 group("headless_lib") {
@@ -226,7 +223,7 @@
       "//third_party/fontconfig",
     ]
 
-    configs += [ ":headless_implementation" ]
+    configs += [ ":inside_headless_component" ]
   }
 }
 
@@ -476,6 +473,7 @@
   }
 
   if (headless_use_embedded_resources) {
+    defines = [ "HEADLESS_USE_EMBEDDED_RESOURCES" ]
     deps += [ ":embed_resources" ]
     sources += [
       "$root_gen_dir/headless/embedded_resource_pak.cc",
@@ -493,7 +491,7 @@
     deps += [ ":headless_fontconfig_utils" ]
   }
 
-  configs += [ ":headless_implementation" ]
+  configs += [ ":inside_headless_component" ]
 }
 
 # Headless renderer is a convenience library for non component builds that
@@ -527,8 +525,6 @@
     if (enable_basic_printing) {
       deps += [ "//components/printing/renderer" ]
     }
-
-    configs += [ ":headless_implementation" ]
   }
 } else {
   # For component builds all dependencies are already included in the headless
@@ -777,8 +773,6 @@
     sources = [
       "app/headless_shell.cc",
       "app/headless_shell.h",
-      "app/headless_shell_switches.cc",
-      "app/headless_shell_switches.h",
       "app/headless_shell_win.cc",
       "lib/browser/headless_content_browser_client.cc",
       "lib/browser/headless_content_browser_client.h",
@@ -811,8 +805,6 @@
         "//third_party/blink/public:blink_headers",
       ]
     }
-
-    configs += [ ":headless_implementation" ]
   }
 
   # Headless library with child specific dependencies (e.g., renderer). This
@@ -847,8 +839,6 @@
         "//third_party/blink/public:blink_headers",
       ]
     }
-
-    configs += [ ":headless_implementation" ]
   }
 }
 
diff --git a/headless/lib/headless_web_contents_browsertest.cc b/headless/lib/headless_web_contents_browsertest.cc
index db2c8f7..18349c06 100644
--- a/headless/lib/headless_web_contents_browsertest.cc
+++ b/headless/lib/headless_web_contents_browsertest.cc
@@ -223,9 +223,9 @@
 HEADLESS_ASYNC_DEVTOOLED_TEST_P(HeadlessWebContentsScreenshotTest);
 
 // Instantiate test case for both software and gpu compositing modes.
-INSTANTIATE_TEST_CASE_P(HeadlessWebContentsScreenshotTests,
-                        HeadlessWebContentsScreenshotTest,
-                        ::testing::Bool());
+INSTANTIATE_TEST_SUITE_P(HeadlessWebContentsScreenshotTests,
+                         HeadlessWebContentsScreenshotTest,
+                         ::testing::Bool());
 
 // Regression test for crbug.com/832138.
 class HeadlessWebContentsScreenshotWindowPositionTest
@@ -259,9 +259,9 @@
     HeadlessWebContentsScreenshotWindowPositionTest);
 
 // Instantiate test case for both software and gpu compositing modes.
-INSTANTIATE_TEST_CASE_P(HeadlessWebContentsScreenshotWindowPositionTests,
-                        HeadlessWebContentsScreenshotWindowPositionTest,
-                        ::testing::Bool());
+INSTANTIATE_TEST_SUITE_P(HeadlessWebContentsScreenshotWindowPositionTests,
+                         HeadlessWebContentsScreenshotWindowPositionTest,
+                         ::testing::Bool());
 
 #if BUILDFLAG(ENABLE_PRINTING)
 class HeadlessWebContentsPDFTest : public HeadlessAsyncDevTooledBrowserTest {
diff --git a/infra/config/PRESUBMIT.py b/infra/config/PRESUBMIT.py
index 253d7f7..169571e 100644
--- a/infra/config/PRESUBMIT.py
+++ b/infra/config/PRESUBMIT.py
@@ -3,31 +3,8 @@
 # found in the LICENSE file.
 
 def _CommonChecks(input_api, output_api):
-  commands = []
-  touches_cq = False
-  for f in input_api.AffectedFiles():
-    local_path = f.LocalPath()
-    if local_path.endswith('cq.cfg'):
-      touches_cq = True
-
-  if touches_cq:
-    commands.append(
-      input_api.Command(
-        name='cq.cfg presubmit', cmd=[
-            input_api.python_executable, input_api.os_path.join(
-                'branch', 'cq_cfg_presubmit.py'),
-            '--check'],
-        kwargs={}, message=output_api.PresubmitError),
-    )
-
-  commands.extend(input_api.canned_checks.GetUnitTestsRecursively(
-      input_api, output_api,
-      input_api.os_path.join(input_api.PresubmitLocalPath()),
-      whitelist=[r'.+_unittest\.py$'], blacklist=[]))
-
   results = []
 
-  results.extend(input_api.RunTests(commands))
   results.extend(input_api.canned_checks.CheckChangedLUCIConfigs(
       input_api, output_api))
 
diff --git a/infra/config/branch/OWNERS b/infra/config/branch/OWNERS
deleted file mode 100644
index 62bfaf0..0000000
--- a/infra/config/branch/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-dpranke@chromium.org
-jbudorick@chromium.org
-smut@google.com
-tandrii@chromium.org
diff --git a/infra/config/branch/README.md b/infra/config/branch/README.md
index f54e423..918afcc 100644
--- a/infra/config/branch/README.md
+++ b/infra/config/branch/README.md
@@ -1,13 +1 @@
-## Branch configs.
-
-This directory contains configurations specific to the git ref (branch) they are
-located on.
-
-**TODO(tandrii)**: although cq.cfg is located here, it actually applies to globally
-to the whole repository. Tracking bug to fix this is https://crbug.com/719954.
-
-Currently active version can be checked at
-
-    https://luci-config.appspot.com/#/projects/chromium/<ref>
-    # For example, for master branch:
-    #   https://luci-config.appspot.com/#/projects/chromium/refs/heads/master
+This directory used to contain CQ configuration. This has moved to [commit-queue.cfg](https://chromium.googlesource.com/chromium/src/+/master/infra/config/global/commit-queue.cfg).
diff --git a/infra/config/branch/cq.cfg b/infra/config/branch/cq.cfg
deleted file mode 100644
index ae3217da..0000000
--- a/infra/config/branch/cq.cfg
+++ /dev/null
@@ -1,277 +0,0 @@
-# See http://luci-config.appspot.com/schemas/projects/refs:cq.cfg for the
-# documentation of this file format.
-
-# This file is also used to auto generate //docs/infra/cq_builders.md. If you
-# change this file, run //infra/config/branch/cq_cfg_presubmit.py, which will
-# generate that file. That script also requires that the builders in this file
-# remain sorted. The script is invoked via presubmit, and will complain if this
-# file is change but the documentation isn't.
-#
-# The auto generated file copies comments made to builders in this file. If you
-# comment on the line directly above a builder, that comment will get copied to
-# the documentation.
-#
-# The following comment will get copied.
-#
-# # This is a great builder!
-# builders { name: "chromium_presubmit" }
-#
-# The following comment will not get copied.
-#
-# # This is a ok builder!
-#
-# builders { name: "chromium_presubmit" }
-
-version: 1
-cq_status_url: "https://chromium-cq-status.appspot.com"
-git_repo_url: "https://chromium.googlesource.com/chromium/src"
-commit_burst_delay: 60
-max_commit_burst: 2
-
-# Trooper, if you want to drain CQ such that CQ stops triggering new trybots,
-# uncomment line below. The timestamp cutoff time in UTC s.t. all CLs
-# on which CQ was triggered **after** this time are ignored by CQ.
-# draining_start_time: "2018-02-28T20:00:00Z"
-
-gerrit {}
-
-verifiers {
-  gerrit_cq_ability {
-    committer_list: "project-chromium-committers"
-    dry_run_access_list: "project-chromium-tryjob-access"
-  }
-
-  tree_status {
-    tree_status_url: "https://chromium-status.appspot.com/"
-  }
-
-# NOTE: when adding new configs to the commit queue, please contact
-# chrome-eng-review per
-# https://sites.google.com/a/chromium.org/dev/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot?pli=1#TOC-Adding-new-build-configurations-and-tests-to-the-main-Chromium-waterfall-Commit-Queue
-  try_job {
-    buckets {
-      name: "luci.chromium.try"
-
-      #############################
-      # Always required builders. #
-      #############################
-
-      builders { name: "android-binary-size" }
-      builders { name: "android-kitkat-arm-rel" }
-      builders { name: "android-marshmallow-arm64-rel" }
-      builders { name: "android_arm64_dbg_recipe" }
-      builders { name: "android_clang_dbg_recipe" }
-      builders { name: "android_compile_dbg" }
-      builders { name: "android_cronet" }
-      builders { name: "cast_shell_android" }
-      builders { name: "cast_shell_linux" }
-      builders { name: "chromeos-amd64-generic-rel" }
-      builders { name: "chromeos-daisy-rel" }
-      builders {
-        name: "chromium_presubmit"
-        # Presubmit builder should be re-run every time CQ is triggered
-        # for last minute lint, OWNERS, etc checks.
-        disable_reuse: true
-      }
-      builders { name: "fuchsia_arm64" }
-      builders { name: "fuchsia_x64" }
-      builders { name: "ios-simulator" }
-      builders { name: "linux-chromeos-compile-dbg" }
-      builders { name: "linux-chromeos-rel" }
-      builders { name: "linux-jumbo-rel" }
-      builders { name: "linux-libfuzzer-asan-rel" }
-      builders { name: "linux-ozone-rel" }
-      builders { name: "linux-rel" }
-      builders { name: "linux_chromium_asan_rel_ng" }
-      builders { name: "linux_chromium_compile_dbg_ng" }
-      builders { name: "linux_chromium_headless_rel" }
-      builders { name: "linux_chromium_tsan_rel_ng" }
-      builders { name: "mac-rel" }
-      builders { name: "mac_chromium_compile_dbg_ng" }
-      builders { name: "win-libfuzzer-asan-rel" }
-      builders { name: "win10_chromium_x64_rel_ng" }
-      builders { name: "win7-rel"}
-      builders { name: "win_chromium_compile_dbg_ng" }
-
-      ######################
-      # Optional builders. #
-      ######################
-
-      builders {
-        name: "android_optional_gpu_tests_rel"
-        path_regexp: "cc/.+"
-        path_regexp: "chrome/browser/vr/.+"
-        path_regexp: "components/viz/.+"
-        path_regexp: "content/test/gpu/.+"
-        path_regexp: "gpu/.+"
-        path_regexp: "media/audio/.+"
-        path_regexp: "media/filters/.+"
-        path_regexp: "media/gpu/.+"
-        path_regexp: "services/viz/.+"
-        path_regexp: "testing/trigger_scripts/.+"
-        path_regexp: "third_party/blink/renderer/modules/webgl/.+"
-        path_regexp: "ui/gl/.+"
-      }
-      builders {
-        name: "closure_compilation"
-        path_regexp: "third_party/closure_compiler/.+"
-      }
-      builders {
-        name: "ios-simulator-cronet"
-        path_regexp: "components/cronet/.+"
-        path_regexp_exclude: "components/cronet/android/.+"
-        path_regexp: "components/grpc_support/.+"
-        path_regexp: "ios/.+"
-      }
-      builders {
-        name: "ios-simulator-full-configs"
-        path_regexp: "ios/.+"
-      }
-      builders {
-        name: "linux-blink-rel"
-        path_regexp: "cc/.+"
-        path_regexp: "third_party/blink/renderer/core/paint/.+"
-        path_regexp: "third_party/blink/renderer/core/svg/.+"
-        path_regexp: "third_party/blink/renderer/platform/graphics/.+"
-        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint"
-        path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+"
-      }
-      builders {
-        name: "linux_chromium_dbg_ng"
-        path_regexp: "build/.*check_gn_headers.*"
-      }
-      builders {
-        name: "linux_layout_tests_composite_after_paint"
-        path_regexp: "third_party/blink/renderer/core/paint/.+"
-        path_regexp: "third_party/blink/renderer/core/svg/.+"
-        path_regexp: "third_party/blink/renderer/platform/graphics/.+"
-        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint"
-        path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+"
-      }
-      builders {
-        name: "linux_layout_tests_layout_ng"
-        path_regexp: "third_party/blink/renderer/core/editing/.+"
-        path_regexp: "third_party/blink/renderer/core/layout/.+"
-        path_regexp: "third_party/blink/renderer/core/paint/.+"
-        path_regexp: "third_party/blink/renderer/core/svg/.+"
-        path_regexp: "third_party/blink/renderer/platform/fonts/shaping/.+"
-        path_regexp: "third_party/blink/renderer/platform/graphics/.+"
-        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG"
-        path_regexp: "third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/.+"
-      }
-      builders {
-        name: "linux_mojo"
-        path_regexp: "services/network/.+"
-        path_regexp: "testing/buildbot/filters/mojo\\.fyi\\.network_.*"
-        path_regexp: "third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService"
-      }
-      builders {
-        name: "linux_optional_gpu_tests_rel"
-        path_regexp: "chrome/browser/vr/.+"
-        path_regexp: "content/test/gpu/.+"
-        path_regexp: "gpu/.+"
-        path_regexp: "media/audio/.+"
-        path_regexp: "media/filters/.+"
-        path_regexp: "media/gpu/.+"
-        path_regexp: "testing/trigger_scripts/.+"
-        path_regexp: "third_party/blink/renderer/modules/webgl/.+"
-        path_regexp: "ui/gl/.+"
-      }
-      builders {
-        name: "linux_vr"
-        path_regexp: "chrome/browser/vr/.+"
-      }
-      builders {
-        name: "mac_optional_gpu_tests_rel"
-        path_regexp: "chrome/browser/vr/.+"
-        path_regexp: "content/test/gpu/.+"
-        path_regexp: "gpu/.+"
-        path_regexp: "media/audio/.+"
-        path_regexp: "media/filters/.+"
-        path_regexp: "media/gpu/.+"
-        path_regexp: "services/shape_detection/.+"
-        path_regexp: "testing/trigger_scripts/.+"
-        path_regexp: "third_party/blink/renderer/modules/webgl/.+"
-        path_regexp: "ui/gl/.+"
-      }
-      builders {
-        name: "win_optional_gpu_tests_rel"
-        path_regexp: "chrome/browser/vr/.+"
-        path_regexp: "content/test/gpu/.+"
-        path_regexp: "device/vr/.+"
-        path_regexp: "gpu/.+"
-        path_regexp: "media/audio/.+"
-        path_regexp: "media/filters/.+"
-        path_regexp: "media/gpu/.+"
-        path_regexp: "testing/trigger_scripts/.+"
-        path_regexp: "third_party/blink/renderer/modules/vr/.+"
-        path_regexp: "third_party/blink/renderer/modules/webgl/.+"
-        path_regexp: "third_party/blink/renderer/modules/xr/.+"
-        path_regexp: "third_party/blink/renderer/platform/graphics/gpu/.+"
-        path_regexp: "ui/gl/.+"
-      }
-
-      ##########################
-      # Experimental builders. #
-      ##########################
-
-      # https://crbug.com/739556; make this non-experimental ASAP.
-      builders {
-        name: "ios-device"
-        experiment_percentage: 10
-      }
-      # https://crbug.com/739556
-      builders {
-        name: "ios-device-xcode-clang"
-        experiment_percentage: 10
-      }
-      # https://crbug.com/739556
-      builders {
-        name: "ios-simulator-xcode-clang"
-        experiment_percentage: 10
-      }
-      # https://crbug.com/833482
-      builders {
-        name: "linux-dcheck-off-rel"
-        experiment_percentage: 10
-      }
-      # https://crbug.com/855319
-      builders {
-        name: "linux-goma-rbe-staging-rel"
-        experiment_percentage: 40
-      }
-      builders {
-        name: "win7_chromium_rel_loc_exp"
-        experiment_percentage: 20
-      }
-    }
-
-    buckets {
-      name: "master.tryserver.chromium.android"
-      builders {
-        name: "android_compile_x64_dbg"
-        path_regexp: "sandbox/linux/seccomp-bpf/.+"
-        path_regexp: "sandbox/linux/seccomp-bpf-helpers/.+"
-        path_regexp: "sandbox/linux/system_headers/.+"
-        path_regexp: "sandbox/linux/tests/.+"
-      }
-      builders {
-        name: "android_compile_x86_dbg"
-        path_regexp: "sandbox/linux/seccomp-bpf/.+"
-        path_regexp: "sandbox/linux/seccomp-bpf-helpers/.+"
-        path_regexp: "sandbox/linux/system_headers/.+"
-        path_regexp: "sandbox/linux/tests/.+"
-      }
-      builders {
-        name: "android_cronet_tester"
-        path_regexp: "components/cronet/.+"
-        path_regexp_exclude: "components/cronet/ios/.+"
-        path_regexp: "components/grpc_support/.+"
-      }
-    }
-  }
-
-# NOTE: when adding new configs to the commit queue, please contact
-# chrome-eng-review per
-# https://sites.google.com/a/chromium.org/dev/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot?pli=1#TOC-Adding-new-build-configurations-and-tests-to-the-main-Chromium-waterfall-Commit-Queue
-}
diff --git a/infra/config/global/PRESUBMIT.py b/infra/config/global/PRESUBMIT.py
index 81687a14..a18b6b1 100644
--- a/infra/config/global/PRESUBMIT.py
+++ b/infra/config/global/PRESUBMIT.py
@@ -9,12 +9,12 @@
 """
 
 
-def _CheckLuciMiloCfg(input_api, output_api):
-  if ('infra/config/global/luci-milo.cfg' not in input_api.LocalPaths() and
-      'infra/config/global/lint-luci-milo.py' not in input_api.LocalPaths()):
-    return []
+def _CommonChecks(input_api, output_api):
+  commands = []
 
-  return input_api.RunTests([
+  if ('infra/config/global/luci-milo.cfg' in input_api.LocalPaths() or
+      'infra/config/global/lint-luci-milo.py' in input_api.LocalPaths()):
+    commands.append(
       input_api.Command(
           name='lint-luci-milo',
           cmd=[input_api.python_executable, 'lint-luci-milo.py'],
@@ -28,10 +28,34 @@
                 '..', '..', '..', 'testing', 'buildbot',
                 'generate_buildbot_json.py',),
             '--check'],
-        kwargs={}, message=output_api.PresubmitError)])
+        kwargs={}, message=output_api.PresubmitError))
+
+  if 'infra/config/global/commit-queue.cfg' in input_api.LocalPaths():
+    commands.append(
+      input_api.Command(
+        name='commit-queue.cfg presubmit', cmd=[
+            input_api.python_executable, input_api.os_path.join(
+                'cq_cfg_presubmit.py'),
+            '--check'],
+        kwargs={}, message=output_api.PresubmitError),
+    )
+
+  commands.extend(input_api.canned_checks.GetUnitTestsRecursively(
+      input_api, output_api,
+      input_api.os_path.join(input_api.PresubmitLocalPath()),
+      whitelist=[r'.+_unittest\.py$'], blacklist=[]))
+
+  results = []
+
+  results.extend(input_api.RunTests(commands))
+  results.extend(input_api.canned_checks.CheckChangedLUCIConfigs(
+      input_api, output_api))
+
+  return results
+
 
 def CheckChangeOnUpload(input_api, output_api):
-  return _CheckLuciMiloCfg(input_api, output_api)
+  return _CommonChecks(input_api, output_api)
 
 def CheckChangeOnCommit(input_api, output_api):
-  return _CheckLuciMiloCfg(input_api, output_api)
+  return _CommonChecks(input_api, output_api)
diff --git a/infra/config/global/commit-queue.cfg b/infra/config/global/commit-queue.cfg
index 89befb7..4fdd887 100644
--- a/infra/config/global/commit-queue.cfg
+++ b/infra/config/global/commit-queue.cfg
@@ -1,5 +1,26 @@
 # See http://luci-config.appspot.com/schemas/projects:commit-queue.cfg for the
 # documentation of this file format.
+#
+# This file is also used to auto generate //docs/infra/cq_builders.md. If you
+# change this file, run //infra/config/branch/cq_cfg_presubmit.py, which will
+# generate that file. That script also requires that the builders in this file
+# remain sorted. The script is invoked via presubmit, and will complain if this
+# file is change but the documentation isn't.
+#
+# The auto generated file copies comments made to builders in this file. If you
+# comment on the line directly above a builder, that comment will get copied to
+# the documentation.
+#
+# The following comment will get copied.
+#
+# # This is a great builder!
+# builders { name: "chromium_presubmit" }
+#
+# The following comment will not get copied.
+#
+# # This is a ok builder!
+#
+# builders { name: "chromium_presubmit" }
 
 cq_status_host: "chromium-cq-status.appspot.com"
 submit_options {
@@ -8,6 +29,10 @@
     seconds: 60
   }
 }
+
+# NOTE: To add a new builder to the commit queue, see
+# https://chromium.googlesource.com/chromium/src/+/HEAD/docs/infra/cq.md#how-do-i-add-a-new-builder-to-the-cq
+
 config_groups {
   gerrit {
     url: "https://chromium-review.googlesource.com"
@@ -25,6 +50,10 @@
       url: "https://chromium-status.appspot.com/"
     }
     tryjob {
+      #############################
+      # Always required builders. #
+      #############################
+
       builders {
         name: "chromium/try/android-binary-size"
       }
@@ -119,6 +148,11 @@
       builders {
         name: "chromium/try/win_chromium_compile_dbg_ng"
       }
+
+      ######################
+      # Optional builders. #
+      ######################
+
       builders {
         name: "chromium/try/android_optional_gpu_tests_rel"
         location_regexp: ".+/[+]/cc/.+"
@@ -232,22 +266,32 @@
         location_regexp: ".+/[+]/third_party/blink/renderer/platform/graphics/gpu/.+"
         location_regexp: ".+/[+]/ui/gl/.+"
       }
+
+      ##########################
+      # Experimental builders. #
+      ##########################
+
+      # https://crbug.com/739556; make this non-experimental ASAP.
       builders {
         name: "chromium/try/ios-device"
         experiment_percentage: 10
       }
+      # https://crbug.com/739556
       builders {
         name: "chromium/try/ios-device-xcode-clang"
         experiment_percentage: 10
       }
+      # https://crbug.com/739556
       builders {
         name: "chromium/try/ios-simulator-xcode-clang"
         experiment_percentage: 10
       }
+      # https://crbug.com/833482
       builders {
         name: "chromium/try/linux-dcheck-off-rel"
         experiment_percentage: 10
       }
+      # https://crbug.com/855319
       builders {
         name: "chromium/try/linux-goma-rbe-staging-rel"
         experiment_percentage: 40
@@ -256,6 +300,7 @@
         name: "chromium/try/win7_chromium_rel_loc_exp"
         experiment_percentage: 20
       }
+
       builders {
         name: "*/master.tryserver.chromium.android/android_compile_x64_dbg"
         location_regexp: ".+/[+]/sandbox/linux/seccomp-bpf/.+"
@@ -286,3 +331,6 @@
     }
   }
 }
+
+# NOTE: To add a new builder to the commit queue, see
+# https://chromium.googlesource.com/chromium/src/+/HEAD/docs/infra/cq.md#how-do-i-add-a-new-builder-to-the-cq
diff --git a/infra/config/branch/cq_cfg_presubmit.py b/infra/config/global/cq_cfg_presubmit.py
similarity index 78%
rename from infra/config/branch/cq_cfg_presubmit.py
rename to infra/config/global/cq_cfg_presubmit.py
index 99f055e..9e1a3c3 100755
--- a/infra/config/branch/cq_cfg_presubmit.py
+++ b/infra/config/global/cq_cfg_presubmit.py
@@ -19,7 +19,7 @@
 MD_HEADER = """# List of CQ builders
 
 This page is auto generated using the script
-//infra/config/branch/cq_config_presubmit.py. Do not manually edit.
+//infra/config/global/cq_config_presubmit.py. Do not manually edit.
 
 [TOC]
 
@@ -36,7 +36,7 @@
 
 OPTIONAL_HEADER = """These builders optionally run, depending on the files in a
 CL. For example, a CL which touches `//gpu/BUILD.gn` would trigger the builder
-`android_optional_gpu_tests_rel`, due to the `path_regexp` values for that
+`android_optional_gpu_tests_rel`, due to the `location_regexp` values for that
 builder."""
 
 
@@ -57,18 +57,22 @@
 
 
 CQ_CONFIG_LOCATION_URL = (
-    CODE_SEARCH_BASE + 'search/?q=package:%5Echromium$+file:cq.cfg+')
+    CODE_SEARCH_BASE + 'search/?q=package:%5Echromium$+file:commit-queue.cfg+')
 
 
 REGEX_SEARCH_URL = CODE_SEARCH_BASE + 'search/?q=package:%5Echromium$+'
 
 
+# Location regexps in commit-queue.cfg are expected to have this prefix.
+REGEX_PREFIX = r'.+/[+]/'
+
+
 def parse_text_proto_message(lines):
   """Parses a text proto. LOW QUALITY, MAY EASILY BREAK.
 
   If you really need to parse text protos, use the actual python library for
-  protobufs. This exists because the .proto file for cq.cfg lives in another
-  repository.
+  protobufs. This exists because the .proto file for commit-queue.cfg lives in
+  another repository.
   """
   data = {}
 
@@ -152,7 +156,7 @@
     required, and optional."""
     self.builders.sort(key=lambda b: '%s|%s|%s' % (
         'z' if b.get('experiment_percentage') else 'a',
-        'z' if b.get('path_regexp') else 'a',
+        'z' if b.get('location_regexp') else 'a',
         b['name']))
 
   def by_section(self):
@@ -161,7 +165,7 @@
     optional = []
     for b in self.builders:
       # Don't handle if something is both optional and experimental
-      if b.get('path_regexp'):
+      if b.get('location_regexp'):
         optional.append(b)
       elif b.get('experiment_percentage'):
         experimental.append(b)
@@ -173,7 +177,19 @@
 
 class CQConfig(object):
   def __init__(self, lines):
-    self._value = parse_text_proto_message(lines)
+    parsed_value = parse_text_proto_message(lines)
+
+    # Sanity check.
+    assert len(parsed_value['config_groups']) == 1, (
+        'Expected only one config group, found %d' % len(
+            parsed_value['config_groups']))
+    grp = parsed_value['config_groups'][0]
+    gerrit = grp['gerrit'][0]
+    name = gerrit['projects'][0]['name'][0]
+    assert name == 'chromium/src', (
+        'Expected first config group to be chromium src, got %s' % name)
+    # The config group for chromium source refs/heads.
+    self._config_group = grp
 
   @staticmethod
   def from_file(path):
@@ -182,32 +198,24 @@
 
     return CQConfig(lines)
 
-  def get_path_regexps(self):
+  def get_location_regexps(self):
     _, opt, _ = self.builder_list().by_section()
     for b in opt:
-      if 'path_regexp' in b:
-        for reg in b['path_regexp']:
+      if 'location_regexp' in b:
+        for reg in b['location_regexp']:
           yield reg
-      if 'path_regexp_exclude' in b:
-        for reg in b['path_regexp_exclude']:
+      if 'location_regexp_exclude' in b:
+        for reg in b['location_regexp_exclude']:
           yield reg
 
-  @property
-  def version(self):
-    return int(self._value['version'][0])
-
-  def builder_list(self, pred=None):
-    """Returns a list of builders.
-
-    pred is a predicate used to decide if a builder should be returned. It takes
-    the bucket and builder as arguments."""
+  def builder_list(self):
+    """Returns a list of builders."""
     items = []
-    for bucket in (
-        self._value['verifiers'][0]['try_job'][0]['buckets']):
-      for b in bucket['builders']:
-        if pred and not pred(bucket['name'][0], b):
-          continue
-        items.append(b)
+    for b in self._config_group['verifiers'][0]['tryjob'][0]['builders']:
+      if not b['name'][0].startswith('chromium'):
+        # Buildbot builders, just ignore.
+        continue
+      items.append(b)
     return BuilderList(items)
 
   def get_markdown_doc(self):
@@ -228,21 +236,25 @@
         lines.append(l)
       lines.append('')
       for b in builders:
+        buildername = b['name'][0].split('/')[-1]
         lines.append(
-            '* [%s](%s) ([`cq.cfg` entry](%s)) ([matching builders](%s))' % (
-            b['name'][0], BUILDER_VIEW_URL + b['name'][0],
+            '* [%s](%s) ([`commit-queue.cfg` entry](%s)) '
+            '([matching builders](%s))' % (
+            buildername, BUILDER_VIEW_URL + buildername,
             CQ_CONFIG_LOCATION_URL + b['name'][0],
-            TRYBOT_SOURCE_URL + b['name'][0],))
+            TRYBOT_SOURCE_URL + buildername))
         lines.append('')
         if 'comment' in b:
           for l in b['comment'].split('\n'):
             lines.append('  ' + l.strip())
           lines.append('')
-        if 'path_regexp' in b:
+        if 'location_regexp' in b:
           lines.append('  Path regular expressions:')
-          for regex in b['path_regexp']:
-            regex_title = '//' + regex.lstrip('/')
+          for regex in b['location_regexp']:
             url = None
+            if regex.startswith(REGEX_PREFIX):
+              regex = regex[len(REGEX_PREFIX):]
+            regex_title = '//' + regex.lstrip('/')
             if regex.endswith('.+'):
               regex = regex[:-len('.+')]
               if all(
@@ -264,15 +276,17 @@
 
     return '\n'.join(lines)
 
-def verify_path_regexps(regexps, verbose=True):
+def verify_location_regexps(regexps, verbose=True):
   # Verify that all the regexps listed in the file have files which they could
   # be triggered by. Failing this usually means they're old, and the code was
   # moved somewhere, like the webkit->blink rename.
   invalid_regexp = False
   for regexp in regexps:
     regexp = regexp.replace('\\\\', '')
+    assert regexp.startswith(REGEX_PREFIX)
+    regexp = regexp[len(REGEX_PREFIX):]
     # Split by path name, so that we don't have to run os.walk on the entire
-    # source tree. cq.cfg always uses '/' as the path separator.
+    # source tree. commit-queue.cfg always uses '/' as the path separator.
     parts = regexp.split('/')
     # Dash and equal sign are used by layout tests.
     simple_name_re = re.compile(r'^[a-zA-Z0-9_\-=]*$')
@@ -282,7 +296,8 @@
       if not simple_name_re.match(itm):
         break
       last_normal_path += 1
-    path_to_search = os.path.join(*parts[:last_normal_path])
+    path_to_search = (
+        os.path.join(*parts[:last_normal_path]) if last_normal_path else '')
     # Simple case. Regexp is just referencing a single file. Just check if the
     # file exists.
     if path_to_search == os.path.join(*parts) and os.path.exists(
@@ -317,27 +332,25 @@
   parser = argparse.ArgumentParser()
   parser.add_argument(
     '-c', '--check', action='store_true', help=
-    'Do consistency checks of cq.cfg and generated files. Used during'
-    'presubmit. Causes the tool to not generate any files.')
+    'Do consistency checks of commit-queue.cfg and generated files. Used '
+    'during presubmit. Causes the tool to not generate any files.')
   args = parser.parse_args()
 
   exit_code = 0
 
   cfg = CQConfig.from_file(os.path.join(
-      CHROMIUM_DIR, 'infra', 'config', 'branch', 'cq.cfg'))
-  if cfg.version != 1:
-    raise ValueError("Expected version 1, got %r" % cfg.version)
+      CHROMIUM_DIR, 'infra', 'config', 'global', 'commit-queue.cfg'))
 
   # Only force sorting on luci.chromium.try builders. Others should go away soon
   # anyways...
-  bl = cfg.builder_list(lambda bucket, builder: bucket == 'luci.chromium.try')
+  bl = cfg.builder_list()
   assert len(bl.builders) > 0, (
       'Builders in \'luci.chromium.try\' bucket are missing somehow...')
   names = [b['name'][0] for b in bl.builders]
   bl.sort() # Changes the bl, so the next line is sorted.
   sorted_names = [b['name'][0] for b in bl.builders]
   if sorted_names != names:
-    print 'ERROR: cq.cfg is unsorted.',
+    print 'ERROR: commit-queue.cfg is unsorted.',
     if args.check:
       print
     else:
@@ -349,17 +362,15 @@
     exit_code = 1
 
   if args.check:
-    if not verify_path_regexps(cfg.get_path_regexps()):
+    if not verify_location_regexps(cfg.get_location_regexps()):
       exit_code = 1
 
-    # TODO(martiniss): Add a check for path_regexp, to make sure they're valid
-    # paths.
     with open(os.path.join(
         CHROMIUM_DIR, 'docs', 'infra', 'cq_builders.md')) as f:
       if cfg.get_markdown_doc() != f.read():
         print (
             'Markdown file is out of date. Please run '
-            '`//infra/config/branch/cq_cfg_presubmit.py` to regenerate the '
+            '`//infra/config/global/cq_cfg_presubmit.py` to regenerate the '
             'docs.')
         exit_code = 1
   else:
diff --git a/infra/config/branch/cq_cfg_presubmit_unittest.py b/infra/config/global/cq_cfg_presubmit_unittest.py
similarity index 69%
rename from infra/config/branch/cq_cfg_presubmit_unittest.py
rename to infra/config/global/cq_cfg_presubmit_unittest.py
index 302f8b6..032d5ae 100755
--- a/infra/config/branch/cq_cfg_presubmit_unittest.py
+++ b/infra/config/global/cq_cfg_presubmit_unittest.py
@@ -12,14 +12,14 @@
 
 
 class CqCfgPresubmitTest(unittest.TestCase):
-  def test_verify_path_regexp_exists(self):
+  def test_verify_location_regexp_exists(self):
     with mock.patch('cq_cfg_presubmit.os.path.exists') as exists:
       exists.side_effect = [True]
-      self.assertTrue(cq_cfg_presubmit.verify_path_regexps([
-          'simple/file',
+      self.assertTrue(cq_cfg_presubmit.verify_location_regexps([
+          cq_cfg_presubmit.REGEX_PREFIX + 'simple/file',
       ]))
 
-  def test_verify_path_regexp_os_walk_found(self):
+  def test_verify_location_regexp_os_walk_found(self):
     with mock.patch('cq_cfg_presubmit.os.walk') as walk:
       walk.side_effect = [(
           (os.path.join(cq_cfg_presubmit.CHROMIUM_DIR, 'random'),
@@ -29,11 +29,11 @@
       )]
       with mock.patch('cq_cfg_presubmit.os.path.exists') as exists:
         exists.side_effect = [False]
-        self.assertTrue(cq_cfg_presubmit.verify_path_regexps([
-            'simple/file/.+',
+        self.assertTrue(cq_cfg_presubmit.verify_location_regexps([
+            cq_cfg_presubmit.REGEX_PREFIX + 'simple/file/.+',
         ], False))
 
-  def test_verify_path_regexp_os_walk_not_found(self):
+  def test_verify_location_regexp_os_walk_not_found(self):
     with mock.patch('cq_cfg_presubmit.os.walk') as walk:
       walk.side_effect = [(
           (os.path.join(cq_cfg_presubmit.CHROMIUM_DIR, 'random'),
@@ -41,8 +41,8 @@
       )]
       with mock.patch('cq_cfg_presubmit.os.path.exists') as exists:
         exists.side_effect = [False]
-        self.assertFalse(cq_cfg_presubmit.verify_path_regexps([
-            'simple/file/.+',
+        self.assertFalse(cq_cfg_presubmit.verify_location_regexps([
+            cq_cfg_presubmit.REGEX_PREFIX + 'simple/file/.+',
         ], False))
 
 
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg
index fd8ab82..b8e06419 100644
--- a/infra/config/global/cr-buildbucket.cfg
+++ b/infra/config/global/cr-buildbucket.cfg
@@ -1955,6 +1955,9 @@
       dimensions: "os:Ubuntu-14.04"
       dimensions: "cores:32"
       mixins: "memory-ci"
+
+      # TODO(thakis): Remove once https://crbug.com/927738 is resolved.
+      execution_timeout_secs: 14400 # 4 hours
     }
     builders {
       name: "Jumbo Win x64"
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
index 2e81a08cf..c64c504 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
@@ -16,7 +16,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/threading/scoped_blocking_call.h"
-#include "components/invalidation/impl/profile_invalidation_provider.h"
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/prefs/pref_service.h"
 #include "components/signin/core/browser/account_fetcher_service.h"
@@ -29,7 +28,6 @@
 #include "ios/chrome/browser/browser_state_metrics/browser_state_metrics.h"
 #include "ios/chrome/browser/chrome_constants.h"
 #include "ios/chrome/browser/chrome_paths.h"
-#include "ios/chrome/browser/invalidation/ios_chrome_deprecated_profile_invalidation_provider_factory.h"
 #include "ios/chrome/browser/pref_names.h"
 #include "ios/chrome/browser/signin/account_consistency_service_factory.h"
 #include "ios/chrome/browser/signin/account_fetcher_service_factory.h"
@@ -211,14 +209,8 @@
   ios::GaiaCookieManagerServiceFactory::GetForBrowserState(browser_state)
       ->InitCookieListener();
   ios::AccountConsistencyServiceFactory::GetForBrowserState(browser_state);
-  invalidation::ProfileInvalidationProvider* invalidation_provider =
-      IOSChromeDeprecatedProfileInvalidationProviderFactory::GetForBrowserState(
-          browser_state);
-  invalidation::InvalidationService* invalidation_service =
-      invalidation_provider ? invalidation_provider->GetInvalidationService()
-                            : nullptr;
   ios::AccountFetcherServiceFactory::GetForBrowserState(browser_state)
-      ->SetupInvalidationsOnProfileLoad(invalidation_service);
+      ->OnProfileLoaded();
   ios::AccountReconcilorFactory::GetForBrowserState(browser_state);
   // Initialization needs to happen after the browser context is available
   // because UnifiedConsentService's dependencies needs the URL context getter.
diff --git a/ios/chrome/browser/signin/BUILD.gn b/ios/chrome/browser/signin/BUILD.gn
index 35a5304c..57b56346 100644
--- a/ios/chrome/browser/signin/BUILD.gn
+++ b/ios/chrome/browser/signin/BUILD.gn
@@ -36,6 +36,7 @@
     "gaia_cookie_manager_service_factory.h",
     "identity_manager_factory.cc",
     "identity_manager_factory.h",
+    "identity_manager_factory_observer.h",
     "identity_service_creator.cc",
     "identity_service_creator.h",
     "ios_chrome_signin_client.h",
diff --git a/ios/chrome/browser/signin/identity_manager_factory.cc b/ios/chrome/browser/signin/identity_manager_factory.cc
index 4e26f71..8351b2ee 100644
--- a/ios/chrome/browser/signin/identity_manager_factory.cc
+++ b/ios/chrome/browser/signin/identity_manager_factory.cc
@@ -12,6 +12,7 @@
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #include "ios/chrome/browser/signin/account_tracker_service_factory.h"
 #include "ios/chrome/browser/signin/gaia_cookie_manager_service_factory.h"
+#include "ios/chrome/browser/signin/identity_manager_factory_observer.h"
 #include "ios/chrome/browser/signin/profile_oauth2_token_service_factory.h"
 #include "ios/chrome/browser/signin/signin_manager_factory.h"
 #include "services/identity/public/cpp/accounts_mutator.h"
@@ -75,8 +76,33 @@
   return instance.get();
 }
 
+void IdentityManagerFactory::AddObserver(
+    IdentityManagerFactoryObserver* observer) {
+  observer_list_.AddObserver(observer);
+}
+
+void IdentityManagerFactory::RemoveObserver(
+    IdentityManagerFactoryObserver* observer) {
+  observer_list_.RemoveObserver(observer);
+}
+
 std::unique_ptr<KeyedService> IdentityManagerFactory::BuildServiceInstanceFor(
     web::BrowserState* browser_state) const {
-  return std::make_unique<IdentityManagerWrapper>(
+  auto identity_manager = std::make_unique<IdentityManagerWrapper>(
       ios::ChromeBrowserState::FromBrowserState(browser_state));
+
+  for (auto& observer : observer_list_)
+    observer.IdentityManagerCreated(identity_manager.get());
+
+  return identity_manager;
+}
+
+void IdentityManagerFactory::BrowserStateShutdown(web::BrowserState* context) {
+  auto* identity_manager = static_cast<IdentityManagerWrapper*>(
+      GetServiceForBrowserState(context, false));
+  if (identity_manager) {
+    for (auto& observer : observer_list_)
+      observer.IdentityManagerShutdown(identity_manager);
+  }
+  BrowserStateKeyedServiceFactory::BrowserStateShutdown(context);
 }
diff --git a/ios/chrome/browser/signin/identity_manager_factory.h b/ios/chrome/browser/signin/identity_manager_factory.h
index b8d4253b..87bb811 100644
--- a/ios/chrome/browser/signin/identity_manager_factory.h
+++ b/ios/chrome/browser/signin/identity_manager_factory.h
@@ -7,8 +7,11 @@
 
 #include "base/macros.h"
 #include "base/no_destructor.h"
+#include "base/observer_list.h"
 #include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
 
+class IdentityManagerFactoryObserver;
+
 namespace identity {
 class IdentityManager;
 }
@@ -29,15 +32,25 @@
   // Returns an instance of the IdentityManagerFactory singleton.
   static IdentityManagerFactory* GetInstance();
 
+  // Methods to register or remove observers of IdentityManager
+  // creation/shutdown.
+  void AddObserver(IdentityManagerFactoryObserver* observer);
+  void RemoveObserver(IdentityManagerFactoryObserver* observer);
+
  private:
   friend class base::NoDestructor<IdentityManagerFactory>;
 
   IdentityManagerFactory();
   ~IdentityManagerFactory() override;
 
+  // List of observers. Checks that list is empty on destruction.
+  mutable base::ObserverList<IdentityManagerFactoryObserver, true>::Unchecked
+      observer_list_;
+
   // BrowserStateKeyedServiceFactory:
   std::unique_ptr<KeyedService> BuildServiceInstanceFor(
       web::BrowserState* browser_state) const override;
+  void BrowserStateShutdown(web::BrowserState* context) override;
 
   DISALLOW_COPY_AND_ASSIGN(IdentityManagerFactory);
 };
diff --git a/ios/chrome/browser/signin/identity_manager_factory_observer.h b/ios/chrome/browser/signin/identity_manager_factory_observer.h
new file mode 100644
index 0000000..aac5f08
--- /dev/null
+++ b/ios/chrome/browser/signin/identity_manager_factory_observer.h
@@ -0,0 +1,31 @@
+// Copyright 2019 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 IOS_CHROME_BROWSER_SIGNIN_IDENTITY_MANAGER_FACTORY_OBSERVER_H_
+#define IOS_CHROME_BROWSER_SIGNIN_IDENTITY_MANAGER_FACTORY_OBSERVER_H_
+
+#include "base/macros.h"
+
+namespace identity {
+class IdentityManager;
+}
+
+// Observer for IdentityManagerFactory.
+class IdentityManagerFactoryObserver {
+ public:
+  IdentityManagerFactoryObserver() {}
+  virtual ~IdentityManagerFactoryObserver() {}
+
+  // Called when an IdentityManager instance is created.
+  virtual void IdentityManagerCreated(identity::IdentityManager* manager) {}
+
+  // Called when a IdentityManager instance is being shut down. Observers
+  // of |manager| should remove themselves at this point.
+  virtual void IdentityManagerShutdown(identity::IdentityManager* manager) {}
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(IdentityManagerFactoryObserver);
+};
+
+#endif  // IOS_CHROME_BROWSER_SIGNIN_IDENTITY_MANAGER_FACTORY_OBSERVER_H_
diff --git a/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc b/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc
index e63a8e8..589de167 100644
--- a/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc
+++ b/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc
@@ -11,6 +11,7 @@
 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
 #include "components/signin/ios/browser/profile_oauth2_token_service_ios_delegate.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/signin/account_fetcher_service_factory.h"
 #include "ios/chrome/browser/signin/account_tracker_service_factory.h"
 #include "ios/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h"
 #include "ios/chrome/browser/signin/gaia_cookie_manager_service_factory.h"
@@ -53,8 +54,25 @@
       browser_state->GetPrefs(), std::move(delegate));
 }
 
+std::unique_ptr<KeyedService> BuildFakeAccountFetcherService(
+    web::BrowserState* context) {
+  ios::ChromeBrowserState* browser_state =
+      ios::ChromeBrowserState::FromBrowserState(context);
+  auto account_fetcher_service = std::make_unique<FakeAccountFetcherService>();
+  account_fetcher_service->Initialize(
+      SigninClientFactory::GetForBrowserState(browser_state),
+      ProfileOAuth2TokenServiceFactory::GetForBrowserState(browser_state),
+      ios::AccountTrackerServiceFactory::GetForBrowserState(browser_state),
+      std::make_unique<TestImageDecoder>());
+  return account_fetcher_service;
+}
+
 TestChromeBrowserState::TestingFactories GetIdentityTestEnvironmentFactories() {
-  return {{ProfileOAuth2TokenServiceFactory::GetInstance(),
+  return {{ios::AccountFetcherServiceFactory::GetInstance(),
+           base::BindRepeating(&BuildFakeAccountFetcherService)},
+          {ios::GaiaCookieManagerServiceFactory::GetInstance(),
+           base::BindRepeating(&BuildFakeGaiaCookieManagerService)},
+          {ProfileOAuth2TokenServiceFactory::GetInstance(),
            base::BindRepeating(&BuildFakeOAuth2TokenService)},
           {ios::SigninManagerFactory::GetInstance(),
            base::BindRepeating(&BuildFakeSigninManager)}};
@@ -121,6 +139,9 @@
         ios::ChromeBrowserState* browser_state)
     : identity_test_env_(
           ios::AccountTrackerServiceFactory::GetForBrowserState(browser_state),
+          static_cast<FakeAccountFetcherService*>(
+              ios::AccountFetcherServiceFactory::GetForBrowserState(
+                  browser_state)),
           static_cast<FakeProfileOAuth2TokenService*>(
               ProfileOAuth2TokenServiceFactory::GetForBrowserState(
                   browser_state)),
diff --git a/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.cc b/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.cc
index 9a6ceba..988cc72 100644
--- a/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.cc
+++ b/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.cc
@@ -4,13 +4,11 @@
 
 #include "ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h"
 
-#include "components/signin/core/browser/signin_manager.h"
 #include "components/signin/core/browser/signin_status_metrics_provider.h"
 #include "ios/chrome/browser/application_context.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state_manager.h"
 #include "ios/chrome/browser/signin/identity_manager_factory.h"
-#include "ios/chrome/browser/signin/signin_manager_factory.h"
 #include "services/identity/public/cpp/identity_manager.h"
 
 IOSChromeSigninStatusMetricsProviderDelegate::
@@ -18,13 +16,13 @@
 
 IOSChromeSigninStatusMetricsProviderDelegate::
     ~IOSChromeSigninStatusMetricsProviderDelegate() {
-  ios::SigninManagerFactory* factory = ios::SigninManagerFactory::GetInstance();
+  IdentityManagerFactory* factory = IdentityManagerFactory::GetInstance();
   if (factory)
     factory->RemoveObserver(this);
 }
 
 void IOSChromeSigninStatusMetricsProviderDelegate::Initialize() {
-  ios::SigninManagerFactory* factory = ios::SigninManagerFactory::GetInstance();
+  IdentityManagerFactory* factory = IdentityManagerFactory::GetInstance();
   if (factory)
     factory->AddObserver(this);
 }
@@ -47,13 +45,14 @@
   return accounts_status;
 }
 
-std::vector<SigninManager*> IOSChromeSigninStatusMetricsProviderDelegate::
-    GetSigninManagersForAllAccounts() {
-  std::vector<SigninManager*> managers;
+std::vector<identity::IdentityManager*>
+IOSChromeSigninStatusMetricsProviderDelegate::
+    GetIdentityManagersForAllAccounts() {
+  std::vector<identity::IdentityManager*> managers;
   for (ios::ChromeBrowserState* browser_state :
        GetLoadedChromeBrowserStates()) {
-    SigninManager* manager =
-        ios::SigninManagerFactory::GetForBrowserStateIfExists(browser_state);
+    identity::IdentityManager* manager =
+        IdentityManagerFactory::GetForBrowserStateIfExists(browser_state);
     if (manager) {
       managers.push_back(manager);
     }
@@ -62,14 +61,14 @@
   return managers;
 }
 
-void IOSChromeSigninStatusMetricsProviderDelegate::SigninManagerCreated(
-    SigninManager* manager) {
-  owner()->OnSigninManagerCreated(manager);
+void IOSChromeSigninStatusMetricsProviderDelegate::IdentityManagerCreated(
+    identity::IdentityManager* manager) {
+  owner()->OnIdentityManagerCreated(manager);
 }
 
-void IOSChromeSigninStatusMetricsProviderDelegate::SigninManagerShutdown(
-    SigninManager* manager) {
-  owner()->OnSigninManagerShutdown(manager);
+void IOSChromeSigninStatusMetricsProviderDelegate::IdentityManagerShutdown(
+    identity::IdentityManager* manager) {
+  owner()->OnIdentityManagerShutdown(manager);
 }
 
 std::vector<ios::ChromeBrowserState*>
diff --git a/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h b/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h
index 3672c25..37d4a98 100644
--- a/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h
+++ b/ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h
@@ -9,7 +9,7 @@
 
 #include "base/macros.h"
 #include "components/signin/core/browser/signin_status_metrics_provider_delegate.h"
-#include "ios/chrome/browser/signin/signin_manager_factory_observer.h"
+#include "ios/chrome/browser/signin/identity_manager_factory_observer.h"
 
 namespace ios {
 class ChromeBrowserState;
@@ -17,7 +17,7 @@
 
 class IOSChromeSigninStatusMetricsProviderDelegate
     : public SigninStatusMetricsProviderDelegate,
-      public SigninManagerFactoryObserver {
+      public IdentityManagerFactoryObserver {
  public:
   IOSChromeSigninStatusMetricsProviderDelegate();
   ~IOSChromeSigninStatusMetricsProviderDelegate() override;
@@ -26,11 +26,12 @@
   // SigninStatusMetricsProviderDelegate implementation.
   void Initialize() override;
   AccountsStatus GetStatusOfAllAccounts() override;
-  std::vector<SigninManager*> GetSigninManagersForAllAccounts() override;
+  std::vector<identity::IdentityManager*> GetIdentityManagersForAllAccounts()
+      override;
 
-  // SigninManagerFactoryObserver implementation.
-  void SigninManagerCreated(SigninManager* manager) override;
-  void SigninManagerShutdown(SigninManager* manager) override;
+  // IdentityManagerFactoryObserver implementation.
+  void IdentityManagerCreated(identity::IdentityManager* manager) override;
+  void IdentityManagerShutdown(identity::IdentityManager* manager) override;
 
   // Returns the loaded ChromeBrowserState instances.
   std::vector<ios::ChromeBrowserState*> GetLoadedChromeBrowserStates();
diff --git a/ios/chrome/browser/ui/elements/BUILD.gn b/ios/chrome/browser/ui/elements/BUILD.gn
index 1c5c65c..4003db5 100644
--- a/ios/chrome/browser/ui/elements/BUILD.gn
+++ b/ios/chrome/browser/ui/elements/BUILD.gn
@@ -12,6 +12,8 @@
     "selector_picker_view_controller.h",
     "selector_picker_view_controller.mm",
     "selector_view_controller_delegate.h",
+    "top_aligned_image_view.h",
+    "top_aligned_image_view.mm",
   ]
   deps = [
     "//base",
diff --git a/ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.h b/ios/chrome/browser/ui/elements/top_aligned_image_view.h
similarity index 75%
rename from ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.h
rename to ios/chrome/browser/ui/elements/top_aligned_image_view.h
index 8997250..ec088d0 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.h
+++ b/ios/chrome/browser/ui/elements/top_aligned_image_view.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 IOS_CHROME_BROWSER_UI_TAB_GRID_GRID_TOP_ALIGNED_IMAGE_VIEW_H_
-#define IOS_CHROME_BROWSER_UI_TAB_GRID_GRID_TOP_ALIGNED_IMAGE_VIEW_H_
+#ifndef IOS_CHROME_BROWSER_UI_ELEMENTS_TOP_ALIGNED_IMAGE_VIEW_H_
+#define IOS_CHROME_BROWSER_UI_ELEMENTS_TOP_ALIGNED_IMAGE_VIEW_H_
 
 #import <UIKit/UIKit.h>
 
@@ -19,4 +19,4 @@
 - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE;
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_TAB_GRID_GRID_TOP_ALIGNED_IMAGE_VIEW_H_
+#endif  // IOS_CHROME_BROWSER_UI_ELEMENTS_TOP_ALIGNED_IMAGE_VIEW_H_
diff --git a/ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.mm b/ios/chrome/browser/ui/elements/top_aligned_image_view.mm
similarity index 95%
rename from ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.mm
rename to ios/chrome/browser/ui/elements/top_aligned_image_view.mm
index 8f1b919..1ccd833 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.mm
+++ b/ios/chrome/browser/ui/elements/top_aligned_image_view.mm
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.h"
+#import "ios/chrome/browser/ui/elements/top_aligned_image_view.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn b/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn
index 07c1758..198c8ff 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_grid/grid/BUILD.gn
@@ -21,8 +21,6 @@
     "grid_theme.h",
     "grid_view_controller.h",
     "grid_view_controller.mm",
-    "top_aligned_image_view.h",
-    "top_aligned_image_view.mm",
   ]
 
   configs += [ "//build/config/compiler:enable_arc" ]
@@ -32,6 +30,7 @@
     "//base",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
+    "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/tab_grid/transitions",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/common/ui_util",
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
index 5c914f7..f74c8f6 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
@@ -5,8 +5,8 @@
 #import "ios/chrome/browser/ui/tab_grid/grid/grid_cell.h"
 
 #include "base/logging.h"
+#import "ios/chrome/browser/ui/elements/top_aligned_image_view.h"
 #import "ios/chrome/browser/ui/tab_grid/grid/grid_constants.h"
-#import "ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #include "ios/chrome/grit/ios_strings.h"
 #include "ui/base/l10n/l10n_util.h"
diff --git a/ios/showcase/tab_grid/BUILD.gn b/ios/showcase/tab_grid/BUILD.gn
index cae774f..368ff451 100644
--- a/ios/showcase/tab_grid/BUILD.gn
+++ b/ios/showcase/tab_grid/BUILD.gn
@@ -17,6 +17,7 @@
   ]
   deps = [
     "//base",
+    "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/tab_grid:tab_grid_ui",
     "//ios/chrome/browser/ui/tab_grid/grid:grid_ui",
     "//ios/showcase/common",
diff --git a/ios/showcase/tab_grid/sc_image_view_controller.mm b/ios/showcase/tab_grid/sc_image_view_controller.mm
index 42bc16ad..67fa7761 100644
--- a/ios/showcase/tab_grid/sc_image_view_controller.mm
+++ b/ios/showcase/tab_grid/sc_image_view_controller.mm
@@ -4,7 +4,7 @@
 
 #import "ios/showcase/tab_grid/sc_image_view_controller.h"
 
-#import "ios/chrome/browser/ui/tab_grid/grid/top_aligned_image_view.h"
+#import "ios/chrome/browser/ui/elements/top_aligned_image_view.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/web_view/internal/sync/cwv_sync_controller_unittest.mm b/ios/web_view/internal/sync/cwv_sync_controller_unittest.mm
index d3936e4d..cd09325 100644
--- a/ios/web_view/internal/sync/cwv_sync_controller_unittest.mm
+++ b/ios/web_view/internal/sync/cwv_sync_controller_unittest.mm
@@ -14,6 +14,7 @@
 #include "components/browser_sync/profile_sync_service_mock.h"
 #include "components/signin/core/browser/account_tracker_service.h"
 #include "components/signin/core/browser/device_id_helper.h"
+#include "components/signin/core/browser/fake_account_fetcher_service.h"
 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
 #include "components/signin/core/browser/fake_signin_manager.h"
 #include "components/signin/core/browser/signin_error_controller.h"
@@ -99,6 +100,7 @@
                         &account_tracker_service_,
                         &gaia_cookie_manager_service_),
         identity_test_env_(&account_tracker_service_,
+                           &account_fetcher_service_,
                            &token_service_,
                            &signin_manager_,
                            &gaia_cookie_manager_service_),
@@ -118,6 +120,9 @@
 
     account_tracker_service_.Initialize(browser_state_.GetPrefs(),
                                         base::FilePath());
+    account_fetcher_service_.Initialize(&signin_client_, &token_service_,
+                                        &account_tracker_service_,
+                                        std::make_unique<TestImageDecoder>());
     signin_manager_.Initialize(
         ApplicationContext::GetInstance()->GetLocalState());
 
@@ -133,6 +138,8 @@
 
   ~CWVSyncControllerTest() override {
     EXPECT_CALL(*profile_sync_service_, RemoveObserver(_));
+    account_fetcher_service_.Shutdown();
+    account_tracker_service_.Shutdown();
   }
 
   void AddObserver(syncer::SyncServiceObserver* observer) {
@@ -149,6 +156,7 @@
   web::TestWebState web_state_;
   std::unique_ptr<browser_sync::ProfileSyncServiceMock> profile_sync_service_;
   AccountTrackerService account_tracker_service_;
+  FakeAccountFetcherService account_fetcher_service_;
   TestSigninClient signin_client_;
 
   // Weak, owned by the token service.
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
index 9d7842d..b58943f 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
@@ -104,24 +104,6 @@
   return is_sky_lake_or_later;
 }
 
-// Decides if the current platform and |profile| may decode using the client's
-// PictureBuffers, or engage the Vpp to adapt VaApi's and the client's format.
-bool ShouldDecodeOnclientPictureBuffers(
-    VideoDecodeAccelerator::Config::OutputMode output_mode,
-    VideoCodecProfile profile) {
-  return output_mode == VideoDecodeAccelerator::Config::OutputMode::ALLOCATE &&
-         (IsKabyLakeOrLater() || IsGeminiLakeOrLater()) &&
-         profile == VP9PROFILE_PROFILE0;
-}
-
-// Decides if the current platform and |output_mode| may used a reduced number
-// of buffer allocations. See https://crbug.com/920510 for more information.
-bool ShouldUseReducedNumberOfAllocations(
-    VideoDecodeAccelerator::Config::OutputMode output_mode) {
-  return output_mode == VideoDecodeAccelerator::Config::OutputMode::ALLOCATE &&
-         IsSkyLakeOrLater();
-}
-
 }  // namespace
 
 #define RETURN_AND_NOTIFY_ON_FAILURE(result, log, error_code, ret) \
@@ -188,9 +170,8 @@
     : state_(kUninitialized),
       input_ready_(&lock_),
       vaapi_picture_factory_(new VaapiPictureFactory()),
+      buffer_allocation_mode_(BufferAllocationMode::kNormal),
       surfaces_available_(&lock_),
-      decode_using_client_picture_buffers_(false),
-      use_reduced_number_of_allocations_(false),
       task_runner_(base::ThreadTaskRunnerHandle::Get()),
       decoder_thread_("VaapiDecoderThread"),
       finish_flush_pending_(false),
@@ -267,11 +248,7 @@
   state_ = kIdle;
   profile_ = profile;
   output_mode_ = config.output_mode;
-  decode_using_client_picture_buffers_ =
-      ShouldDecodeOnclientPictureBuffers(output_mode_, profile_);
-  use_reduced_number_of_allocations_ =
-      !decode_using_client_picture_buffers_ &&
-      ShouldUseReducedNumberOfAllocations(output_mode_);
+  buffer_allocation_mode_ = DecideBufferAllocationMode();
   previously_requested_num_reference_frames_ = 0;
   return true;
 }
@@ -289,7 +266,7 @@
   {
     base::AutoLock auto_lock(lock_);
     int32_t picture_buffer_id = available_picture_buffers_.front();
-    if (decode_using_client_picture_buffers_) {
+    if (buffer_allocation_mode_ == BufferAllocationMode::kNone) {
       // Find the |pictures_| entry matching |va_surface_id|.
       for (const auto& id_and_picture : pictures_) {
         if (id_and_picture.second->va_surface_id() == va_surface_id) {
@@ -309,7 +286,7 @@
   DVLOGF(4) << "Outputting VASurface " << va_surface->id()
             << " into pixmap bound to picture buffer id " << output_id;
 
-  if (!decode_using_client_picture_buffers_) {
+  if (buffer_allocation_mode_ != BufferAllocationMode::kNone) {
     TRACE_EVENT2("media,gpu", "VAVDA::DownloadFromSurface", "input_id",
                  input_id, "output_id", output_id);
     RETURN_AND_NOTIFY_ON_FAILURE(picture->DownloadFromSurface(va_surface),
@@ -557,9 +534,9 @@
 
   requested_pic_size_ = size;
 
-  // If we can |use_reduced_number_of_allocations_|, split the requested
-  // |num_pics| between VA reference frames and client PictureBuffers proper.
-  if (use_reduced_number_of_allocations_)
+  // If we are in BufferAllocationMode::kNone, split the requested |num_pics|
+  // between VA reference frames and client PictureBuffers proper.
+  if (buffer_allocation_mode_ == BufferAllocationMode::kReduced)
     requested_num_reference_frames_ = num_reference_frames;
   else
     requested_num_reference_frames_ = 0;
@@ -581,7 +558,7 @@
 
   base::AutoLock auto_lock(lock_);
   const size_t expected_max_available_va_surfaces =
-      use_reduced_number_of_allocations_
+      buffer_allocation_mode_ == BufferAllocationMode::kReduced
           ? previously_requested_num_reference_frames_
           : pictures_.size();
 
@@ -671,10 +648,11 @@
   const unsigned int va_format = GetVaFormatForVideoCodecProfile(profile_);
   std::vector<VASurfaceID> va_surface_ids;
 
-  // If we can't |decode_using_client_picture_buffers_|, we have to allocate a
+  // If we aren't in BufferAllocationMode::kNone, we have to allocate a
   // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
   // internal decoded frame.
-  if (!decode_using_client_picture_buffers_ && !vpp_vaapi_wrapper_) {
+  if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
+      !vpp_vaapi_wrapper_) {
     vpp_vaapi_wrapper_ = VaapiWrapper::Create(
         VaapiWrapper::kVideoProcess, VAProfileNone,
         base::BindRepeating(&ReportToUMA, VAAPI_VPP_ERROR));
@@ -687,12 +665,13 @@
   for (size_t i = 0; i < buffers.size(); ++i) {
     DCHECK(requested_pic_size_ == buffers[i].size());
 
-    // If |decode_using_client_picture_buffers_| is false, this |picture| is
+    // If we aren't in BufferAllocationMode::kNone, this |picture| is
     // only used as a copy destination. Therefore, the VaapiWrapper used and
     // owned by |picture| is |vpp_vaapi_wrapper_|.
     std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
-        decode_using_client_picture_buffers_ ? vaapi_wrapper_
-                                             : vpp_vaapi_wrapper_,
+        (buffer_allocation_mode_ == BufferAllocationMode::kNone)
+            ? vaapi_wrapper_
+            : vpp_vaapi_wrapper_,
         make_context_current_cb_, bind_image_cb_, buffers[i]);
     RETURN_AND_NOTIFY_ON_FAILURE(picture, "Failed creating a VaapiPicture",
                                  PLATFORM_FAILURE, );
@@ -714,18 +693,19 @@
     surfaces_available_.Signal();
   }
 
-  // If |decode_using_client_picture_buffers_|, we use |va_surface_ids| for
+  // If we aren't in BufferAllocationMode::kNone, we use |va_surface_ids| for
   // decode, otherwise ask |vaapi_wrapper_| to allocate them for us.
-  if (decode_using_client_picture_buffers_) {
+  if (buffer_allocation_mode_ == BufferAllocationMode::kNone) {
     DCHECK(!va_surface_ids.empty());
     RETURN_AND_NOTIFY_ON_FAILURE(
         vaapi_wrapper_->CreateContext(va_format, requested_pic_size_),
         "Failed creating VA Context", PLATFORM_FAILURE, );
     DCHECK_EQ(va_surface_ids.size(), buffers.size());
   } else {
-    const size_t requested_num_surfaces = use_reduced_number_of_allocations_
-                                              ? requested_num_reference_frames_
-                                              : pictures_.size();
+    const size_t requested_num_surfaces =
+        buffer_allocation_mode_ == BufferAllocationMode::kReduced
+            ? requested_num_reference_frames_
+            : pictures_.size();
     CHECK_NE(requested_num_surfaces, 0u);
     va_surface_ids.clear();
     RETURN_AND_NOTIFY_ON_FAILURE(vaapi_wrapper_->CreateContextAndSurfaces(
@@ -1042,16 +1022,16 @@
     return nullptr;
 
   DCHECK(!awaiting_va_surfaces_recycle_);
-  if (!decode_using_client_picture_buffers_) {
+  if (buffer_allocation_mode_ != BufferAllocationMode::kNone) {
     const VASurfaceID id = available_va_surfaces_.front();
     available_va_surfaces_.pop_front();
 
-    TRACE_COUNTER_ID2(
-        "media,gpu", "Vaapi VASurfaceIDs", this, "used",
-        (use_reduced_number_of_allocations_ ? requested_num_reference_frames_
-                                            : pictures_.size()) -
-            available_va_surfaces_.size(),
-        "available", available_va_surfaces_.size());
+    TRACE_COUNTER_ID2("media,gpu", "Vaapi VASurfaceIDs", this, "used",
+                      (buffer_allocation_mode_ == BufferAllocationMode::kReduced
+                           ? requested_num_reference_frames_
+                           : pictures_.size()) -
+                          available_va_surfaces_.size(),
+                      "available", available_va_surfaces_.size());
 
     return new VASurface(id, requested_pic_size_,
                          vaapi_wrapper_->va_surface_format(),
@@ -1085,11 +1065,12 @@
   {
     base::AutoLock auto_lock(lock_);
     available_va_surfaces_.push_back(va_surface_id);
-    if (!decode_using_client_picture_buffers_) {
+    if (buffer_allocation_mode_ != BufferAllocationMode::kNone) {
       TRACE_COUNTER_ID2(
           "media,gpu", "Vaapi VASurfaceIDs", this, "used",
-          (use_reduced_number_of_allocations_ ? requested_num_reference_frames_
-                                              : pictures_.size()) -
+          (buffer_allocation_mode_ == BufferAllocationMode::kReduced
+               ? requested_num_reference_frames_
+               : pictures_.size()) -
               available_va_surfaces_.size(),
           "available", available_va_surfaces_.size());
     }
@@ -1098,13 +1079,52 @@
 
   TryOutputPicture();
 }
+
+// static
+VideoDecodeAccelerator::SupportedProfiles
+VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
+  return VaapiWrapper::GetSupportedDecodeProfiles();
+}
+
+VaapiVideoDecodeAccelerator::BufferAllocationMode
+VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
+  // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
+  // |output_mode_| as well.
+  if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
+    return BufferAllocationMode::kNormal;
+
+  // On KabyLake, GeminiLake and later we can pass to libva the client's
+  // PictureBuffers to decode onto, which skips the use of the Vpp unit and its
+  // associated format reconciliation copy, avoiding all internal buffer
+  // allocations.
+  // TODO(crbug.com/822346,crbug.com/910986): Enable other codecs/platforms.
+  if ((IsKabyLakeOrLater() || IsGeminiLakeOrLater()) &&
+      profile_ == VP9PROFILE_PROFILE0) {
+    return BufferAllocationMode::kNone;
+  }
+
+  // If we're here, we have to use the Vpp unit and allocate buffers for
+  // |decoder_|; usually we'd have to allocate the |decoder_|s
+  // GetRequiredNumOfPictures() internally, but on SkyLake and later, we can
+  // allocate just |decoder_|s GetNumReferenceFrames(). Moreover, we also
+  // request the |client_| to allocate less than the usual |decoder_|s
+  // GetRequiredNumOfPictures().
+  // TODO(crbug.com/912295): enable for previous architectures.
+  if (IsSkyLakeOrLater())
+    return BufferAllocationMode::kReduced;
+
+  return BufferAllocationMode::kNormal;
+}
+
 bool VaapiVideoDecodeAccelerator::OnMemoryDump(
     const base::trace_event::MemoryDumpArgs& args,
     base::trace_event::ProcessMemoryDump* pmd) {
   using base::trace_event::MemoryAllocatorDump;
   base::AutoLock auto_lock(lock_);
-  if (decode_using_client_picture_buffers_ || !requested_num_reference_frames_)
+  if (buffer_allocation_mode_ == BufferAllocationMode::kNone ||
+      !requested_num_reference_frames_) {
     return false;
+  }
 
   auto dump_name = base::StringPrintf("gpu/vaapi/decoder/0x%" PRIxPTR,
                                       reinterpret_cast<uintptr_t>(this));
@@ -1121,9 +1141,10 @@
   // Report |requested_num_surfaces| and the associated memory size. The
   // calculated size is an estimation since we don't know the internal VA
   // strides, texture compression, headers, etc, but is a good lower boundary.
-  const size_t requested_num_surfaces = use_reduced_number_of_allocations_
-                                            ? requested_num_reference_frames_
-                                            : pictures_.size();
+  const size_t requested_num_surfaces =
+      buffer_allocation_mode_ == BufferAllocationMode::kReduced
+          ? requested_num_reference_frames_
+          : pictures_.size();
   dump->AddScalar(MemoryAllocatorDump::kNameSize,
                   MemoryAllocatorDump::kUnitsBytes,
                   static_cast<uint64_t>(requested_num_surfaces *
@@ -1136,10 +1157,4 @@
   return true;
 }
 
-// static
-VideoDecodeAccelerator::SupportedProfiles
-VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
-  return VaapiWrapper::GetSupportedDecodeProfiles();
-}
-
 }  // namespace media
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.h b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
index 10c9da0..22d0c29 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
@@ -188,6 +188,22 @@
   // Check if the surfaces have been released or post ourselves for later.
   void TryFinishSurfaceSetChange();
 
+  // Different modes of internal buffer allocations.
+  enum class BufferAllocationMode {
+    // Only using |client_|s provided PictureBuffers, none internal.
+    kNone,
+    // Using a reduced amount of |client_|s provided PictureBuffers and
+    // |decoder_|s GetNumReferenceFrames() internallly.
+    kReduced,
+    // Using |client_|s provided PictureBuffers and as many internally
+    // allocated.
+    kNormal,
+  };
+
+  // Decides the concrete buffer allocation mode, depending on the hardware
+  // platform and other parameters.
+  BufferAllocationMode DecideBufferAllocationMode();
+
   // VAVDA state.
   enum State {
     // Initialize() not called yet or failed.
@@ -224,6 +240,9 @@
   // Only used on |decoder_thread_task_runner_|.
   std::unique_ptr<AcceleratedVideoDecoder> decoder_;
 
+  // Filled in during Initialize().
+  BufferAllocationMode buffer_allocation_mode_;
+
   // VaapiWrapper for VPP (Video Post Processing). This is used for copying
   // from a decoded surface to a surface bound to client's PictureBuffer.
   scoped_refptr<VaapiWrapper> vpp_vaapi_wrapper_;
@@ -255,14 +274,6 @@
   // Only used on |task_runner_|.
   base::queue<base::OnceClosure> pending_output_cbs_;
 
-  // TODO(crbug.com/912295): Enable these two for IMPORT |output_mode_| as well.
-  // Under some circumstances, we can pass to libva our own VASurfaceIDs to
-  // decode onto, which skips one copy. see https://crbug.com/822346.
-  bool decode_using_client_picture_buffers_;
-  // When |decode_using_client_picture_buffers_| is false and under certain
-  // conditions, we can reduce the number of necessary allocated buffers.
-  bool use_reduced_number_of_allocations_;
-
   // WeakPtr<> pointing to |this| for use in posting tasks from the decoder
   // thread back to the ChildThread.  Because the decoder thread is a member of
   // this class, any task running on the decoder thread is guaranteed that this
@@ -300,7 +311,7 @@
   size_t requested_num_pics_;
   gfx::Size requested_pic_size_;
   // Max number of reference frames needed by |decoder_|. Only used on
-  // |task_runner_| and when |use_reduced_number_of_allocations_| is true.
+  // |task_runner_| and when in BufferAllocationMode::kNone.
   size_t requested_num_reference_frames_;
   size_t previously_requested_num_reference_frames_;
 
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
index 01ce444..9091772 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
@@ -168,12 +168,10 @@
     // TODO(crbug.com/917999): add IMPORT mode to test variations.
     vda_.output_mode_ = VideoDecodeAccelerator::Config::OutputMode::ALLOCATE;
 
-    vda_.decode_using_client_picture_buffers_ =
-        GetParam().decode_using_client_picture_buffers;
-    vda_.use_reduced_number_of_allocations_ =
-        !vda_.decode_using_client_picture_buffers_ &&
-        vda_.output_mode_ ==
-            VideoDecodeAccelerator::Config::OutputMode::ALLOCATE;
+    vda_.buffer_allocation_mode_ =
+        GetParam().decode_using_client_picture_buffers
+            ? VaapiVideoDecodeAccelerator::BufferAllocationMode::kNone
+            : VaapiVideoDecodeAccelerator::BufferAllocationMode::kReduced;
 
     vda_.state_ = VaapiVideoDecodeAccelerator::kIdle;
   }
@@ -239,7 +237,8 @@
     }
 
     const size_t expected_num_picture_buffers_requested =
-        vda_.use_reduced_number_of_allocations_
+        vda_.buffer_allocation_mode_ ==
+                VaapiVideoDecodeAccelerator::BufferAllocationMode::kReduced
             ? num_pictures - kNumReferenceFrames
             : num_pictures;
 
diff --git a/media/gpu/vt_video_decode_accelerator_mac.cc b/media/gpu/vt_video_decode_accelerator_mac.cc
index e09762f..3ae5854 100644
--- a/media/gpu/vt_video_decode_accelerator_mac.cc
+++ b/media/gpu/vt_video_decode_accelerator_mac.cc
@@ -319,7 +319,7 @@
 
   // The named transfer function.
   gfx::ColorSpace::TransferID transfer_id = gfx::ColorSpace::TransferID::BT709;
-  SkColorSpaceTransferFn custom_tr_fn = {2.2f, 1, 0, 1, 0, 0, 0};
+  skcms_TransferFunction custom_tr_fn = {2.2f, 1, 0, 1, 0, 0, 0};
   struct {
     const CFStringRef cfstr;
     gfx::ColorSpace::TransferID id;
@@ -354,7 +354,7 @@
       CGFloat gamma_float = 0;
       if (CFNumberGetValue(gamma_number, kCFNumberCGFloatType, &gamma_float)) {
         transfer_id = gfx::ColorSpace::TransferID::CUSTOM;
-        custom_tr_fn.fG = gamma_float;
+        custom_tr_fn.g = gamma_float;
       } else {
         DLOG(ERROR) << "Filed to get CVImageBufferRef gamma level as float.";
       }
diff --git a/mojo/public/cpp/system/simple_watcher.cc b/mojo/public/cpp/system/simple_watcher.cc
index c692de3..23b552f 100644
--- a/mojo/public/cpp/system/simple_watcher.cc
+++ b/mojo/public/cpp/system/simple_watcher.cc
@@ -11,6 +11,7 @@
 #include "base/synchronization/lock.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/heap_profiler.h"
+#include "base/trace_event/trace_event.h"
 #include "mojo/public/c/system/trap.h"
 
 namespace mojo {
@@ -283,6 +284,10 @@
   // NOTE: It's legal for |callback| to delete |this|.
   if (!callback.is_null()) {
     TRACE_HEAP_PROFILER_API_SCOPED_TASK_EXECUTION event(heap_profiler_tag_);
+    // Lot of janks caused are grouped to OnHandleReady tasks. This trace event helps identify the
+    // cause of janks. It is ok to pass |heap_profiler_tag_| here since it is a string literal.
+    // TODO(927206): Consider renaming |heap_profiler_tag_|.
+    TRACE_EVENT0("toplevel", heap_profiler_tag_);
 
     base::WeakPtr<SimpleWatcher> weak_self = weak_factory_.GetWeakPtr();
     callback.Run(result, state);
diff --git a/net/base/lookup_string_in_fixed_set_unittest.cc b/net/base/lookup_string_in_fixed_set_unittest.cc
index 612f6406..e61510f 100644
--- a/net/base/lookup_string_in_fixed_set_unittest.cc
+++ b/net/base/lookup_string_in_fixed_set_unittest.cc
@@ -105,9 +105,9 @@
   return language;
 }
 
-INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
-                        Dafsa1Test,
-                        ::testing::ValuesIn(kBasicTestCases));
+INSTANTIATE_TEST_SUITE_P(LookupStringInFixedSetTest,
+                         Dafsa1Test,
+                         ::testing::ValuesIn(kBasicTestCases));
 
 class Dafsa3Test : public LookupStringInFixedSetTest {};
 
@@ -132,9 +132,9 @@
      -1},
 };
 
-INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
-                        Dafsa3Test,
-                        ::testing::ValuesIn(kTwoByteOffsetTestCases));
+INSTANTIATE_TEST_SUITE_P(LookupStringInFixedSetTest,
+                         Dafsa3Test,
+                         ::testing::ValuesIn(kTwoByteOffsetTestCases));
 
 class Dafsa4Test : public LookupStringInFixedSetTest {};
 
@@ -165,9 +165,9 @@
      -1},
 };
 
-INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
-                        Dafsa4Test,
-                        ::testing::ValuesIn(kThreeByteOffsetTestCases));
+INSTANTIATE_TEST_SUITE_P(LookupStringInFixedSetTest,
+                         Dafsa4Test,
+                         ::testing::ValuesIn(kThreeByteOffsetTestCases));
 
 class Dafsa5Test : public LookupStringInFixedSetTest {};
 
@@ -184,9 +184,9 @@
     {"aaa", -1}, {"bbb", -1}, {"aaaam", 0}, {"bbbbn", 0},
 };
 
-INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
-                        Dafsa5Test,
-                        ::testing::ValuesIn(kJoinedPrefixesTestCases));
+INSTANTIATE_TEST_SUITE_P(LookupStringInFixedSetTest,
+                         Dafsa5Test,
+                         ::testing::ValuesIn(kJoinedPrefixesTestCases));
 
 class Dafsa6Test : public LookupStringInFixedSetTest {};
 
@@ -203,9 +203,9 @@
     {"aaa", -1}, {"bbb", -1}, {"maaaa", 0}, {"nbbbb", 0},
 };
 
-INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
-                        Dafsa6Test,
-                        ::testing::ValuesIn(kJoinedSuffixesTestCases));
+INSTANTIATE_TEST_SUITE_P(LookupStringInFixedSetTest,
+                         Dafsa6Test,
+                         ::testing::ValuesIn(kJoinedSuffixesTestCases));
 
 // Validates that the generated DAFSA contains exactly the same information as
 // effective_tld_names_unittest1.gperf.
diff --git a/net/base/priority_queue_unittest.cc b/net/base/priority_queue_unittest.cc
index 48bce7a2..ab9726fc 100644
--- a/net/base/priority_queue_unittest.cc
+++ b/net/base/priority_queue_unittest.cc
@@ -239,9 +239,9 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(PriorityQueues,
-                        PriorityQueueTest,
-                        testing::Range(static_cast<size_t>(0), kNumQueues));
+INSTANTIATE_TEST_SUITE_P(PriorityQueues,
+                         PriorityQueueTest,
+                         testing::Range(static_cast<size_t>(0), kNumQueues));
 
 }  // namespace
 
diff --git a/net/base/upload_file_element_reader_unittest.cc b/net/base/upload_file_element_reader_unittest.cc
index 996a9f1d7..c4473380 100644
--- a/net/base/upload_file_element_reader_unittest.cc
+++ b/net/base/upload_file_element_reader_unittest.cc
@@ -327,8 +327,8 @@
   EXPECT_THAT(init_callback.WaitForResult(), IsError(ERR_FILE_NOT_FOUND));
 }
 
-INSTANTIATE_TEST_CASE_P(,
-                        UploadFileElementReaderTest,
-                        testing::ValuesIn({false, true}));
+INSTANTIATE_TEST_SUITE_P(,
+                         UploadFileElementReaderTest,
+                         testing::ValuesIn({false, true}));
 
 }  // namespace net
diff --git a/net/base/url_util_unittest.cc b/net/base/url_util_unittest.cc
index bd8125fd..2aa0f184 100644
--- a/net/base/url_util_unittest.cc
+++ b/net/base/url_util_unittest.cc
@@ -383,8 +383,9 @@
   EXPECT_EQ(test_data.is_unique, IsUnique(test_data.hostname));
 }
 
-INSTANTIATE_TEST_CASE_P(, UrlUtilNonUniqueNameTest,
-                        testing::ValuesIn(kNonUniqueNameTestData));
+INSTANTIATE_TEST_SUITE_P(,
+                         UrlUtilNonUniqueNameTest,
+                         testing::ValuesIn(kNonUniqueNameTestData));
 
 TEST(UrlUtilTest, IsLocalhost) {
   EXPECT_TRUE(HostStringIsLocalhost("localhost"));
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 40ec06b..521d4ed5 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -701,6 +701,7 @@
                  NULL,
                  NULL,
                  NULL,
+                 NULL,
                  "",
                  NULL,
                  NULL,
@@ -14257,6 +14258,7 @@
       session_deps_.transport_security_state.get(),
       session_deps_.cert_transparency_verifier.get(),
       session_deps_.ct_policy_enforcer.get(),
+      nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_cache_shard */,
       session_deps_.ssl_config_service.get(),
       nullptr /* socket_performance_watcher_factory */,
diff --git a/net/http/http_proxy_client_socket_pool_unittest.cc b/net/http/http_proxy_client_socket_pool_unittest.cc
index 20372b6..31b97cb 100644
--- a/net/http/http_proxy_client_socket_pool_unittest.cc
+++ b/net/http/http_proxy_client_socket_pool_unittest.cc
@@ -81,6 +81,7 @@
                                session_deps_.transport_security_state.get(),
                                session_deps_.cert_transparency_verifier.get(),
                                session_deps_.ct_policy_enforcer.get(),
+                               nullptr /* ssl_client_session_cache */,
                                std::string() /* ssl_session_cache_shard */,
                                session_deps_.ssl_config_service.get(),
                                nullptr /* socket_performance_watcher_factory */,
@@ -281,9 +282,9 @@
 
 // All tests are run with three different proxy types: HTTP, HTTPS (non-SPDY)
 // and SPDY.
-INSTANTIATE_TEST_CASE_P(HttpProxyType,
-                        HttpProxyClientSocketPoolTest,
-                        ::testing::Values(HTTP, HTTPS, SPDY));
+INSTANTIATE_TEST_SUITE_P(HttpProxyType,
+                         HttpProxyClientSocketPoolTest,
+                         ::testing::Values(HTTP, HTTPS, SPDY));
 
 TEST_P(HttpProxyClientSocketPoolTest, NoTunnel) {
   TestProxyDelegate proxy_delegate;
diff --git a/net/http/http_proxy_client_socket_wrapper_unittest.cc b/net/http/http_proxy_client_socket_wrapper_unittest.cc
index 153491a..cb09248 100644
--- a/net/http/http_proxy_client_socket_wrapper_unittest.cc
+++ b/net/http/http_proxy_client_socket_wrapper_unittest.cc
@@ -371,7 +371,7 @@
 }
 #endif
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     VersionIncludeStreamDependencySequence,
     HttpProxyClientSocketWrapperTest,
     ::testing::Combine(
diff --git a/net/http/http_response_headers_unittest.cc b/net/http/http_response_headers_unittest.cc
index 19d09278..d70fb4d 100644
--- a/net/http/http_response_headers_unittest.cc
+++ b/net/http/http_response_headers_unittest.cc
@@ -303,9 +303,9 @@
      HttpVersion(1, 1), 200, "OK"},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        CommonHttpResponseHeadersTest,
-                        testing::ValuesIn(response_headers_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         CommonHttpResponseHeadersTest,
+                         testing::ValuesIn(response_headers_tests));
 
 struct PersistData {
   HttpResponseHeaders::PersistOptions options;
@@ -495,9 +495,9 @@
      "Bar: 1\n"},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        PersistenceTest,
-                        testing::ValuesIn(persistence_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         PersistenceTest,
+                         testing::ValuesIn(persistence_tests));
 
 TEST(HttpResponseHeadersTest, EnumerateHeader_Coalesced) {
   // Ensure that commas in quoted strings are not regarded as value separators.
@@ -824,9 +824,9 @@
 };
 // clang-format on
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        ContentTypeTest,
-                        testing::ValuesIn(mimetype_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         ContentTypeTest,
+                         testing::ValuesIn(mimetype_tests));
 
 struct RequiresValidationTestData {
   const char* headers;
@@ -1022,9 +1022,9 @@
     // TODO(darin): Add many many more tests here.
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        RequiresValidationTest,
-                        testing::ValuesIn(requires_validation_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         RequiresValidationTest,
+                         testing::ValuesIn(requires_validation_tests));
 
 struct UpdateTestData {
   const char* orig_headers;
@@ -1159,9 +1159,9 @@
      "Content-Location: /example_page.html\n"},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        UpdateTest,
-                        testing::ValuesIn(update_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         UpdateTest,
+                         testing::ValuesIn(update_tests));
 
 struct EnumerateHeaderTestData {
   const char* headers;
@@ -1217,9 +1217,9 @@
      "Foo: ,, 1,, 2, 3,,\n"},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        EnumerateHeaderLinesTest,
-                        testing::ValuesIn(enumerate_header_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         EnumerateHeaderLinesTest,
+                         testing::ValuesIn(enumerate_header_tests));
 
 struct IsRedirectTestData {
   const char* headers;
@@ -1304,9 +1304,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        IsRedirectTest,
-                        testing::ValuesIn(is_redirect_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         IsRedirectTest,
+                         testing::ValuesIn(is_redirect_tests));
 
 struct ContentLengthTestData {
   const char* headers;
@@ -1381,9 +1381,9 @@
      -1},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        GetContentLengthTest,
-                        testing::ValuesIn(content_length_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         GetContentLengthTest,
+                         testing::ValuesIn(content_length_tests));
 
 struct ContentRangeTestData {
   const char* headers;
@@ -1435,9 +1435,9 @@
      false, -1, -1, -1},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        ContentRangeTest,
-                        testing::ValuesIn(content_range_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         ContentRangeTest,
+                         testing::ValuesIn(content_range_tests));
 
 struct KeepAliveTestData {
   const char* headers;
@@ -1603,9 +1603,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        IsKeepAliveTest,
-                        testing::ValuesIn(keepalive_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         IsKeepAliveTest,
+                         testing::ValuesIn(keepalive_tests));
 
 struct HasStrongValidatorsTestData {
   const char* headers;
@@ -1673,9 +1673,9 @@
   }
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        HasStrongValidatorsTest,
-                        testing::ValuesIn(strong_validators_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         HasStrongValidatorsTest,
+                         testing::ValuesIn(strong_validators_tests));
 
 TEST(HttpResponseHeadersTest, HasValidatorsNone) {
   std::string headers("HTTP/1.1 200 OK");
@@ -1819,9 +1819,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        AddHeaderTest,
-                        testing::ValuesIn(add_header_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         AddHeaderTest,
+                         testing::ValuesIn(add_header_tests));
 
 struct RemoveHeaderTestData {
   const char* orig_headers;
@@ -1873,9 +1873,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        RemoveHeaderTest,
-                        testing::ValuesIn(remove_header_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         RemoveHeaderTest,
+                         testing::ValuesIn(remove_header_tests));
 
 struct RemoveHeadersTestData {
   const char* orig_headers;
@@ -1935,9 +1935,9 @@
      "connection: keep-alive\n"},
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        RemoveHeadersTest,
-                        testing::ValuesIn(remove_headers_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         RemoveHeadersTest,
+                         testing::ValuesIn(remove_headers_tests));
 
 struct RemoveIndividualHeaderTestData {
   const char* orig_headers;
@@ -2038,9 +2038,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        RemoveIndividualHeaderTest,
-                        testing::ValuesIn(remove_individual_header_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         RemoveIndividualHeaderTest,
+                         testing::ValuesIn(remove_individual_header_tests));
 
 struct ReplaceStatusTestData {
   const char* orig_headers;
@@ -2102,9 +2102,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        ReplaceStatusTest,
-                        testing::ValuesIn(replace_status_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         ReplaceStatusTest,
+                         testing::ValuesIn(replace_status_tests));
 
 struct UpdateWithNewRangeTestData {
   const char* orig_headers;
@@ -2163,9 +2163,9 @@
   },
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        UpdateWithNewRangeTest,
-                        testing::ValuesIn(update_range_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         UpdateWithNewRangeTest,
+                         testing::ValuesIn(update_range_tests));
 
 TEST_F(HttpResponseHeadersCacheControlTest, AbsentMaxAgeReturnsFalse) {
   InitializeHeadersWithCacheControl("nocache");
@@ -2244,9 +2244,9 @@
      std::numeric_limits<int64_t>::max()},  // Overflow int64_t.
 };
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeadersCacheControl,
-                        MaxAgeEdgeCasesTest,
-                        testing::ValuesIn(max_age_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeadersCacheControl,
+                         MaxAgeEdgeCasesTest,
+                         testing::ValuesIn(max_age_tests));
 
 TEST_F(HttpResponseHeadersCacheControlTest,
        AbsentStaleWhileRevalidateReturnsFalse) {
@@ -2337,9 +2337,9 @@
      "Fri, 20 Jan 2011 10:40:08 GMT", "Fri, 20 Jan 2011 10:40:12 GMT",
      "Fri, 20 Jan 2011 10:40:14 GMT", 7}};
 
-INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
-                        GetCurrentAgeTest,
-                        testing::ValuesIn(get_current_age_tests));
+INSTANTIATE_TEST_SUITE_P(HttpResponseHeaders,
+                         GetCurrentAgeTest,
+                         testing::ValuesIn(get_current_age_tests));
 
 }  // namespace
 
diff --git a/net/http/http_server_properties_manager_unittest.cc b/net/http/http_server_properties_manager_unittest.cc
index b18120f..a5b2c81 100644
--- a/net/http/http_server_properties_manager_unittest.cc
+++ b/net/http/http_server_properties_manager_unittest.cc
@@ -150,9 +150,9 @@
   DISALLOW_COPY_AND_ASSIGN(HttpServerPropertiesManagerTest);
 };
 
-INSTANTIATE_TEST_CASE_P(/* no prefix */,
-                        HttpServerPropertiesManagerTest,
-                        ::testing::ValuesIn(kHttpServerPropertiesVersions));
+INSTANTIATE_TEST_SUITE_P(/* no prefix */,
+                         HttpServerPropertiesManagerTest,
+                         ::testing::ValuesIn(kHttpServerPropertiesVersions));
 
 TEST_P(HttpServerPropertiesManagerTest,
        SingleUpdateForTwoSpdyServerPrefChanges) {
diff --git a/net/http/http_stream_factory_job_controller_unittest.cc b/net/http/http_stream_factory_job_controller_unittest.cc
index 26cb63ba..82ce9a07 100644
--- a/net/http/http_stream_factory_job_controller_unittest.cc
+++ b/net/http/http_stream_factory_job_controller_unittest.cc
@@ -499,7 +499,7 @@
   HttpStreamFactory::JobFactory default_job_factory_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     /* no prefix */,
     JobControllerReconsiderProxyAfterErrorTest,
     ::testing::Combine(::testing::Bool(),
@@ -2723,7 +2723,7 @@
     : public HttpStreamFactoryJobControllerTest,
       public ::testing::WithParamInterface<::testing::tuple<bool, bool>> {};
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     /* no prefix */,
     HttpStreamFactoryJobControllerMisdirectedRequestRetry,
     ::testing::Combine(::testing::Bool(), ::testing::Bool()));
@@ -2814,7 +2814,7 @@
   HttpRequestInfo request_info_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     /* no prefix */,
     HttpStreamFactoryJobControllerPreconnectTest,
     ::testing::Bool());
diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc
index 9d4471da6..97bb46d 100644
--- a/net/http/http_stream_factory_unittest.cc
+++ b/net/http/http_stream_factory_unittest.cc
@@ -467,6 +467,7 @@
                  nullptr /* transport_security_state */,
                  nullptr /* cert_transparency_verifier */,
                  nullptr /* ct_policy_enforcer */,
+                 nullptr /* ssl_client_session_cache */,
                  std::string() /* ssl_session_cache_shard */,
                  nullptr /* ssl_config_service */,
                  nullptr /* socket_performance_watcher_factory */,
@@ -2490,7 +2491,7 @@
   HttpNetworkSession::Params params_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     VersionIncludeStreamDependencySequence,
     HttpStreamFactoryBidirectionalQuicTest,
     ::testing::Combine(
diff --git a/net/socket/client_socket_pool_manager_impl.cc b/net/socket/client_socket_pool_manager_impl.cc
index 8a7f10b..b8bb1a7 100644
--- a/net/socket/client_socket_pool_manager_impl.cc
+++ b/net/socket/client_socket_pool_manager_impl.cc
@@ -81,6 +81,7 @@
                                        transport_security_state,
                                        cert_transparency_verifier,
                                        ct_policy_enforcer,
+                                       ssl_client_session_cache,
                                        ssl_session_cache_shard_,
                                        ssl_config_service,
                                        network_quality_estimator,
@@ -96,6 +97,7 @@
                                        transport_security_state,
                                        cert_transparency_verifier,
                                        ct_policy_enforcer,
+                                       ssl_client_session_cache,
                                        ssl_session_cache_shard_,
                                        ssl_config_service,
                                        socket_performance_watcher_factory_,
@@ -217,8 +219,9 @@
               sockets_per_proxy_server, sockets_per_group, socket_factory_,
               host_resolver_, cert_verifier_, channel_id_service_,
               transport_security_state_, cert_transparency_verifier_,
-              ct_policy_enforcer_, ssl_session_cache_shard_,
-              ssl_config_service_, nullptr /* socket_performance_watcher */,
+              ct_policy_enforcer_, ssl_client_session_cache_,
+              ssl_session_cache_shard_, ssl_config_service_,
+              nullptr /* socket_performance_watcher */,
               network_quality_estimator_, net_log_)));
 
   return ret.first->second.get();
@@ -257,9 +260,10 @@
               sockets_per_proxy_server, sockets_per_group, socket_factory_,
               host_resolver_, cert_verifier_, channel_id_service_,
               transport_security_state_, cert_transparency_verifier_,
-              ct_policy_enforcer_, ssl_session_cache_shard_,
-              ssl_config_service_, socket_performance_watcher_factory_,
-              network_quality_estimator_, net_log_)));
+              ct_policy_enforcer_, ssl_client_session_cache_,
+              ssl_session_cache_shard_, ssl_config_service_,
+              socket_performance_watcher_factory_, network_quality_estimator_,
+              net_log_)));
   DCHECK(tcp_http_ret.second);
 
   std::pair<TransportSocketPoolMap::iterator, bool> tcp_https_ret =
@@ -269,9 +273,10 @@
               sockets_per_proxy_server, sockets_per_group, socket_factory_,
               host_resolver_, cert_verifier_, channel_id_service_,
               transport_security_state_, cert_transparency_verifier_,
-              ct_policy_enforcer_, ssl_session_cache_shard_,
-              ssl_config_service_, socket_performance_watcher_factory_,
-              network_quality_estimator_, net_log_)));
+              ct_policy_enforcer_, ssl_client_session_cache_,
+              ssl_session_cache_shard_, ssl_config_service_,
+              socket_performance_watcher_factory_, network_quality_estimator_,
+              net_log_)));
   DCHECK(tcp_https_ret.second);
 
   std::pair<SSLSocketPoolMap::iterator, bool> ssl_https_ret =
diff --git a/net/socket/socket_bio_adapter_unittest.cc b/net/socket/socket_bio_adapter_unittest.cc
index 983054a..2a20df9d 100644
--- a/net/socket/socket_bio_adapter_unittest.cc
+++ b/net/socket/socket_bio_adapter_unittest.cc
@@ -164,11 +164,11 @@
   base::test::ScopedFeatureList scoped_feature_list_;
 };
 
-INSTANTIATE_TEST_CASE_P(/* no prefix */,
-                        SocketBIOAdapterTest,
-                        testing::Values(READ_IF_READY_ENABLED_SUPPORTED,
-                                        READ_IF_READY_ENABLED_NOT_SUPPORTED,
-                                        READ_IF_READY_DISABLED));
+INSTANTIATE_TEST_SUITE_P(/* no prefix */,
+                         SocketBIOAdapterTest,
+                         testing::Values(READ_IF_READY_ENABLED_SUPPORTED,
+                                         READ_IF_READY_ENABLED_NOT_SUPPORTED,
+                                         READ_IF_READY_DISABLED));
 
 // Test that data can be read synchronously.
 TEST_P(SocketBIOAdapterTest, ReadSync) {
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc
index 1c7e378d..f8722109 100644
--- a/net/socket/socket_test_util.cc
+++ b/net/socket/socket_test_util.cc
@@ -2082,6 +2082,7 @@
           nullptr /* transport_security_state */,
           nullptr /* cert_transparency_verifier */,
           nullptr /* ct_policy_enforcer */,
+          nullptr /* ssl_client_session_cache */,
           std::string() /* ssl_session_cache_shard */,
           nullptr /* ssl_config_service */,
           nullptr /* socket_performance_watcher_factory */,
diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc
index 820115a..14d0048 100644
--- a/net/socket/ssl_client_socket_pool_unittest.cc
+++ b/net/socket/ssl_client_socket_pool_unittest.cc
@@ -263,7 +263,7 @@
       nullptr /* cert_verifier */, nullptr /* channel_id_server */,
       nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */,
       nullptr /* socket_performance_watcher_factory */,
@@ -341,7 +341,7 @@
       nullptr /* cert_verifier */, nullptr /* channel_id_server */,
       nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */,
       nullptr /* socket_performance_watcher_factory */,
@@ -411,7 +411,7 @@
       nullptr /* cert_verifier */, nullptr /* channel_id_server */,
       nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */,
       nullptr /* socket_performance_watcher_factory */,
diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
index 9a66192..7a2460e 100644
--- a/net/socket/ssl_client_socket_unittest.cc
+++ b/net/socket/ssl_client_socket_unittest.cc
@@ -984,9 +984,9 @@
   const bool read_if_ready_enabled_;
 };
 
-INSTANTIATE_TEST_CASE_P(/* no prefix */,
-                        SSLClientSocketReadTest,
-                        ::testing::Bool());
+INSTANTIATE_TEST_SUITE_P(/* no prefix */,
+                         SSLClientSocketReadTest,
+                         ::testing::Bool());
 
 // Verifies the correctness of GetSSLCertRequestInfo.
 class SSLClientSocketCertRequestInfoTest : public SSLClientSocketTest {
@@ -5148,9 +5148,9 @@
   }
 };
 
-INSTANTIATE_TEST_CASE_P(/* no prefix */,
-                        TLS13DowngradeMetricsTest,
-                        ::testing::ValuesIn(kTLS13DowngradeMetricsParams));
+INSTANTIATE_TEST_SUITE_P(/* no prefix */,
+                         TLS13DowngradeMetricsTest,
+                         ::testing::ValuesIn(kTLS13DowngradeMetricsParams));
 
 TEST_P(TLS13DowngradeMetricsTest, Metrics) {
   const TLS13DowngradeMetricsParams& params = GetParam();
diff --git a/net/socket/ssl_connect_job_unittest.cc b/net/socket/ssl_connect_job_unittest.cc
index 24d4c17..caa5cb2 100644
--- a/net/socket/ssl_connect_job_unittest.cc
+++ b/net/socket/ssl_connect_job_unittest.cc
@@ -110,6 +110,7 @@
                                nullptr /* transport_security_state */,
                                nullptr /* cert_transparency_verifier */,
                                nullptr /* ct_policy_enforcer */,
+                               nullptr /* ssl_client_session_cache */,
                                std::string() /* ssl_session_cache_shard */,
                                nullptr /* ssl_config_service */,
                                nullptr /* socket_performance_watcher_factory */,
diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc
index bc068321..7ca302b 100644
--- a/net/socket/transport_client_socket_pool.cc
+++ b/net/socket/transport_client_socket_pool.cc
@@ -88,6 +88,7 @@
     TransportSecurityState* transport_security_state,
     CTVerifier* cert_transparency_verifier,
     CTPolicyEnforcer* ct_policy_enforcer,
+    SSLClientSessionCache* ssl_client_session_cache,
     const std::string& ssl_session_cache_shard,
     SSLConfigService* ssl_config_service,
     SocketPerformanceWatcherFactory* socket_performance_watcher_factory,
@@ -106,7 +107,7 @@
                                        transport_security_state,
                                        cert_transparency_verifier,
                                        ct_policy_enforcer,
-                                       nullptr,
+                                       ssl_client_session_cache,
                                        ssl_session_cache_shard),
                 socket_performance_watcher_factory,
                 network_quality_estimator,
diff --git a/net/socket/transport_client_socket_pool.h b/net/socket/transport_client_socket_pool.h
index c10ef1e0..db18547 100644
--- a/net/socket/transport_client_socket_pool.h
+++ b/net/socket/transport_client_socket_pool.h
@@ -90,6 +90,7 @@
       TransportSecurityState* transport_security_state,
       CTVerifier* cert_transparency_verifier,
       CTPolicyEnforcer* ct_policy_enforcer,
+      SSLClientSessionCache* ssl_client_session_cache,
       const std::string& ssl_session_cache_shard,
       SSLConfigService* ssl_config_service,
       SocketPerformanceWatcherFactory* socket_performance_watcher_factory,
diff --git a/net/socket/transport_client_socket_pool_unittest.cc b/net/socket/transport_client_socket_pool_unittest.cc
index 9865ac0..7d4be654 100644
--- a/net/socket/transport_client_socket_pool_unittest.cc
+++ b/net/socket/transport_client_socket_pool_unittest.cc
@@ -97,6 +97,7 @@
               nullptr /* transport_security_state */,
               nullptr /* cert_transparency_verifier */,
               nullptr /* ct_policy_enforcer */,
+              nullptr /* ssl_client_session_cache */,
               std::string() /* ssl_session_cache_shard */,
               ssl_config_service_.get(),
               nullptr /* socket_performance_watcher_factory */,
@@ -413,7 +414,7 @@
       nullptr /* cert_verifier */, nullptr /* channel_id_server */,
       nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */,
       nullptr /* socket_performance_watcher_factory */,
@@ -1127,6 +1128,7 @@
         nullptr /* transport_security_state */,
         nullptr /* cert_transparency_verifier */,
         nullptr /* ct_policy_enforcer */,
+        nullptr /* ssl_client_session_cache */,
         std::string() /* ssl_session_cache_shard */,
         nullptr /* ssl_config_service */,
         nullptr /* socket_performance_watcher_factory */,
@@ -1171,7 +1173,7 @@
       nullptr /* cert_verifier */, nullptr /* channel_id_server */,
       nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */,
       nullptr /* socket_performance_watcher_factory */,
@@ -1296,7 +1298,7 @@
       nullptr /* cert_verifier */, nullptr /* channel_id_server */,
       nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */,
       nullptr /* socket_performance_watcher_factory */,
diff --git a/net/socket/transport_client_socket_unittest.cc b/net/socket/transport_client_socket_unittest.cc
index 8e07c90..26b3dbf 100644
--- a/net/socket/transport_client_socket_unittest.cc
+++ b/net/socket/transport_client_socket_unittest.cc
@@ -234,9 +234,9 @@
 }
 
 // TODO(leighton):  Add SCTP to this list when it is ready.
-INSTANTIATE_TEST_CASE_P(StreamSocket,
-                        TransportClientSocketTest,
-                        ::testing::Values(TCP));
+INSTANTIATE_TEST_SUITE_P(StreamSocket,
+                         TransportClientSocketTest,
+                         ::testing::Values(TCP));
 
 TEST_P(TransportClientSocketTest, Connect) {
   TestCompletionCallback callback;
diff --git a/net/socket/websocket_transport_client_socket_pool.cc b/net/socket/websocket_transport_client_socket_pool.cc
index b5061c51..dc94c10 100644
--- a/net/socket/websocket_transport_client_socket_pool.cc
+++ b/net/socket/websocket_transport_client_socket_pool.cc
@@ -36,6 +36,7 @@
     TransportSecurityState* transport_security_state,
     CTVerifier* cert_transparency_verifier,
     CTPolicyEnforcer* ct_policy_enforcer,
+    SSLClientSessionCache* ssl_client_session_cache,
     const std::string& ssl_session_cache_shard,
     SSLConfigService* ssl_config_service,
     NetworkQualityEstimator* network_quality_estimator,
@@ -51,6 +52,7 @@
           transport_security_state,
           cert_transparency_verifier,
           ct_policy_enforcer,
+          ssl_client_session_cache,
           ssl_session_cache_shard,
           ssl_config_service,
           nullptr /* socket_performance_watcher_factory */,
@@ -64,7 +66,7 @@
                                  transport_security_state,
                                  cert_transparency_verifier,
                                  ct_policy_enforcer,
-                                 nullptr,
+                                 ssl_client_session_cache,
                                  ssl_session_cache_shard),
       network_quality_estimator_(network_quality_estimator),
       websocket_endpoint_lock_manager_(websocket_endpoint_lock_manager),
diff --git a/net/socket/websocket_transport_client_socket_pool.h b/net/socket/websocket_transport_client_socket_pool.h
index afa0504a..a0b60d2c 100644
--- a/net/socket/websocket_transport_client_socket_pool.h
+++ b/net/socket/websocket_transport_client_socket_pool.h
@@ -51,6 +51,7 @@
       TransportSecurityState* transport_security_state,
       CTVerifier* cert_transparency_verifier,
       CTPolicyEnforcer* ct_policy_enforcer,
+      SSLClientSessionCache* ssl_client_session_cache,
       const std::string& ssl_session_cache_shard,
       SSLConfigService* ssl_config_service,
       NetworkQualityEstimator* network_quality_estimator,
diff --git a/net/socket/websocket_transport_client_socket_pool_unittest.cc b/net/socket/websocket_transport_client_socket_pool_unittest.cc
index d4fa8ca0..9508b199 100644
--- a/net/socket/websocket_transport_client_socket_pool_unittest.cc
+++ b/net/socket/websocket_transport_client_socket_pool_unittest.cc
@@ -76,6 +76,7 @@
               nullptr /* transport_security_state */,
               nullptr /* cert_transparency_verifier */,
               nullptr /* ct_policy_enforcer */,
+              nullptr /* ssl_client_session_cache */,
               std::string() /* ssl_session_cache_shard */,
               nullptr /* ssl_config_service */,
               nullptr /* network_quality_estimator */,
@@ -541,7 +542,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -586,7 +587,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -630,7 +631,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -666,7 +667,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -703,7 +704,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -744,7 +745,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -793,7 +794,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -836,7 +837,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
@@ -883,7 +884,7 @@
       host_resolver_.get(), nullptr /* cert_verifier */,
       nullptr /* channel_id_server */, nullptr /* transport_security_state */,
       nullptr /* cert_transparency_verifier */,
-      nullptr /* ct_policy_enforcer */,
+      nullptr /* ct_policy_enforcer */, nullptr /* ssl_client_session_cache */,
       std::string() /* ssl_session_cache_shard */,
       nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */,
       &websocket_endpoint_lock_manager_, nullptr /* netlog */);
diff --git a/net/test/embedded_test_server/embedded_test_server_unittest.cc b/net/test/embedded_test_server/embedded_test_server_unittest.cc
index 912d24f..e117096 100644
--- a/net/test/embedded_test_server/embedded_test_server_unittest.cc
+++ b/net/test/embedded_test_server/embedded_test_server_unittest.cc
@@ -495,10 +495,10 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(EmbeddedTestServerTestInstantiation,
-                        EmbeddedTestServerTest,
-                        testing::Values(EmbeddedTestServer::TYPE_HTTP,
-                                        EmbeddedTestServer::TYPE_HTTPS));
+INSTANTIATE_TEST_SUITE_P(EmbeddedTestServerTestInstantiation,
+                         EmbeddedTestServerTest,
+                         testing::Values(EmbeddedTestServer::TYPE_HTTP,
+                                         EmbeddedTestServer::TYPE_HTTPS));
 
 // Below test exercises EmbeddedTestServer's ability to cope with the situation
 // where there is no MessageLoop available on the thread at EmbeddedTestServer
@@ -590,7 +590,7 @@
   base::PlatformThread::Join(thread_handle);
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     EmbeddedTestServerThreadingTestInstantiation,
     EmbeddedTestServerThreadingTest,
     testing::Combine(testing::Bool(),
diff --git a/net/third_party/nist-pkits/generate_tests.py b/net/third_party/nist-pkits/generate_tests.py
index 785c3d2..b2c42c2 100644
--- a/net/third_party/nist-pkits/generate_tests.py
+++ b/net/third_party/nist-pkits/generate_tests.py
@@ -26,7 +26,7 @@
 
 
 def finalize_test_case(test_case_name, sanitized_test_names, output):
-  output.write('\nWRAPPED_REGISTER_TYPED_TEST_CASE_P(%s' % test_case_name)
+  output.write('\nWRAPPED_REGISTER_TYPED_TEST_SUITE_P(%s' % test_case_name)
   for name in sanitized_test_names:
     output.write(',\n    %s' % name)
   output.write(');\n')
@@ -187,7 +187,7 @@
     result.cert_path_lines.append(lines[i])
     i += 1
 
-  return i, result 
+  return i, result
 
 
 def parse_cert_path_lines(lines):
@@ -261,21 +261,21 @@
 
     # 2. default settings, but with initial-explicit-policy set and
     # initial-policy-set = {NIST-test-policy-1}. The path should validate
-    # successfully. 
+    # successfully.
     TestInfo(True, initial_explicit_policy=True,
              initial_policy_set=[TEST_POLICY_1],
              user_constrained_policy_set=[TEST_POLICY_1]),
 
     # 3. default settings, but with initial-explicit-policy set and
     # initial-policy-set = {NIST-test-policy-2}. The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, initial_explicit_policy=True,
              initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[]),
 
     # 4. default settings, but with initial-explicit-policy set and
     # initial-policy-set = {NIST-test-policy-1, NIST-test-policy-2}. The path
-    # should validate successfully. 
+    # should validate successfully.
     TestInfo(True, initial_explicit_policy=True,
              initial_policy_set=[TEST_POLICY_1, TEST_POLICY_2],
              user_constrained_policy_set=[TEST_POLICY_1]),
@@ -301,16 +301,16 @@
 
     # 3. default settings, but with initial-explicit-policy set and
     # initial-policy-set = {NIST-test-policy-1, NIST-test-policy-2}. The path
-    # should not validate successfully. 
+    # should not validate successfully.
     TestInfo(False, initial_explicit_policy=True,
              initial_policy_set=[TEST_POLICY_1, TEST_POLICY_2],
              user_constrained_policy_set=[]),
   ],
 
-  '4.8.4': [ # Different Policies Test4 
+  '4.8.4': [ # Different Policies Test4
     # Procedure: Validate Different Policies Test4 EE using the default
     # settings or open and verify Signed Test Message 6.2.2.69 using the
-    # default settings. 
+    # default settings.
     #
     # Expected Result: The authorities-constrained-policy-set and the
     # user-constrained-policy-set will be empty. The explicit-policy-indicator
@@ -347,7 +347,7 @@
              user_constrained_policy_set=[TEST_POLICY_1]),
 
     # 3. default settings, but with initial-policy-set = {NIST-test-policy-2}.
-    # The path should not validate successfully. 
+    # The path should not validate successfully.
     TestInfo(False, initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[]),
   ],
@@ -363,11 +363,11 @@
     # policyConstraints extension. If the application can process the
     # policyConstraints extension, then the path should not validate
     # successfully. If the application can not process the policyConstraints
-    # extension, then the path should validate successfully. 
+    # extension, then the path should validate successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
-  '4.8.8': [ # Different Policies Test8 
+  '4.8.8': [ # Different Policies Test8
     # Procedure: Validate Different Policies Test8 EE using the default
     # settings or open and verify Signed Test Message 6.2.2.73 using the
     # default settings.
@@ -393,14 +393,14 @@
     # extension. If the application can process the policyConstraints
     # extension, then the path should not validate successfully. If the
     # application can not process the policyConstraints extension, then the
-    # path should validate successfully. 
+    # path should validate successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
   '4.8.10': [ # All Certificates Same Policies Test10
     # 1. default settings. The path should validate successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1, TEST_POLICY_2]),
-    
+
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-1}.
     # The path should validate successfully.
     TestInfo(True, initial_policy_set=[TEST_POLICY_1],
@@ -417,7 +417,7 @@
     TestInfo(True, user_constrained_policy_set=[ANY_POLICY]),
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-1}.
-    # The path should validate successfully. 
+    # The path should validate successfully.
     TestInfo(True, initial_policy_set=[TEST_POLICY_1],
              user_constrained_policy_set=[TEST_POLICY_1]),
   ],
@@ -433,7 +433,7 @@
     # extension. If the application can process the policyConstraints
     # extension, then the path should not validate successfully. If the
     # application can not process the policyConstraints extension, then the
-    # path should validate successfully. 
+    # path should validate successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -449,7 +449,7 @@
              user_constrained_policy_set=[TEST_POLICY_2]),
 
     # 3. default settings, but with initial-policy-set = {NIST-test-policy-3}.
-    # The path should validate successfully. 
+    # The path should validate successfully.
     TestInfo(True, initial_policy_set=[TEST_POLICY_3],
              user_constrained_policy_set=[TEST_POLICY_3]),
   ],
@@ -461,7 +461,7 @@
              user_constrained_policy_set=[TEST_POLICY_1]),
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-2}.
-    # The path should not validate successfully. 
+    # The path should not validate successfully.
     TestInfo(False, initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[]),
   ],
@@ -500,7 +500,7 @@
     # validate successfully. If the path validates successfully, then the
     # application should display the user notice associated with
     # NIST-test-policy-1. The user notice associated with NIST-test-policy-2
-    # should not be displayed. 
+    # should not be displayed.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
@@ -518,11 +518,11 @@
     # indicator is set and the initial-policy-set does not include
     # NIST-test-policy-1, then the path should be rejected, otherwise it should
     # validate successfully. If the path validates successfully, then the
-    # application should display the user notice associated with anyPolicy. 
+    # application should display the user notice associated with anyPolicy.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
-  '4.8.18': [ # User Notice Qualifier Test18 
+  '4.8.18': [ # User Notice Qualifier Test18
     # 1. default settings, but with initial-policy-set = {NIST-test-policy-1}.
     # The path should validate successfully and the qualifier associated with
     # NIST-test-policy-1 in the end entity certificate should be displayed.
@@ -531,7 +531,7 @@
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-2}.
     # The path should validate successfully and the qualifier associated with
-    # anyPolicy in the end entity certificate should be displayed. 
+    # anyPolicy in the end entity certificate should be displayed.
     TestInfo(True, initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[TEST_POLICY_2]),
   ],
@@ -552,7 +552,7 @@
     # validate successfully.  Since the explicitText exceeds the maximum size
     # of 200 characters, the application may choose to reject the certificate.
     # If the application accepts the certificate, display of the user notice is
-    # optional. 
+    # optional.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
@@ -576,7 +576,7 @@
     # associated with NIST-testpolicy-1 in the
     # authorities-constrained-policy-set (and in the user-constrained-policy-set
     # if NIST-test-policy-1 is in that set). There are no processing
-    # requirements associated with the CPS pointer qualifier. 
+    # requirements associated with the CPS pointer qualifier.
     TestInfo(True, initial_explicit_policy=True,
              initial_policy_set=[TEST_POLICY_1],
              user_constrained_policy_set=[TEST_POLICY_1]),
@@ -619,7 +619,7 @@
              user_constrained_policy_set=[TEST_POLICY_1]),
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-2}.
-    # The path should not validate successfully. 
+    # The path should not validate successfully.
     TestInfo(False, initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[]),
 
@@ -634,7 +634,7 @@
     TestInfo(False, user_constrained_policy_set=[]),
 
     # 2. default settings, but with initial-policy-mapping-inhibit set. The
-    # path should not validate successfully. 
+    # path should not validate successfully.
     TestInfo(False, initial_policy_mapping_inhibit=True,
              user_constrained_policy_set=[]),
   ],
@@ -646,7 +646,7 @@
              user_constrained_policy_set=[]),
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-2}.
-    # The path should validate successfully. 
+    # The path should validate successfully.
     TestInfo(True, initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[TEST_POLICY_2]),
   ],
@@ -661,7 +661,7 @@
     # explicit-policy-indicator will be set (if the application can process the
     # policyConstraints extension). If the application can process the
     # policyConstraints extension, then the path should be rejected, otherwise
-    # it should validate successfully. 
+    # it should validate successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -672,7 +672,7 @@
              user_constrained_policy_set=[TEST_POLICY_1]),
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-6}.
-    # The path should not validate successfully. 
+    # The path should not validate successfully.
     TestInfo(False, initial_policy_set=[TEST_POLICY_6],
              user_constrained_policy_set=[]),
   ],
@@ -684,19 +684,19 @@
                    user_constrained_policy_set=[TEST_POLICY_1]),
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-6}.
-    # The path should not validate successfully. 
+    # The path should not validate successfully.
     TestInfo(False, initial_policy_set=[TEST_POLICY_6],
              user_constrained_policy_set=[]),
   ],
 
-  '4.10.7': [ # Invalid Mapping From anyPolicy Test7 
+  '4.10.7': [ # Invalid Mapping From anyPolicy Test7
     # Procedure: Validate Invalid Mapping From anyPolicy Test7 EE using the
     # default settings or open and verify Signed Test Message 6.2.2.100 using
     # the default settings.
     #
     # Expected Result: The path should not validate successfully since the
     # intermediate certificate includes a policy mapping extension in which
-    # anyPolicy appears as an issuerDomainPolicy. 
+    # anyPolicy appears as an issuerDomainPolicy.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -724,7 +724,7 @@
     # {NIST-test-policy-1}. If not, the user-constrained-policy-set will be
     # empty. If the initial-policy-set does not include NIST-test-policy-1 (and
     # the application can process the policyConstraints extension), then the
-    # path should be rejected, otherwise it should validate successfully. 
+    # path should be rejected, otherwise it should validate successfully.
     TestInfo(True),
   ],
 
@@ -755,7 +755,7 @@
     # {NIST-test-policy-1}. If not, the user-constrained-policy-set will be
     # empty. If the initial-policy-set does not include NIST-test-policy-1 (and
     # the application can process the policyConstraints extension), then the
-    # path should be rejected, otherwise it should validate successfully. 
+    # path should be rejected, otherwise it should validate successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
@@ -769,7 +769,7 @@
 
     # 2. default settings, but with initial-policy-set = {NIST-test-policy-2}.
     # The path should validate successfully and the application should display
-    # the user notice associated with anyPolicy in the end entity certificate. 
+    # the user notice associated with anyPolicy in the end entity certificate.
     TestInfo(True, initial_policy_set=[TEST_POLICY_2],
              user_constrained_policy_set=[TEST_POLICY_2]),
   ],
@@ -789,7 +789,7 @@
     # the application can process the policyConstraints extension), then the
     # path should be rejected, otherwise it should validate successfully. If
     # the path is accepted, the application should display the user notice
-    # associated with NIST-testpolicy-1 in the intermediate certificate. 
+    # associated with NIST-testpolicy-1 in the intermediate certificate.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
@@ -812,14 +812,14 @@
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
-  '4.11.1': [ # Invalid inhibitPolicyMapping Test1 
+  '4.11.1': [ # Invalid inhibitPolicyMapping Test1
     # Procedure: Validate Invalid inhibitPolicyMapping Test1 EE using the
     # default settings or open and verify Signed Test Message 6.2.2.108 using
     # the default settings.
     #
     # Expected Result: The authorities-constrained-policy-set and the
     # user-constrained-policy-set will be empty. The explicit-policy-indicator
-    # will be set.  The path should not validate successfully. 
+    # will be set.  The path should not validate successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -831,11 +831,11 @@
     # Expected Result: The authorities-constrained-policy-set will be
     # {NIST-test-policy-1} and the explicit-policy-indicator will be set. If
     # the initial-policy-set is any-policy or otherwise includes
-    # NIST-test-policy-1, then the path should validate successfully. 
+    # NIST-test-policy-1, then the path should validate successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
-  '4.11.3': [ # Invalid inhibitPolicyMapping Test3 
+  '4.11.3': [ # Invalid inhibitPolicyMapping Test3
     # Procedure: Validate Invalid inhibitPolicyMapping Test3 EE using the
     # default settings or open and verify Signed Test Message 6.2.2.110 using
     # the default settings.
@@ -843,7 +843,7 @@
     # Expected Result: The authorities-constrained-policy-set and the
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set.  The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -855,7 +855,7 @@
     # Expected Result: The authorities-constrained-policy-set will be
     # {NIST-test-policy-2} and the explicit-policy-indicator will be set. If
     # the initial-policy-set is any-policy or otherwise includes
-    # NIST-test-policy-2, then the path should validate successfully. 
+    # NIST-test-policy-2, then the path should validate successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_2]),
   ],
 
@@ -867,7 +867,7 @@
     # Expected Result: The authorities-constrained-policy-set and the
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set.  The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -879,7 +879,7 @@
     # Expected Result: The authorities-constrained-policy-set and the
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set. The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -891,7 +891,7 @@
     # Expected Result: The authorities-constrained-policy-set will be
     # {NIST-test-policy-1} and the explicit-policy-indicator will be set. If
     # the initial-policy-set is any-policy or otherwise includes
-    # NIST-test-policy-1, then the path should validate successfully. 
+    # NIST-test-policy-1, then the path should validate successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
@@ -903,7 +903,7 @@
     # Expected Result: The authorities-constrained-policy-set and
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set. The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -915,7 +915,7 @@
     # Expected Result: The authorities-constrained-policy-set and
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set. The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -927,7 +927,7 @@
     # Expected Result: The authorities-constrained-policy-set and
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set. The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -939,7 +939,7 @@
     # Expected Result: The authorities-constrained-policy-set and
     # user-constrained-policy-set will be empty and the
     # explicit-policy-indicator will be set. The path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -953,7 +953,7 @@
     # explicit-policy-indicator will be set (if the application can process the
     # policyConstraints extension). If the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -971,16 +971,16 @@
     # then the user-constrained-policy-set will be empty. If the
     # user-constrained-policy-set is empty and the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
-  '4.12.3': [ # inhibitAnyPolicy Test3 
+  '4.12.3': [ # inhibitAnyPolicy Test3
      # 1. default settings. The path should validate successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
 
      # 2. default settings, but with initial-inhibit-any-policy set. The path
-     # should not validate successfully. 
+     # should not validate successfully.
     TestInfo(False, initial_inhibit_any_policy=True,
              user_constrained_policy_set=[]),
   ],
@@ -995,11 +995,11 @@
     # explicit-policy-indicator will be set (if the application can process the
     # policyConstraints extension). If the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
-  '4.12.5': [ # Invalid inhibitAnyPolicy Test5 
+  '4.12.5': [ # Invalid inhibitAnyPolicy Test5
     # Procedure: Validate Invalid inhibitAnyPolicy Test5 EE using the default
     # settings or open and verify Signed Test Message 6.2.2.123 using the
     # default settings.
@@ -1023,7 +1023,7 @@
     # explicit-policy-indicator will be set (if the application can process the
     # policyConstraints extension). If the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -1041,11 +1041,11 @@
     # then the user-constrained-policy-set will be empty. If the
     # user-constrained-policy-set is empty and the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
-  '4.12.8': [ # Invalid Self-Issued inhibitAnyPolicy Test8 
+  '4.12.8': [ # Invalid Self-Issued inhibitAnyPolicy Test8
     # Procedure: Validate Invalid Self-Issued inhibitAnyPolicy Test8 EE using
     # the default settings or open and verify Signed Test Message 6.2.2.126
     # using the default settings.
@@ -1055,7 +1055,7 @@
     # explicit-policy-indicator will be set (if the application can process the
     # policyConstraints extension). If the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 
@@ -1073,7 +1073,7 @@
     # then the user-constrained-policy-set will be empty. If the
     # user-constrained-policy-set is empty and the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(True, user_constrained_policy_set=[TEST_POLICY_1]),
   ],
 
@@ -1087,7 +1087,7 @@
     # explicit-policy-indicator will be set (if the application can process the
     # policyConstraints extension). If the application can process the
     # policyConstraints extension, then the path should not validate
-    # successfully. 
+    # successfully.
     TestInfo(False, user_constrained_policy_set=[]),
   ],
 }
@@ -1186,8 +1186,8 @@
                '// See https://github.com/google/googletest/issues/389\n')
   output.write('#define WRAPPED_TYPED_TEST_P(CaseName, TestName) '
                'TYPED_TEST_P(CaseName, TestName)\n')
-  output.write('#define WRAPPED_REGISTER_TYPED_TEST_CASE_P(CaseName, ...) '
-               'REGISTER_TYPED_TEST_CASE_P(CaseName, __VA_ARGS__)\n\n')
+  output.write('#define WRAPPED_REGISTER_TYPED_TEST_SUITE_P(CaseName, ...) '
+               'REGISTER_TYPED_TEST_SUITE_P(CaseName, __VA_ARGS__)\n\n')
 
   test_case_name = None
   sanitized_test_names = []
@@ -1211,7 +1211,7 @@
       output.write('\ntemplate <typename PkitsTestDelegate>\n')
       output.write('class %s : public PkitsTest<PkitsTestDelegate> {};\n' %
                    test_case_name)
-      output.write('TYPED_TEST_CASE_P(%s);\n' % test_case_name)
+      output.write('TYPED_TEST_SUITE_P(%s);\n' % test_case_name)
 
     if match:
       test_number = match.group(1)
diff --git a/net/third_party/nist-pkits/pkits_testcases-inl.h b/net/third_party/nist-pkits/pkits_testcases-inl.h
index 841a93ea..f83c0a2 100644
--- a/net/third_party/nist-pkits/pkits_testcases-inl.h
+++ b/net/third_party/nist-pkits/pkits_testcases-inl.h
@@ -4,12 +4,12 @@
 // See https://github.com/google/googletest/issues/389
 #define WRAPPED_TYPED_TEST_P(CaseName, TestName) \
   TYPED_TEST_P(CaseName, TestName)
-#define WRAPPED_REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
-  REGISTER_TYPED_TEST_CASE_P(CaseName, __VA_ARGS__)
+#define WRAPPED_REGISTER_TYPED_TEST_SUITE_P(CaseName, ...) \
+  REGISTER_TYPED_TEST_SUITE_P(CaseName, __VA_ARGS__)
 
 template <typename PkitsTestDelegate>
 class PkitsTest01SignatureVerification : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest01SignatureVerification);
+TYPED_TEST_SUITE_P(PkitsTest01SignatureVerification);
 
 // 4.1.1 Valid Signatures Test1
 WRAPPED_TYPED_TEST_P(PkitsTest01SignatureVerification,
@@ -91,17 +91,17 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(PkitsTest01SignatureVerification,
-                                   Section1ValidSignaturesTest1,
-                                   Section1InvalidCASignatureTest2,
-                                   Section1InvalidEESignatureTest3,
-                                   Section1ValidDSASignaturesTest4,
-                                   Section1ValidDSAParameterInheritanceTest5,
-                                   Section1InvalidDSASignatureTest6);
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(PkitsTest01SignatureVerification,
+                                    Section1ValidSignaturesTest1,
+                                    Section1InvalidCASignatureTest2,
+                                    Section1InvalidEESignatureTest3,
+                                    Section1ValidDSASignaturesTest4,
+                                    Section1ValidDSAParameterInheritanceTest5,
+                                    Section1InvalidDSASignatureTest6);
 
 template <typename PkitsTestDelegate>
 class PkitsTest02ValidityPeriods : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest02ValidityPeriods);
+TYPED_TEST_SUITE_P(PkitsTest02ValidityPeriods);
 
 // 4.2.1 Invalid CA notBefore Date Test1
 WRAPPED_TYPED_TEST_P(PkitsTest02ValidityPeriods,
@@ -209,7 +209,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest02ValidityPeriods,
     Section2InvalidCAnotBeforeDateTest1,
     Section2InvalidEEnotBeforeDateTest2,
@@ -222,7 +222,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest03VerifyingNameChaining : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest03VerifyingNameChaining);
+TYPED_TEST_SUITE_P(PkitsTest03VerifyingNameChaining);
 
 // 4.3.1 Invalid Name Chaining EE Test1
 WRAPPED_TYPED_TEST_P(PkitsTest03VerifyingNameChaining,
@@ -380,7 +380,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest03VerifyingNameChaining,
     Section3InvalidNameChainingEETest1,
     Section3InvalidNameChainingOrderTest2,
@@ -397,7 +397,7 @@
 template <typename PkitsTestDelegate>
 class PkitsTest04BasicCertificateRevocationTests
     : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest04BasicCertificateRevocationTests);
+TYPED_TEST_SUITE_P(PkitsTest04BasicCertificateRevocationTests);
 
 // 4.4.1 Missing CRL Test1
 WRAPPED_TYPED_TEST_P(PkitsTest04BasicCertificateRevocationTests,
@@ -705,7 +705,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest04BasicCertificateRevocationTests,
     Section4MissingCRLTest1,
     Section4InvalidRevokedCATest2,
@@ -732,7 +732,7 @@
 template <typename PkitsTestDelegate>
 class PkitsTest05VerifyingPathswithSelfIssuedCertificates
     : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest05VerifyingPathswithSelfIssuedCertificates);
+TYPED_TEST_SUITE_P(PkitsTest05VerifyingPathswithSelfIssuedCertificates);
 
 // 4.5.1 Valid Basic Self-Issued Old With New Test1
 WRAPPED_TYPED_TEST_P(PkitsTest05VerifyingPathswithSelfIssuedCertificates,
@@ -868,7 +868,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest05VerifyingPathswithSelfIssuedCertificates,
     Section5ValidBasicSelfIssuedOldWithNewTest1,
     Section5InvalidBasicSelfIssuedOldWithNewTest2,
@@ -882,7 +882,7 @@
 template <typename PkitsTestDelegate>
 class PkitsTest06VerifyingBasicConstraints
     : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest06VerifyingBasicConstraints);
+TYPED_TEST_SUITE_P(PkitsTest06VerifyingBasicConstraints);
 
 // 4.6.1 Invalid Missing basicConstraints Test1
 WRAPPED_TYPED_TEST_P(PkitsTest06VerifyingBasicConstraints,
@@ -1165,7 +1165,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest06VerifyingBasicConstraints,
     Section6InvalidMissingbasicConstraintsTest1,
     Section6InvalidcAFalseTest2,
@@ -1187,7 +1187,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest07KeyUsage : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest07KeyUsage);
+TYPED_TEST_SUITE_P(PkitsTest07KeyUsage);
 
 // 4.7.1 Invalid keyUsage Critical keyCertSign False Test1
 WRAPPED_TYPED_TEST_P(PkitsTest07KeyUsage,
@@ -1263,7 +1263,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest07KeyUsage,
     Section7InvalidkeyUsageCriticalkeyCertSignFalseTest1,
     Section7InvalidkeyUsageNotCriticalkeyCertSignFalseTest2,
@@ -1273,7 +1273,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest08CertificatePolicies : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest08CertificatePolicies);
+TYPED_TEST_SUITE_P(PkitsTest08CertificatePolicies);
 
 // 4.8.1 All Certificates Same Policy Test1 (Subpart 1)
 WRAPPED_TYPED_TEST_P(PkitsTest08CertificatePolicies,
@@ -1816,7 +1816,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest08CertificatePolicies,
     Section8AllCertificatesSamePolicyTest1Subpart1,
     Section8AllCertificatesSamePolicyTest1Subpart2,
@@ -1856,7 +1856,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest09RequireExplicitPolicy : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest09RequireExplicitPolicy);
+TYPED_TEST_SUITE_P(PkitsTest09RequireExplicitPolicy);
 
 // 4.9.1 Valid RequireExplicitPolicy Test1
 WRAPPED_TYPED_TEST_P(PkitsTest09RequireExplicitPolicy,
@@ -2019,7 +2019,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest09RequireExplicitPolicy,
     Section9ValidRequireExplicitPolicyTest1,
     Section9ValidRequireExplicitPolicyTest2,
@@ -2032,7 +2032,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest10PolicyMappings : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest10PolicyMappings);
+TYPED_TEST_SUITE_P(PkitsTest10PolicyMappings);
 
 // 4.10.1 Valid Policy Mapping Test1 (Subpart 1)
 WRAPPED_TYPED_TEST_P(PkitsTest10PolicyMappings,
@@ -2372,32 +2372,32 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(PkitsTest10PolicyMappings,
-                                   Section10ValidPolicyMappingTest1Subpart1,
-                                   Section10ValidPolicyMappingTest1Subpart2,
-                                   Section10ValidPolicyMappingTest1Subpart3,
-                                   Section10InvalidPolicyMappingTest2Subpart1,
-                                   Section10InvalidPolicyMappingTest2Subpart2,
-                                   Section10ValidPolicyMappingTest3Subpart1,
-                                   Section10ValidPolicyMappingTest3Subpart2,
-                                   Section10InvalidPolicyMappingTest4,
-                                   Section10ValidPolicyMappingTest5Subpart1,
-                                   Section10ValidPolicyMappingTest5Subpart2,
-                                   Section10ValidPolicyMappingTest6Subpart1,
-                                   Section10ValidPolicyMappingTest6Subpart2,
-                                   Section10InvalidMappingFromanyPolicyTest7,
-                                   Section10InvalidMappingToanyPolicyTest8,
-                                   Section10ValidPolicyMappingTest9,
-                                   Section10InvalidPolicyMappingTest10,
-                                   Section10ValidPolicyMappingTest11,
-                                   Section10ValidPolicyMappingTest12Subpart1,
-                                   Section10ValidPolicyMappingTest12Subpart2,
-                                   Section10ValidPolicyMappingTest13,
-                                   Section10ValidPolicyMappingTest14);
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(PkitsTest10PolicyMappings,
+                                    Section10ValidPolicyMappingTest1Subpart1,
+                                    Section10ValidPolicyMappingTest1Subpart2,
+                                    Section10ValidPolicyMappingTest1Subpart3,
+                                    Section10InvalidPolicyMappingTest2Subpart1,
+                                    Section10InvalidPolicyMappingTest2Subpart2,
+                                    Section10ValidPolicyMappingTest3Subpart1,
+                                    Section10ValidPolicyMappingTest3Subpart2,
+                                    Section10InvalidPolicyMappingTest4,
+                                    Section10ValidPolicyMappingTest5Subpart1,
+                                    Section10ValidPolicyMappingTest5Subpart2,
+                                    Section10ValidPolicyMappingTest6Subpart1,
+                                    Section10ValidPolicyMappingTest6Subpart2,
+                                    Section10InvalidMappingFromanyPolicyTest7,
+                                    Section10InvalidMappingToanyPolicyTest8,
+                                    Section10ValidPolicyMappingTest9,
+                                    Section10InvalidPolicyMappingTest10,
+                                    Section10ValidPolicyMappingTest11,
+                                    Section10ValidPolicyMappingTest12Subpart1,
+                                    Section10ValidPolicyMappingTest12Subpart2,
+                                    Section10ValidPolicyMappingTest13,
+                                    Section10ValidPolicyMappingTest14);
 
 template <typename PkitsTestDelegate>
 class PkitsTest11InhibitPolicyMapping : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest11InhibitPolicyMapping);
+TYPED_TEST_SUITE_P(PkitsTest11InhibitPolicyMapping);
 
 // 4.11.1 Invalid inhibitPolicyMapping Test1
 WRAPPED_TYPED_TEST_P(PkitsTest11InhibitPolicyMapping,
@@ -2611,7 +2611,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest11InhibitPolicyMapping,
     Section11InvalidinhibitPolicyMappingTest1,
     Section11ValidinhibitPolicyMappingTest2,
@@ -2627,7 +2627,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest12InhibitAnyPolicy : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest12InhibitAnyPolicy);
+TYPED_TEST_SUITE_P(PkitsTest12InhibitAnyPolicy);
 
 // 4.12.1 Invalid inhibitAnyPolicy Test1
 WRAPPED_TYPED_TEST_P(PkitsTest12InhibitAnyPolicy,
@@ -2811,7 +2811,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest12InhibitAnyPolicy,
     Section12InvalidinhibitAnyPolicyTest1,
     Section12ValidinhibitAnyPolicyTest2,
@@ -2827,7 +2827,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest13NameConstraints : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest13NameConstraints);
+TYPED_TEST_SUITE_P(PkitsTest13NameConstraints);
 
 // 4.13.1 Valid DN nameConstraints Test1
 WRAPPED_TYPED_TEST_P(PkitsTest13NameConstraints,
@@ -3380,7 +3380,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest13NameConstraints,
     Section13ValidDNnameConstraintsTest1,
     Section13InvalidDNnameConstraintsTest2,
@@ -3423,7 +3423,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest14DistributionPoints : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest14DistributionPoints);
+TYPED_TEST_SUITE_P(PkitsTest14DistributionPoints);
 
 // 4.14.1 Valid distributionPoint Test1
 WRAPPED_TYPED_TEST_P(PkitsTest14DistributionPoints,
@@ -3934,7 +3934,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest14DistributionPoints,
     Section14ValiddistributionPointTest1,
     Section14InvaliddistributionPointTest2,
@@ -3974,7 +3974,7 @@
 
 template <typename PkitsTestDelegate>
 class PkitsTest15DeltaCRLs : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest15DeltaCRLs);
+TYPED_TEST_SUITE_P(PkitsTest15DeltaCRLs);
 
 // 4.15.1 Invalid deltaCRLIndicator No Base Test1
 WRAPPED_TYPED_TEST_P(PkitsTest15DeltaCRLs,
@@ -4108,22 +4108,23 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(PkitsTest15DeltaCRLs,
-                                   Section15InvaliddeltaCRLIndicatorNoBaseTest1,
-                                   Section15ValiddeltaCRLTest2,
-                                   Section15InvaliddeltaCRLTest3,
-                                   Section15InvaliddeltaCRLTest4,
-                                   Section15ValiddeltaCRLTest5,
-                                   Section15InvaliddeltaCRLTest6,
-                                   Section15ValiddeltaCRLTest7,
-                                   Section15ValiddeltaCRLTest8,
-                                   Section15InvaliddeltaCRLTest9,
-                                   Section15InvaliddeltaCRLTest10);
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
+    PkitsTest15DeltaCRLs,
+    Section15InvaliddeltaCRLIndicatorNoBaseTest1,
+    Section15ValiddeltaCRLTest2,
+    Section15InvaliddeltaCRLTest3,
+    Section15InvaliddeltaCRLTest4,
+    Section15ValiddeltaCRLTest5,
+    Section15InvaliddeltaCRLTest6,
+    Section15ValiddeltaCRLTest7,
+    Section15ValiddeltaCRLTest8,
+    Section15InvaliddeltaCRLTest9,
+    Section15InvaliddeltaCRLTest10);
 
 template <typename PkitsTestDelegate>
 class PkitsTest16PrivateCertificateExtensions
     : public PkitsTest<PkitsTestDelegate> {};
-TYPED_TEST_CASE_P(PkitsTest16PrivateCertificateExtensions);
+TYPED_TEST_SUITE_P(PkitsTest16PrivateCertificateExtensions);
 
 // 4.16.1 Valid Unknown Not Critical Certificate Extension Test1
 WRAPPED_TYPED_TEST_P(
@@ -4154,7 +4155,7 @@
   this->RunTest(certs, crls, info);
 }
 
-WRAPPED_REGISTER_TYPED_TEST_CASE_P(
+WRAPPED_REGISTER_TYPED_TEST_SUITE_P(
     PkitsTest16PrivateCertificateExtensions,
     Section16ValidUnknownNotCriticalCertificateExtensionTest1,
     Section16InvalidUnknownCriticalCertificateExtensionTest2);
diff --git a/net/third_party/quic/core/congestion_control/send_algorithm_test.cc b/net/third_party/quic/core/congestion_control/send_algorithm_test.cc
index a161ecaf..39b7cf3 100644
--- a/net/third_party/quic/core/congestion_control/send_algorithm_test.cc
+++ b/net/third_party/quic/core/congestion_control/send_algorithm_test.cc
@@ -268,10 +268,10 @@
   SendAlgorithmInterface* sender_;
 };
 
-INSTANTIATE_TEST_CASE_P(SendAlgorithmTests,
-                        SendAlgorithmTest,
-                        ::testing::ValuesIn(GetTestParams()),
-                        TestParamToString);
+INSTANTIATE_TEST_SUITE_P(SendAlgorithmTests,
+                         SendAlgorithmTest,
+                         ::testing::ValuesIn(GetTestParams()),
+                         TestParamToString);
 
 // Test a simple long data transfer in the default setup.
 TEST_P(SendAlgorithmTest, SimpleWiredNetworkTransfer) {
diff --git a/net/third_party/quic/core/crypto/crypto_server_test.cc b/net/third_party/quic/core/crypto/crypto_server_test.cc
index 270bf08..1346b07 100644
--- a/net/third_party/quic/core/crypto/crypto_server_test.cc
+++ b/net/third_party/quic/core/crypto/crypto_server_test.cc
@@ -415,9 +415,9 @@
   std::unique_ptr<CryptoHandshakeMessage> server_config_;
 };
 
-INSTANTIATE_TEST_CASE_P(CryptoServerTests,
-                        CryptoServerTest,
-                        ::testing::ValuesIn(GetTestParams()));
+INSTANTIATE_TEST_SUITE_P(CryptoServerTests,
+                         CryptoServerTest,
+                         ::testing::ValuesIn(GetTestParams()));
 
 TEST_P(CryptoServerTest, BadSNI) {
   // clang-format off
diff --git a/net/third_party/quic/core/http/end_to_end_test.cc b/net/third_party/quic/core/http/end_to_end_test.cc
index 70fef00..e650364 100644
--- a/net/third_party/quic/core/http/end_to_end_test.cc
+++ b/net/third_party/quic/core/http/end_to_end_test.cc
@@ -644,21 +644,21 @@
 };
 
 // Run all end to end tests with all supported versions.
-INSTANTIATE_TEST_CASE_P(EndToEndTests,
-                        EndToEndTest,
-                        ::testing::ValuesIn(GetTestParams(false, false)));
+INSTANTIATE_TEST_SUITE_P(EndToEndTests,
+                         EndToEndTest,
+                         ::testing::ValuesIn(GetTestParams(false, false)));
 
 class EndToEndTestWithTls : public EndToEndTest {};
 
-INSTANTIATE_TEST_CASE_P(EndToEndTestsWithTls,
-                        EndToEndTestWithTls,
-                        ::testing::ValuesIn(GetTestParams(true, false)));
+INSTANTIATE_TEST_SUITE_P(EndToEndTestsWithTls,
+                         EndToEndTestWithTls,
+                         ::testing::ValuesIn(GetTestParams(true, false)));
 
 class EndToEndTestWithStatelessReject : public EndToEndTest {};
 
-INSTANTIATE_TEST_CASE_P(WithStatelessReject,
-                        EndToEndTestWithStatelessReject,
-                        ::testing::ValuesIn(GetTestParams(false, true)));
+INSTANTIATE_TEST_SUITE_P(WithStatelessReject,
+                         EndToEndTestWithStatelessReject,
+                         ::testing::ValuesIn(GetTestParams(false, true)));
 
 TEST_P(EndToEndTestWithTls, HandshakeSuccessful) {
   ASSERT_TRUE(Initialize());
@@ -2847,9 +2847,9 @@
 };
 
 // Run all server push end to end tests with all supported versions.
-INSTANTIATE_TEST_CASE_P(EndToEndTestsServerPush,
-                        EndToEndTestServerPush,
-                        ::testing::ValuesIn(GetTestParams(false, false)));
+INSTANTIATE_TEST_SUITE_P(EndToEndTestsServerPush,
+                         EndToEndTestServerPush,
+                         ::testing::ValuesIn(GetTestParams(false, false)));
 
 TEST_P(EndToEndTestServerPush, ServerPush) {
   ASSERT_TRUE(Initialize());
@@ -3554,9 +3554,9 @@
   PacketReorderingWriter* reorder_writer_;
 };
 
-INSTANTIATE_TEST_CASE_P(EndToEndPacketReorderingTests,
-                        EndToEndPacketReorderingTest,
-                        testing::ValuesIn(GetTestParams(false, false)));
+INSTANTIATE_TEST_SUITE_P(EndToEndPacketReorderingTests,
+                         EndToEndPacketReorderingTest,
+                         testing::ValuesIn(GetTestParams(false, false)));
 
 TEST_P(EndToEndPacketReorderingTest, ReorderedConnectivityProbing) {
   ASSERT_TRUE(Initialize());
diff --git a/net/third_party/quic/core/http/quic_headers_stream_test.cc b/net/third_party/quic/core/http/quic_headers_stream_test.cc
index a09c9ec1..7cf70647 100644
--- a/net/third_party/quic/core/http/quic_headers_stream_test.cc
+++ b/net/third_party/quic/core/http/quic_headers_stream_test.cc
@@ -363,9 +363,9 @@
 };
 
 // Run all tests with each version and perspective (client or server).
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicHeadersStreamTest,
-                        ::testing::ValuesIn(GetTestParams()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicHeadersStreamTest,
+                         ::testing::ValuesIn(GetTestParams()));
 
 TEST_P(QuicHeadersStreamTest, StreamId) {
   EXPECT_EQ(QuicUtils::GetHeadersStreamId(connection_->transport_version()),
diff --git a/net/third_party/quic/core/http/quic_server_session_base_test.cc b/net/third_party/quic/core/http/quic_server_session_base_test.cc
index 238e04ab..d59f2925 100644
--- a/net/third_party/quic/core/http/quic_server_session_base_test.cc
+++ b/net/third_party/quic/core/http/quic_server_session_base_test.cc
@@ -200,9 +200,9 @@
               reference.previous_connection_state());
 }
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicServerSessionBaseTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicServerSessionBaseTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 TEST_P(QuicServerSessionBaseTest, CloseStreamDueToReset) {
   // Open a stream, then reset it.
   // Send two bytes of payload to open it.
@@ -626,9 +626,9 @@
   QuicCryptoServerConfigPeer crypto_config_peer_;
 };
 
-INSTANTIATE_TEST_CASE_P(StreamMemberLifetimeTests,
-                        StreamMemberLifetimeTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(StreamMemberLifetimeTests,
+                         StreamMemberLifetimeTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 // Trigger an operation which causes an async invocation of
 // ProofSource::GetProof.  Delay the completion of the operation until after the
diff --git a/net/third_party/quic/core/http/quic_spdy_client_session_test.cc b/net/third_party/quic/core/http/quic_spdy_client_session_test.cc
index 716108c5..e9755c6 100644
--- a/net/third_party/quic/core/http/quic_spdy_client_session_test.cc
+++ b/net/third_party/quic/core/http/quic_spdy_client_session_test.cc
@@ -172,9 +172,9 @@
   QuicStreamId associated_stream_id_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSpdyClientSessionTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSpdyClientSessionTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSpdyClientSessionTest, CryptoConnect) {
   CompleteCryptoHandshake();
diff --git a/net/third_party/quic/core/http/quic_spdy_client_stream_test.cc b/net/third_party/quic/core/http/quic_spdy_client_stream_test.cc
index 8b52e03..f4d80217 100644
--- a/net/third_party/quic/core/http/quic_spdy_client_stream_test.cc
+++ b/net/third_party/quic/core/http/quic_spdy_client_stream_test.cc
@@ -101,9 +101,9 @@
   HttpEncoder encoder_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSpdyClientStreamTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSpdyClientStreamTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSpdyClientStreamTest, TestReceivingIllegalResponseStatusCode) {
   headers_[":status"] = "200 ok";
diff --git a/net/third_party/quic/core/http/quic_spdy_session_test.cc b/net/third_party/quic/core/http/quic_spdy_session_test.cc
index b8c2b47..46795a5 100644
--- a/net/third_party/quic/core/http/quic_spdy_session_test.cc
+++ b/net/third_party/quic/core/http/quic_spdy_session_test.cc
@@ -388,9 +388,9 @@
       : QuicSpdySessionTestBase(Perspective::IS_SERVER) {}
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSpdySessionTestServer,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSpdySessionTestServer,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSpdySessionTestServer, ShouldBufferIncomingStreamUnidirectional) {
   if (connection_->transport_version() != QUIC_VERSION_99) {
@@ -1499,9 +1499,9 @@
       : QuicSpdySessionTestBase(Perspective::IS_CLIENT) {}
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSpdySessionTestClient,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSpdySessionTestClient,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSpdySessionTestClient, AvailableStreamsClient) {
   ASSERT_TRUE(session_.GetOrCreateDynamicStream(
diff --git a/net/third_party/quic/core/http/quic_spdy_stream_test.cc b/net/third_party/quic/core/http/quic_spdy_stream_test.cc
index 3fa3542..93e7cf9 100644
--- a/net/third_party/quic/core/http/quic_spdy_stream_test.cc
+++ b/net/third_party/quic/core/http/quic_spdy_stream_test.cc
@@ -168,9 +168,9 @@
   HttpEncoder encoder_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSpdyStreamTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSpdyStreamTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSpdyStreamTest, ProcessHeaderList) {
   Initialize(kShouldProcessData);
diff --git a/net/third_party/quic/core/qpack/qpack_decoder_test.cc b/net/third_party/quic/core/qpack/qpack_decoder_test.cc
index da6c2da..bf8e259e 100644
--- a/net/third_party/quic/core/qpack/qpack_decoder_test.cc
+++ b/net/third_party/quic/core/qpack/qpack_decoder_test.cc
@@ -62,10 +62,10 @@
   const FragmentMode fragment_mode_;
 };
 
-INSTANTIATE_TEST_CASE_P(,
-                        QpackDecoderTest,
-                        Values(FragmentMode::kSingleChunk,
-                               FragmentMode::kOctetByOctet));
+INSTANTIATE_TEST_SUITE_P(,
+                         QpackDecoderTest,
+                         Values(FragmentMode::kSingleChunk,
+                                FragmentMode::kOctetByOctet));
 
 TEST_P(QpackDecoderTest, NoPrefix) {
   EXPECT_CALL(handler_,
diff --git a/net/third_party/quic/core/qpack/qpack_encoder_test.cc b/net/third_party/quic/core/qpack/qpack_encoder_test.cc
index 392cea8..7250617 100644
--- a/net/third_party/quic/core/qpack/qpack_encoder_test.cc
+++ b/net/third_party/quic/core/qpack/qpack_encoder_test.cc
@@ -37,10 +37,10 @@
   const FragmentMode fragment_mode_;
 };
 
-INSTANTIATE_TEST_CASE_P(,
-                        QpackEncoderTest,
-                        Values(FragmentMode::kSingleChunk,
-                               FragmentMode::kOctetByOctet));
+INSTANTIATE_TEST_SUITE_P(,
+                         QpackEncoderTest,
+                         Values(FragmentMode::kSingleChunk,
+                                FragmentMode::kOctetByOctet));
 
 TEST_P(QpackEncoderTest, Empty) {
   spdy::SpdyHeaderBlock header_list;
diff --git a/net/third_party/quic/core/qpack/qpack_instruction_decoder_test.cc b/net/third_party/quic/core/qpack/qpack_instruction_decoder_test.cc
index 34c9e2c..399dd03 100644
--- a/net/third_party/quic/core/qpack/qpack_instruction_decoder_test.cc
+++ b/net/third_party/quic/core/qpack/qpack_instruction_decoder_test.cc
@@ -101,10 +101,10 @@
   const FragmentMode fragment_mode_;
 };
 
-INSTANTIATE_TEST_CASE_P(,
-                        QpackInstructionDecoderTest,
-                        Values(FragmentMode::kSingleChunk,
-                               FragmentMode::kOctetByOctet));
+INSTANTIATE_TEST_SUITE_P(,
+                         QpackInstructionDecoderTest,
+                         Values(FragmentMode::kSingleChunk,
+                                FragmentMode::kOctetByOctet));
 
 TEST_P(QpackInstructionDecoderTest, SBitAndVarint2) {
   EXPECT_CALL(delegate_, OnInstructionDecoded(TestInstruction1()));
diff --git a/net/third_party/quic/core/qpack/qpack_instruction_encoder_test.cc b/net/third_party/quic/core/qpack/qpack_instruction_encoder_test.cc
index 7f6f0c2..6f5220e 100644
--- a/net/third_party/quic/core/qpack/qpack_instruction_encoder_test.cc
+++ b/net/third_party/quic/core/qpack/qpack_instruction_encoder_test.cc
@@ -43,10 +43,10 @@
   const FragmentMode fragment_mode_;
 };
 
-INSTANTIATE_TEST_CASE_P(,
-                        QpackInstructionEncoderTest,
-                        Values(FragmentMode::kSingleChunk,
-                               FragmentMode::kOctetByOctet));
+INSTANTIATE_TEST_SUITE_P(,
+                         QpackInstructionEncoderTest,
+                         Values(FragmentMode::kSingleChunk,
+                                FragmentMode::kOctetByOctet));
 
 TEST_P(QpackInstructionEncoderTest, Varint) {
   const QpackInstruction instruction{QpackInstructionOpcode{0x00, 0x80},
diff --git a/net/third_party/quic/core/qpack/qpack_round_trip_test.cc b/net/third_party/quic/core/qpack/qpack_round_trip_test.cc
index de99dce..7ee7126f 100644
--- a/net/third_party/quic/core/qpack/qpack_round_trip_test.cc
+++ b/net/third_party/quic/core/qpack/qpack_round_trip_test.cc
@@ -56,7 +56,7 @@
   const FragmentMode decoding_fragment_mode_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ,
     QpackRoundTripTest,
     Combine(Values(FragmentMode::kSingleChunk, FragmentMode::kOctetByOctet),
diff --git a/net/third_party/quic/core/quic_arena_scoped_ptr_test.cc b/net/third_party/quic/core/quic_arena_scoped_ptr_test.cc
index 87ba5a8c..2997e88 100644
--- a/net/third_party/quic/core/quic_arena_scoped_ptr_test.cc
+++ b/net/third_party/quic/core/quic_arena_scoped_ptr_test.cc
@@ -42,10 +42,10 @@
   QuicOneBlockArena<1024> arena_;
 };
 
-INSTANTIATE_TEST_CASE_P(QuicArenaScopedPtrParamTest,
-                        QuicArenaScopedPtrParamTest,
-                        testing::Values(TestParam::kFromHeap,
-                                        TestParam::kFromArena));
+INSTANTIATE_TEST_SUITE_P(QuicArenaScopedPtrParamTest,
+                         QuicArenaScopedPtrParamTest,
+                         testing::Values(TestParam::kFromHeap,
+                                         TestParam::kFromArena));
 
 TEST_P(QuicArenaScopedPtrParamTest, NullObjects) {
   QuicArenaScopedPtr<TestObject> def;
diff --git a/net/third_party/quic/core/quic_connection_test.cc b/net/third_party/quic/core/quic_connection_test.cc
index bead8334..48dc3b2 100644
--- a/net/third_party/quic/core/quic_connection_test.cc
+++ b/net/third_party/quic/core/quic_connection_test.cc
@@ -1340,9 +1340,9 @@
 };
 
 // Run all end to end tests with all supported versions.
-INSTANTIATE_TEST_CASE_P(SupportedVersion,
-                        QuicConnectionTest,
-                        ::testing::ValuesIn(GetTestParams()));
+INSTANTIATE_TEST_SUITE_P(SupportedVersion,
+                         QuicConnectionTest,
+                         ::testing::ValuesIn(GetTestParams()));
 
 TEST_P(QuicConnectionTest, SelfAddressChangeAtClient) {
   EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
diff --git a/net/third_party/quic/core/quic_crypto_server_stream_test.cc b/net/third_party/quic/core/quic_crypto_server_stream_test.cc
index 31da322..e6d3491c 100644
--- a/net/third_party/quic/core/quic_crypto_server_stream_test.cc
+++ b/net/third_party/quic/core/quic_crypto_server_stream_test.cc
@@ -189,7 +189,7 @@
   ParsedQuicVersionVector supported_versions_ = AllSupportedVersions();
 };
 
-INSTANTIATE_TEST_CASE_P(Tests, QuicCryptoServerStreamTest, testing::Bool());
+INSTANTIATE_TEST_SUITE_P(Tests, QuicCryptoServerStreamTest, testing::Bool());
 
 TEST_P(QuicCryptoServerStreamTest, NotInitiallyConected) {
   Initialize();
@@ -497,9 +497,9 @@
             std::unique_ptr<FailingProofSource>(new FailingProofSource)) {}
 };
 
-INSTANTIATE_TEST_CASE_P(MoreTests,
-                        QuicCryptoServerStreamTestWithFailingProofSource,
-                        testing::Bool());
+INSTANTIATE_TEST_SUITE_P(MoreTests,
+                         QuicCryptoServerStreamTestWithFailingProofSource,
+                         testing::Bool());
 
 TEST_P(QuicCryptoServerStreamTestWithFailingProofSource, Test) {
   Initialize();
@@ -531,9 +531,9 @@
   QuicCryptoServerConfigPeer crypto_config_peer_;
 };
 
-INSTANTIATE_TEST_CASE_P(YetMoreTests,
-                        QuicCryptoServerStreamTestWithFakeProofSource,
-                        testing::Bool());
+INSTANTIATE_TEST_SUITE_P(YetMoreTests,
+                         QuicCryptoServerStreamTestWithFakeProofSource,
+                         testing::Bool());
 
 // Regression test for b/35422225, in which multiple CHLOs arriving on the same
 // connection in close succession could cause a crash, especially when the use
diff --git a/net/third_party/quic/core/quic_data_writer_test.cc b/net/third_party/quic/core/quic_data_writer_test.cc
index b80b524..02ce1b25 100644
--- a/net/third_party/quic/core/quic_data_writer_test.cc
+++ b/net/third_party/quic/core/quic_data_writer_test.cc
@@ -37,9 +37,9 @@
 
 class QuicDataWriterTest : public QuicTestWithParam<TestParams> {};
 
-INSTANTIATE_TEST_CASE_P(QuicDataWriterTests,
-                        QuicDataWriterTest,
-                        ::testing::ValuesIn(GetTestParams()));
+INSTANTIATE_TEST_SUITE_P(QuicDataWriterTests,
+                         QuicDataWriterTest,
+                         ::testing::ValuesIn(GetTestParams()));
 
 TEST_P(QuicDataWriterTest, SanityCheckUFloat16Consts) {
   // Check the arithmetic on the constants - otherwise the values below make
diff --git a/net/third_party/quic/core/quic_dispatcher_test.cc b/net/third_party/quic/core/quic_dispatcher_test.cc
index c79f6c1..ff54f67 100644
--- a/net/third_party/quic/core/quic_dispatcher_test.cc
+++ b/net/third_party/quic/core/quic_dispatcher_test.cc
@@ -1033,9 +1033,9 @@
 // Parameterized test for stateless rejects.  Should test all
 // combinations of enabling/disabling, reject/no-reject for stateless
 // rejects.
-INSTANTIATE_TEST_CASE_P(QuicDispatcherStatelessRejectTests,
-                        QuicDispatcherStatelessRejectTest,
-                        ::testing::ValuesIn(GetStatelessRejectTestParams()));
+INSTANTIATE_TEST_SUITE_P(QuicDispatcherStatelessRejectTests,
+                         QuicDispatcherStatelessRejectTest,
+                         ::testing::ValuesIn(GetStatelessRejectTestParams()));
 
 TEST_P(QuicDispatcherStatelessRejectTest, ParameterizedBasicTest) {
   CreateTimeWaitListManager();
@@ -1626,7 +1626,7 @@
   CryptoHandshakeMessage full_chlo_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     BufferedPacketStoreTests,
     BufferedPacketStoreTest,
     ::testing::ValuesIn(GetBufferedPacketStoreTestParams()));
diff --git a/net/third_party/quic/core/quic_epoll_alarm_factory_test.cc b/net/third_party/quic/core/quic_epoll_alarm_factory_test.cc
index dfd1b7c6..5f4ef0c 100644
--- a/net/third_party/quic/core/quic_epoll_alarm_factory_test.cc
+++ b/net/third_party/quic/core/quic_epoll_alarm_factory_test.cc
@@ -40,9 +40,9 @@
   QuicConnectionArena arena_;
 };
 
-INSTANTIATE_TEST_CASE_P(UseArena,
-                        QuicEpollAlarmFactoryTest,
-                        ::testing::ValuesIn({true, false}));
+INSTANTIATE_TEST_SUITE_P(UseArena,
+                         QuicEpollAlarmFactoryTest,
+                         ::testing::ValuesIn({true, false}));
 
 TEST_P(QuicEpollAlarmFactoryTest, CreateAlarm) {
   QuicArenaScopedPtr<TestDelegate> delegate =
diff --git a/net/third_party/quic/core/quic_framer_test.cc b/net/third_party/quic/core/quic_framer_test.cc
index 1bcb821b..a97e69a1 100644
--- a/net/third_party/quic/core/quic_framer_test.cc
+++ b/net/third_party/quic/core/quic_framer_test.cc
@@ -625,7 +625,7 @@
       GetQuicVersionDigitOnes()
 
 // Run all framer tests with all supported versions of QUIC.
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     QuicFramerTests,
     QuicFramerTest,
     ::testing::ValuesIn(AllSupportedVersionsIncludingTls()));
diff --git a/net/third_party/quic/core/quic_lru_cache_test.cc b/net/third_party/quic/core/quic_lru_cache_test.cc
index e00b8e8..2670920 100644
--- a/net/third_party/quic/core/quic_lru_cache_test.cc
+++ b/net/third_party/quic/core/quic_lru_cache_test.cc
@@ -18,7 +18,7 @@
 
 class QuicLRUCacheTest : public QuicTestWithParam<bool> {};
 
-INSTANTIATE_TEST_CASE_P(QuicLRUCacheTests, QuicLRUCacheTest, testing::Bool());
+INSTANTIATE_TEST_SUITE_P(QuicLRUCacheTests, QuicLRUCacheTest, testing::Bool());
 
 TEST_P(QuicLRUCacheTest, InsertAndLookup) {
   QuicLRUCache<int, CachedItem> cache(5, GetParam());
diff --git a/net/third_party/quic/core/quic_packet_creator_test.cc b/net/third_party/quic/core/quic_packet_creator_test.cc
index fb73ce10..50e4a47a 100644
--- a/net/third_party/quic/core/quic_packet_creator_test.cc
+++ b/net/third_party/quic/core/quic_packet_creator_test.cc
@@ -261,9 +261,9 @@
 // Run all packet creator tests with all supported versions of QUIC, and with
 // and without version in the packet header, as well as doing a run for each
 // length of truncated connection id.
-INSTANTIATE_TEST_CASE_P(QuicPacketCreatorTests,
-                        QuicPacketCreatorTest,
-                        ::testing::ValuesIn(GetTestParams()));
+INSTANTIATE_TEST_SUITE_P(QuicPacketCreatorTests,
+                         QuicPacketCreatorTest,
+                         ::testing::ValuesIn(GetTestParams()));
 
 TEST_P(QuicPacketCreatorTest, SerializeFrames) {
   for (int i = ENCRYPTION_NONE; i < NUM_ENCRYPTION_LEVELS; ++i) {
diff --git a/net/third_party/quic/core/quic_received_packet_manager_test.cc b/net/third_party/quic/core/quic_received_packet_manager_test.cc
index 4440e52..fdb89603 100644
--- a/net/third_party/quic/core/quic_received_packet_manager_test.cc
+++ b/net/third_party/quic/core/quic_received_packet_manager_test.cc
@@ -56,9 +56,9 @@
   QuicReceivedPacketManager received_manager_;
 };
 
-INSTANTIATE_TEST_CASE_P(QuicReceivedPacketManagerTest,
-                        QuicReceivedPacketManagerTest,
-                        ::testing::ValuesIn(GetTestParams()));
+INSTANTIATE_TEST_SUITE_P(QuicReceivedPacketManagerTest,
+                         QuicReceivedPacketManagerTest,
+                         ::testing::ValuesIn(GetTestParams()));
 
 TEST_P(QuicReceivedPacketManagerTest, DontWaitForPacketsBefore) {
   QuicPacketHeader header;
diff --git a/net/third_party/quic/core/quic_sent_packet_manager_test.cc b/net/third_party/quic/core/quic_sent_packet_manager_test.cc
index f41d1fb6..cb90350 100644
--- a/net/third_party/quic/core/quic_sent_packet_manager_test.cc
+++ b/net/third_party/quic/core/quic_sent_packet_manager_test.cc
@@ -322,7 +322,7 @@
   StrictMock<MockSessionNotifier> notifier_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests, QuicSentPacketManagerTest, testing::Bool());
+INSTANTIATE_TEST_SUITE_P(Tests, QuicSentPacketManagerTest, testing::Bool());
 
 TEST_P(QuicSentPacketManagerTest, IsUnacked) {
   VerifyUnackedPackets(nullptr, 0);
diff --git a/net/third_party/quic/core/quic_session_test.cc b/net/third_party/quic/core/quic_session_test.cc
index 49bad125..198993c2 100644
--- a/net/third_party/quic/core/quic_session_test.cc
+++ b/net/third_party/quic/core/quic_session_test.cc
@@ -446,9 +446,9 @@
   QuicFramer client_framer_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSessionTestServer,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSessionTestServer,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSessionTestServer, PeerAddress) {
   EXPECT_EQ(QuicSocketAddress(QuicIpAddress::Loopback4(), kTestPort),
@@ -1612,9 +1612,9 @@
   QuicSessionTestClient() : QuicSessionTestBase(Perspective::IS_CLIENT) {}
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSessionTestClient,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSessionTestClient,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSessionTestClient, AvailableBidirectionalStreamsClient) {
   ASSERT_TRUE(session_.GetOrCreateDynamicStream(
diff --git a/net/third_party/quic/core/quic_stream_id_manager_test.cc b/net/third_party/quic/core/quic_stream_id_manager_test.cc
index 694026a5..0bc4e94 100644
--- a/net/third_party/quic/core/quic_stream_id_manager_test.cc
+++ b/net/third_party/quic/core/quic_stream_id_manager_test.cc
@@ -170,7 +170,7 @@
       : QuicStreamIdManagerTestBase(Perspective::IS_CLIENT) {}
 };
 
-INSTANTIATE_TEST_CASE_P(Tests, QuicStreamIdManagerTestClient, testing::Bool());
+INSTANTIATE_TEST_SUITE_P(Tests, QuicStreamIdManagerTestClient, testing::Bool());
 
 // Check that the parameters used by the stream ID manager are properly
 // initialized.
@@ -618,7 +618,7 @@
       : QuicStreamIdManagerTestBase(Perspective::IS_SERVER) {}
 };
 
-INSTANTIATE_TEST_CASE_P(Tests, QuicStreamIdManagerTestServer, testing::Bool());
+INSTANTIATE_TEST_SUITE_P(Tests, QuicStreamIdManagerTestServer, testing::Bool());
 
 // This test checks that the initialization for the maximum allowed outgoing
 // stream id is correct.
diff --git a/net/third_party/quic/core/quic_stream_test.cc b/net/third_party/quic/core/quic_stream_test.cc
index 01c452ee..8e27ea3 100644
--- a/net/third_party/quic/core/quic_stream_test.cc
+++ b/net/third_party/quic/core/quic_stream_test.cc
@@ -148,7 +148,7 @@
 
 // Index value of 1 has the test run with supported-version[1], which is some
 // version OTHER than 99.
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     QuicStreamTests,
     QuicStreamTest,
     ::testing::ValuesIn(ParsedVersionOfIndex(AllSupportedVersions(), 1)));
@@ -156,9 +156,9 @@
 // Make a parameterized version of the QuicStreamTest for those tests
 // that need to differentiate based on version number.
 class QuicParameterizedStreamTest : public QuicStreamTestBase {};
-INSTANTIATE_TEST_CASE_P(QuicParameterizedStreamTests,
-                        QuicParameterizedStreamTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(QuicParameterizedStreamTests,
+                         QuicParameterizedStreamTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicStreamTest, PendingStreamTooMuchData) {
   Initialize();
diff --git a/net/third_party/quic/core/quic_unacked_packet_map_test.cc b/net/third_party/quic/core/quic_unacked_packet_map_test.cc
index fb836fd3..e94b02fd 100644
--- a/net/third_party/quic/core/quic_unacked_packet_map_test.cc
+++ b/net/third_party/quic/core/quic_unacked_packet_map_test.cc
@@ -178,7 +178,7 @@
   StrictMock<MockSessionNotifier> notifier_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests, QuicUnackedPacketMapTest, testing::Bool());
+INSTANTIATE_TEST_SUITE_P(Tests, QuicUnackedPacketMapTest, testing::Bool());
 
 TEST_P(QuicUnackedPacketMapTest, RttOnly) {
   // Acks are only tracked for RTT measurement purposes.
diff --git a/net/third_party/quic/core/stateless_rejector_test.cc b/net/third_party/quic/core/stateless_rejector_test.cc
index 8c341ce..84e8a3f 100644
--- a/net/third_party/quic/core/stateless_rejector_test.cc
+++ b/net/third_party/quic/core/stateless_rejector_test.cc
@@ -170,10 +170,10 @@
   QuicString stk_hex_;
 };
 
-INSTANTIATE_TEST_CASE_P(Flags,
-                        StatelessRejectorTest,
-                        ::testing::ValuesIn(GetTestParams()),
-                        TestParamToString);
+INSTANTIATE_TEST_SUITE_P(Flags,
+                         StatelessRejectorTest,
+                         ::testing::ValuesIn(GetTestParams()),
+                         TestParamToString);
 
 TEST_P(StatelessRejectorTest, InvalidChlo) {
   // clang-format off
diff --git a/net/third_party/quic/core/uber_quic_stream_id_manager_test.cc b/net/third_party/quic/core/uber_quic_stream_id_manager_test.cc
index e9d57bc..16ca2bf 100644
--- a/net/third_party/quic/core/uber_quic_stream_id_manager_test.cc
+++ b/net/third_party/quic/core/uber_quic_stream_id_manager_test.cc
@@ -67,10 +67,10 @@
   QuicFrame frame_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        UberQuicStreamIdManagerTest,
-                        ::testing::ValuesIn({Perspective::IS_CLIENT,
-                                             Perspective::IS_SERVER}));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         UberQuicStreamIdManagerTest,
+                         ::testing::ValuesIn({Perspective::IS_CLIENT,
+                                              Perspective::IS_SERVER}));
 
 TEST_P(UberQuicStreamIdManagerTest, Initialization) {
   if (GetParam() == Perspective::IS_SERVER) {
diff --git a/net/third_party/quic/platform/impl/batch_writer/quic_gso_batch_writer_test.cc b/net/third_party/quic/platform/impl/batch_writer/quic_gso_batch_writer_test.cc
index b785c0db..835d0a2 100644
--- a/net/third_party/quic/platform/impl/batch_writer/quic_gso_batch_writer_test.cc
+++ b/net/third_party/quic/platform/impl/batch_writer/quic_gso_batch_writer_test.cc
@@ -51,7 +51,7 @@
   std::unique_ptr<QuicGsoBatchWriter> writer_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     QuicGsoBatchWriterTest,
     QuicUdpBatchWriterIOTest,
     testing::ValuesIn(
diff --git a/net/third_party/quic/platform/impl/batch_writer/quic_sendmmsg_batch_writer_test.cc b/net/third_party/quic/platform/impl/batch_writer/quic_sendmmsg_batch_writer_test.cc
index b1044e9a..1730a679 100644
--- a/net/third_party/quic/platform/impl/batch_writer/quic_sendmmsg_batch_writer_test.cc
+++ b/net/third_party/quic/platform/impl/batch_writer/quic_sendmmsg_batch_writer_test.cc
@@ -24,7 +24,7 @@
   std::unique_ptr<QuicSendmmsgBatchWriter> writer_;
 };
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     QuicSendmmsgBatchWriterTest,
     QuicUdpBatchWriterIOTest,
     testing::ValuesIn(MakeQuicBatchWriterTestParams<
diff --git a/net/third_party/quic/tools/quic_simple_server_session_test.cc b/net/third_party/quic/tools/quic_simple_server_session_test.cc
index 89fcafd..0800dc3 100644
--- a/net/third_party/quic/tools/quic_simple_server_session_test.cc
+++ b/net/third_party/quic/tools/quic_simple_server_session_test.cc
@@ -266,9 +266,9 @@
   QuicConnectionVisitorInterface* visitor_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSimpleServerSessionTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSimpleServerSessionTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSimpleServerSessionTest, CloseStreamDueToReset) {
   // Open a stream, then reset it.
@@ -629,9 +629,9 @@
   }
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSimpleServerSessionServerPushTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSimpleServerSessionServerPushTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSimpleServerSessionServerPushTest, TestPromisePushResources) {
   // Tests that given more than kMaxOpenStreamForTest resources, all their
diff --git a/net/third_party/quic/tools/quic_simple_server_stream_test.cc b/net/third_party/quic/tools/quic_simple_server_stream_test.cc
index 09c4791b2..79638165 100644
--- a/net/third_party/quic/tools/quic_simple_server_stream_test.cc
+++ b/net/third_party/quic/tools/quic_simple_server_stream_test.cc
@@ -251,9 +251,9 @@
   bool is_verion_99_;
 };
 
-INSTANTIATE_TEST_CASE_P(Tests,
-                        QuicSimpleServerStreamTest,
-                        ::testing::ValuesIn(AllSupportedVersions()));
+INSTANTIATE_TEST_SUITE_P(Tests,
+                         QuicSimpleServerStreamTest,
+                         ::testing::ValuesIn(AllSupportedVersions()));
 
 TEST_P(QuicSimpleServerStreamTest, TestFraming) {
   EXPECT_CALL(session_, WritevData(_, _, _, _, _))
diff --git a/net/url_request/url_request_context_unittest.cc b/net/url_request/url_request_context_unittest.cc
index 642c22f..c0e515a 100644
--- a/net/url_request/url_request_context_unittest.cc
+++ b/net/url_request/url_request_context_unittest.cc
@@ -19,7 +19,7 @@
     : public testing::TestWithParam<base::trace_event::MemoryDumpLevelOfDetail>,
       public WithScopedTaskEnvironment {};
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     /* no prefix */,
     URLRequestContextMemoryDumpTest,
     ::testing::Values(base::trace_event::MemoryDumpLevelOfDetail::DETAILED,
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index ca738bd..be31d12 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -3319,9 +3319,9 @@
   EmbeddedTestServer https_server_{EmbeddedTestServer::TYPE_HTTPS};
 };
 
-INSTANTIATE_TEST_CASE_P(URLRequestTest,
-                        URLRequestTestParameterizedSameSite,
-                        ::testing::Bool());
+INSTANTIATE_TEST_SUITE_P(URLRequestTest,
+                         URLRequestTestParameterizedSameSite,
+                         ::testing::Bool());
 
 TEST_P(URLRequestTestParameterizedSameSite, CookieAgeMetrics) {
   const bool same_site = GetParam();
@@ -10999,9 +10999,9 @@
     EXPECT_EQ(test.cert_status, ssl_info.ocsp_result.revocation_status);
 }
 
-INSTANTIATE_TEST_CASE_P(OCSPVerify,
-                        HTTPSOCSPVerifyTest,
-                        testing::ValuesIn(kOCSPVerifyData));
+INSTANTIATE_TEST_SUITE_P(OCSPVerify,
+                         HTTPSOCSPVerifyTest,
+                         testing::ValuesIn(kOCSPVerifyData));
 
 class HTTPSAIATest : public HTTPSOCSPTest {
  public:
diff --git a/services/identity/public/cpp/BUILD.gn b/services/identity/public/cpp/BUILD.gn
index 2e4d390..fa8a1905 100644
--- a/services/identity/public/cpp/BUILD.gn
+++ b/services/identity/public/cpp/BUILD.gn
@@ -71,6 +71,8 @@
   ]
 
   deps = [
+    "//components/image_fetcher/core:test_support",
+    "//components/signin/core/browser",
     "//components/signin/core/browser:internals_test_support",
     "//components/sync_preferences:test_support",
   ]
diff --git a/services/identity/public/cpp/identity_manager.cc b/services/identity/public/cpp/identity_manager.cc
index 8b2c7ac16..22d59ba 100644
--- a/services/identity/public/cpp/identity_manager.cc
+++ b/services/identity/public/cpp/identity_manager.cc
@@ -4,6 +4,8 @@
 
 #include "services/identity/public/cpp/identity_manager.h"
 
+#include <string>
+
 #include "build/build_config.h"
 #include "components/signin/core/browser/ubertoken_fetcher_impl.h"
 #include "google_apis/gaia/gaia_auth_util.h"
@@ -434,6 +436,13 @@
   }
 }
 
+void IdentityManager::OnSetAccountsInCookieCompleted(
+    const GoogleServiceAuthError& error) {
+  for (auto& observer : observer_list_) {
+    observer.OnSetAccountsInCookieCompleted(error);
+  }
+}
+
 void IdentityManager::OnAccessTokenRequested(
     const std::string& account_id,
     const std::string& consumer_id,
@@ -445,6 +454,12 @@
   }
 }
 
+void IdentityManager::OnAccessTokenRemoved(const std::string& account_id,
+                                           const ScopeSet& scopes) {
+  for (auto& observer : diagnostics_observer_list_)
+    observer.OnAccessTokenRemovedFromCache(account_id, scopes);
+}
+
 void IdentityManager::OnAccountUpdated(const AccountInfo& info) {
   for (auto& observer : observer_list_) {
     observer.OnAccountUpdated(info);
diff --git a/services/identity/public/cpp/identity_manager.h b/services/identity/public/cpp/identity_manager.h
index 1d535794..999cd20 100644
--- a/services/identity/public/cpp/identity_manager.h
+++ b/services/identity/public/cpp/identity_manager.h
@@ -5,6 +5,8 @@
 #ifndef SERVICES_IDENTITY_PUBLIC_CPP_IDENTITY_MANAGER_H_
 #define SERVICES_IDENTITY_PUBLIC_CPP_IDENTITY_MANAGER_H_
 
+#include <string>
+
 #include "base/observer_list.h"
 #include "components/signin/core/browser/account_info.h"
 #include "components/signin/core/browser/account_tracker_service.h"
@@ -137,6 +139,15 @@
         const std::string& account_id,
         const GoogleServiceAuthError& error) {}
 
+    // Called whenever setting cookies is completed. If |error| is equal to
+    // GoogleServiceAuthError::AuthErrorNone() then the call succeeded.
+    //
+    // This observer method is called only in response to a call to
+    // SetAccountsInCookie(). To listen for cookie changes, use
+    // OnAccountsInCookieUpdated instead.
+    virtual void OnSetAccountsInCookieCompleted(
+        const GoogleServiceAuthError& error) {}
+
     // Called before a batch of refresh token state changes is started.
     virtual void OnStartBatchOfRefreshTokenStateChanges() {}
 
@@ -164,6 +175,10 @@
     virtual void OnAccessTokenRequested(const std::string& account_id,
                                         const std::string& consumer_id,
                                         const identity::ScopeSet& scopes) {}
+
+    // Called when an access token was removed.
+    virtual void OnAccessTokenRemovedFromCache(const std::string& account_id,
+                                               const ScopeSet& scopes) {}
   };
 
   // Possible values for the account ID migration state, needs to be kept in
@@ -465,12 +480,16 @@
   void OnAddAccountToCookieCompleted(
       const std::string& account_id,
       const GoogleServiceAuthError& error) override;
+  void OnSetAccountsInCookieCompleted(
+      const GoogleServiceAuthError& error) override;
 
   // OAuth2TokenService::DiagnosticsObserver:
   void OnAccessTokenRequested(
       const std::string& account_id,
       const std::string& consumer_id,
       const OAuth2TokenService::ScopeSet& scopes) override;
+  void OnAccessTokenRemoved(const std::string& account_id,
+                            const ScopeSet& scopes) override;
 
   // AccountTrackerService::Observer:
   void OnAccountUpdated(const AccountInfo& info) override;
diff --git a/services/identity/public/cpp/identity_manager_unittest.cc b/services/identity/public/cpp/identity_manager_unittest.cc
index f04335b..7289cb8 100644
--- a/services/identity/public/cpp/identity_manager_unittest.cc
+++ b/services/identity/public/cpp/identity_manager_unittest.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 <vector>
+
 #include "services/identity/public/cpp/identity_manager.h"
 #include "base/bind.h"
 #include "base/command_line.h"
@@ -75,6 +77,12 @@
       EXPECT_EQ(expected_account_id_to_invalidate_, account_id);
       EXPECT_EQ(expected_scopes_to_invalidate_, scopes);
       EXPECT_EQ(expected_access_token_to_invalidate_, access_token);
+
+      // It should trigger OnAccessTokenRemovedFromCache from
+      // IdentityManager::DiagnosticsObserver.
+      for (auto& observer : GetDiagnicsObservers())
+        observer.OnAccessTokenRemoved(account_id, scopes);
+
       std::move(on_access_token_invalidated_callback_).Run();
     }
   }
@@ -270,6 +278,11 @@
     return error_from_add_account_to_cookie_completed_callback_;
   }
 
+  const GoogleServiceAuthError&
+  error_from_set_accounts_in_cookie_completed_callback() const {
+    return error_from_set_accounts_in_cookie_completed_callback_;
+  }
+
   const GoogleServiceAuthError& error_from_signin_failed_callback() const {
     return google_signin_failed_error_;
   }
@@ -351,6 +364,10 @@
     account_from_add_account_to_cookie_completed_callback_ = account_id;
     error_from_add_account_to_cookie_completed_callback_ = error;
   }
+  void OnSetAccountsInCookieCompleted(
+      const GoogleServiceAuthError& error) override {
+    error_from_set_accounts_in_cookie_completed_callback_ = error;
+  }
 
   void OnStartBatchOfRefreshTokenStateChanges() override {
     EXPECT_FALSE(is_inside_batch_);
@@ -395,6 +412,7 @@
   AccountsInCookieJarInfo accounts_info_from_cookie_change_callback_;
   std::string account_from_add_account_to_cookie_completed_callback_;
   GoogleServiceAuthError error_from_add_account_to_cookie_completed_callback_;
+  GoogleServiceAuthError error_from_set_accounts_in_cookie_completed_callback_;
   GoogleServiceAuthError google_signin_failed_error_;
   bool is_inside_batch_ = false;
   bool was_called_account_removed_with_info_callback_ = false;
@@ -426,6 +444,12 @@
   const identity::ScopeSet& token_requestor_scopes() {
     return token_requestor_scopes_;
   }
+  const std::string& token_remover_account_id() {
+    return token_remover_account_id_;
+  }
+  const identity::ScopeSet& token_remover_scopes() {
+    return token_remover_scopes_;
+  }
 
  private:
   // IdentityManager::DiagnosticsObserver:
@@ -440,11 +464,19 @@
       std::move(on_access_token_requested_callback_).Run();
   }
 
+  void OnAccessTokenRemovedFromCache(const std::string& account_id,
+                                     const ScopeSet& scopes) override {
+    token_remover_account_id_ = account_id;
+    token_remover_scopes_ = scopes;
+  }
+
   IdentityManager* identity_manager_;
   base::OnceClosure on_access_token_requested_callback_;
   std::string token_requestor_account_id_;
   std::string token_requestor_consumer_id_;
+  std::string token_remover_account_id_;
   identity::ScopeSet token_requestor_scopes_;
+  identity::ScopeSet token_remover_scopes_;
 };
 
 }  // namespace
@@ -576,6 +608,11 @@
     consumer->OnMergeSessionFailure(error);
   }
 
+  void SimulateOAuthMultiloginFinished(GaiaAuthConsumer* consumer,
+                                       const OAuthMultiloginResult& result) {
+    consumer->OnOAuthMultiloginFinished(result);
+  }
+
   network::TestURLLoaderFactory* test_url_loader_factory() {
     return &test_url_loader_factory_;
   }
@@ -1281,6 +1318,14 @@
                                                  access_token);
 
   run_loop.Run();
+
+  // RemoveAccessTokenFromCache should lead to OnAccessTokenRemovedFromCache
+  // from IdentityManager::DiagnosticsObserver.
+  EXPECT_EQ(
+      account_id,
+      identity_manager_diagnostics_observer()->token_remover_account_id());
+  EXPECT_EQ(scopes,
+            identity_manager_diagnostics_observer()->token_remover_scopes());
 }
 
 TEST_F(IdentityManagerTest, CreateAccessTokenFetcher) {
@@ -2076,6 +2121,67 @@
 }
 
 TEST_F(IdentityManagerTest,
+       CallbackSentOnSetAccountsInCookieCompleted_Success) {
+  const char kTestAccountId[] = "account_id";
+  const char kTestAccountId2[] = "account_id2";
+  const std::vector<std::string> account_ids = {kTestAccountId,
+                                                kTestAccountId2};
+
+  // Needed to insert request in the queue.
+  gaia_cookie_manager_service()->SetAccountsInCookie(account_ids,
+                                                     gaia::GaiaSource::kChrome);
+
+  // Sample success cookie response.
+  std::string data =
+      R"()]}'
+      {
+        "status": "OK",
+        "cookies":[
+        {
+            "name":"SID",
+            "value":"vAlUe1",
+            "domain":".google.ru",
+            "path":"/",
+            "isSecure":true,
+            "isHttpOnly":false,
+            "priority":"HIGH",
+            "maxAge":63070000
+          }
+        ]
+      }
+    )";
+  OAuthMultiloginResult result(data);
+
+  SimulateOAuthMultiloginFinished(gaia_cookie_manager_service(), result);
+
+  EXPECT_EQ(identity_manager_observer()
+                ->error_from_set_accounts_in_cookie_completed_callback(),
+            GoogleServiceAuthError::AuthErrorNone());
+}
+
+TEST_F(IdentityManagerTest,
+       CallbackSentOnSetAccountsInCookieCompleted_Failure) {
+  const char kTestAccountId[] = "account_id";
+  const char kTestAccountId2[] = "account_id2";
+  const std::vector<std::string> account_ids = {kTestAccountId,
+                                                kTestAccountId2};
+
+  // Needed to insert request in the queue.
+  gaia_cookie_manager_service()->SetAccountsInCookie(account_ids,
+                                                     gaia::GaiaSource::kChrome);
+
+  // Sample an erroneous response.
+  GoogleServiceAuthError error(GoogleServiceAuthError::SERVICE_ERROR);
+  OAuthMultiloginResult result(error);
+
+  SimulateOAuthMultiloginFinished(gaia_cookie_manager_service(), result);
+
+  EXPECT_EQ(identity_manager_observer()
+                ->error_from_set_accounts_in_cookie_completed_callback(),
+            error);
+}
+
+TEST_F(IdentityManagerTest,
        BatchChangeObserversAreNotifiedOnCredentialsUpdate) {
   signin_manager()->SetAuthenticatedAccountInfo(kTestGaiaId, kTestEmail);
   std::string account_id = signin_manager()->GetAuthenticatedAccountId();
diff --git a/services/identity/public/cpp/identity_test_environment.cc b/services/identity/public/cpp/identity_test_environment.cc
index 6d0f154..a2b025ee 100644
--- a/services/identity/public/cpp/identity_test_environment.cc
+++ b/services/identity/public/cpp/identity_test_environment.cc
@@ -9,6 +9,7 @@
 
 #include "base/run_loop.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "components/signin/core/browser/fake_account_fetcher_service.h"
 #include "components/signin/core/browser/test_signin_client.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "google_apis/gaia/oauth2_access_token_consumer.h"
@@ -36,6 +37,8 @@
 
   AccountTrackerService* account_tracker_service();
 
+  FakeAccountFetcherService* account_fetcher_service();
+
   SigninManagerForTest* signin_manager();
 
   FakeProfileOAuth2TokenService* token_service();
@@ -52,6 +55,7 @@
   sync_preferences::TestingPrefServiceSyncable* raw_pref_service_ = nullptr;
 
   AccountTrackerService account_tracker_;
+  FakeAccountFetcherService account_fetcher_;
   TestSigninClient signin_client_;
   FakeProfileOAuth2TokenService token_service_;
   SigninManagerForTest signin_manager_;
@@ -95,21 +99,34 @@
         &token_service_, &signin_client_);
   }
   AccountTrackerService::RegisterPrefs(pref_service()->registry());
+  AccountFetcherService::RegisterPrefs(pref_service()->registry());
   ProfileOAuth2TokenService::RegisterProfilePrefs(pref_service()->registry());
   SigninManagerBase::RegisterProfilePrefs(pref_service()->registry());
   SigninManagerBase::RegisterPrefs(pref_service()->registry());
 
   account_tracker_.Initialize(pref_service(), base::FilePath());
+  account_fetcher_.Initialize(&signin_client_, &token_service_,
+                              &account_tracker_,
+                              std::make_unique<TestImageDecoder>());
   signin_manager_.Initialize(pref_service());
 }
 
-IdentityManagerDependenciesOwner::~IdentityManagerDependenciesOwner() {}
+IdentityManagerDependenciesOwner::~IdentityManagerDependenciesOwner() {
+  signin_manager_.Shutdown();
+  account_fetcher_.Shutdown();
+  account_tracker_.Shutdown();
+}
 
 AccountTrackerService*
 IdentityManagerDependenciesOwner::account_tracker_service() {
   return &account_tracker_;
 }
 
+FakeAccountFetcherService*
+IdentityManagerDependenciesOwner::account_fetcher_service() {
+  return &account_fetcher_;
+}
+
 SigninManagerForTest* IdentityManagerDependenciesOwner::signin_manager() {
   return &signin_manager_;
 }
@@ -138,6 +155,7 @@
     signin::AccountConsistencyMethod account_consistency)
     : IdentityTestEnvironment(
           /*account_tracker_service=*/nullptr,
+          /*account_fetcher_service=*/nullptr,
           /*token_service=*/nullptr,
           /*signin_manager=*/nullptr,
           /*gaia_cookie_manager_service=*/nullptr,
@@ -150,11 +168,13 @@
 
 IdentityTestEnvironment::IdentityTestEnvironment(
     AccountTrackerService* account_tracker_service,
+    FakeAccountFetcherService* account_fetcher_service,
     FakeProfileOAuth2TokenService* token_service,
     SigninManagerForTest* signin_manager,
     GaiaCookieManagerService* gaia_cookie_manager_service,
     network::TestURLLoaderFactory* test_url_loader_factory)
     : IdentityTestEnvironment(account_tracker_service,
+                              account_fetcher_service,
                               token_service,
                               signin_manager,
                               gaia_cookie_manager_service,
@@ -164,12 +184,14 @@
 
 IdentityTestEnvironment::IdentityTestEnvironment(
     AccountTrackerService* account_tracker_service,
+    FakeAccountFetcherService* account_fetcher_service,
     FakeProfileOAuth2TokenService* token_service,
     SigninManagerForTest* signin_manager,
     GaiaCookieManagerService* gaia_cookie_manager_service,
     IdentityManager* identity_manager,
     network::TestURLLoaderFactory* test_url_loader_factory)
     : IdentityTestEnvironment(account_tracker_service,
+                              account_fetcher_service,
                               token_service,
                               signin_manager,
                               gaia_cookie_manager_service,
@@ -179,6 +201,7 @@
 
 IdentityTestEnvironment::IdentityTestEnvironment(
     AccountTrackerService* account_tracker_service,
+    FakeAccountFetcherService* account_fetcher_service,
     FakeProfileOAuth2TokenService* token_service,
     SigninManagerForTest* signin_manager,
     GaiaCookieManagerService* gaia_cookie_manager_service,
@@ -194,27 +217,39 @@
          "base::test::ScopedTaskEnvironment.";
 
   if (dependencies_owner) {
-    DCHECK(!(account_tracker_service || token_service || signin_manager ||
-             gaia_cookie_manager_service || identity_manager));
+    DCHECK(!(account_tracker_service || account_fetcher_service ||
+             token_service || signin_manager || gaia_cookie_manager_service ||
+             identity_manager));
 
     dependencies_owner_ = std::move(dependencies_owner);
 
     account_tracker_service_ = dependencies_owner_->account_tracker_service();
+    account_fetcher_service_ = dependencies_owner_->account_fetcher_service();
     token_service_ = dependencies_owner_->token_service();
     signin_manager_ = dependencies_owner_->signin_manager();
     gaia_cookie_manager_service_ =
         dependencies_owner_->gaia_cookie_manager_service();
 
   } else {
-    DCHECK(account_tracker_service && token_service && signin_manager &&
-           gaia_cookie_manager_service);
+    DCHECK(account_tracker_service && account_fetcher_service &&
+           token_service && signin_manager && gaia_cookie_manager_service);
 
     account_tracker_service_ = account_tracker_service;
+    account_fetcher_service_ = account_fetcher_service;
     token_service_ = token_service;
     signin_manager_ = signin_manager;
     gaia_cookie_manager_service_ = gaia_cookie_manager_service;
   }
 
+  // TODO(sdefresne): services should be initialized when this version of
+  // the constructor is used. However, this break a large number of tests
+  // (all those that use an IdentityTestEnvironment and its dependencies
+  // as member fields; they should be changed to before the check can be
+  // enabled).
+  // DCHECK(account_tracker_service_->account_fetcher_service())
+  //     << "IdentityTestEnvironment requires its services to be initialized "
+  //     << "before passing them to the constructor.";
+
   if (identity_manager) {
     raw_identity_manager_ = identity_manager;
   } else {
diff --git a/services/identity/public/cpp/identity_test_environment.h b/services/identity/public/cpp/identity_test_environment.h
index 75225f35..0a798cfe9 100644
--- a/services/identity/public/cpp/identity_test_environment.h
+++ b/services/identity/public/cpp/identity_test_environment.h
@@ -8,6 +8,7 @@
 #include "base/optional.h"
 #include "components/signin/core/browser/account_consistency_method.h"
 #include "components/signin/core/browser/account_tracker_service.h"
+#include "components/signin/core/browser/fake_account_fetcher_service.h"
 #include "components/signin/core/browser/fake_gaia_cookie_manager_service.h"
 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
 #include "components/signin/core/browser/fake_signin_manager.h"
@@ -84,6 +85,7 @@
   // completed). NOTE: The passed-in objects must all outlive this object.
   IdentityTestEnvironment(
       AccountTrackerService* account_tracker_service,
+      FakeAccountFetcherService* account_fetcher_service,
       FakeProfileOAuth2TokenService* token_service,
       SigninManagerForTest* signin_manager,
       GaiaCookieManagerService* gaia_cookie_manager_service,
@@ -291,6 +293,7 @@
   // contact blundell@chromium.org.
   IdentityTestEnvironment(
       AccountTrackerService* account_tracker_service,
+      FakeAccountFetcherService* account_fetcher_service,
       FakeProfileOAuth2TokenService* token_service,
       SigninManagerForTest* signin_manager,
       GaiaCookieManagerService* gaia_cookie_manager_service,
@@ -310,6 +313,7 @@
   // supplied dependencies.
   IdentityTestEnvironment(
       AccountTrackerService* account_tracker_service,
+      FakeAccountFetcherService* account_fetcher_service,
       FakeProfileOAuth2TokenService* token_service,
       SigninManagerForTest* signin_manager,
       GaiaCookieManagerService* gaia_cookie_manager_service,
@@ -340,6 +344,7 @@
   // the IdentityTestEnvironment constructor.
   std::unique_ptr<IdentityManagerDependenciesOwner> dependencies_owner_;
   AccountTrackerService* account_tracker_service_ = nullptr;
+  FakeAccountFetcherService* account_fetcher_service_ = nullptr;
   FakeProfileOAuth2TokenService* token_service_ = nullptr;
   SigninManagerForTest* signin_manager_ = nullptr;
   GaiaCookieManagerService* gaia_cookie_manager_service_ = nullptr;
diff --git a/services/viz/manifest.json b/services/viz/manifest.json
index ea14594..d8e34a1 100644
--- a/services/viz/manifest.json
+++ b/services/viz/manifest.json
@@ -16,6 +16,10 @@
       "provides": {
         "viz_host": [
           "viz.mojom.VizMain"
+        ],
+        "ozone": [
+          "ui.ozone.mojom.DeviceCursor",
+          "ui.ozone.mojom.DrmDevice"
         ]
       },
       "requires": {
diff --git a/services/viz/public/cpp/compositing/struct_traits_unittest.cc b/services/viz/public/cpp/compositing/struct_traits_unittest.cc
index e1921d0..d552e6ee 100644
--- a/services/viz/public/cpp/compositing/struct_traits_unittest.cc
+++ b/services/viz/public/cpp/compositing/struct_traits_unittest.cc
@@ -880,7 +880,7 @@
       gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   const gfx::Rect damage_rect(56, 123, 19, 43);
   skcms_Matrix3x3 to_XYZD50 = SkNamedGamut::kXYZ;
-  SkColorSpaceTransferFn fn = {1, 0, 1, 0, 0, 0, 1};
+  skcms_TransferFunction fn = {1, 0, 1, 0, 0, 0, 1};
   gfx::ColorSpace color_space = gfx::ColorSpace::CreateCustom(to_XYZD50, fn);
   const bool has_transparent_background = true;
   const bool cache_render_pass = false;
diff --git a/services/viz/public/interfaces/BUILD.gn b/services/viz/public/interfaces/BUILD.gn
index 0f26b3b..def435b 100644
--- a/services/viz/public/interfaces/BUILD.gn
+++ b/services/viz/public/interfaces/BUILD.gn
@@ -32,13 +32,13 @@
     "compositing/texture_releaser.mojom",
     "compositing/transferable_resource.mojom",
     "compositing/video_detector_observer.mojom",
-    "constants.mojom",
     "hit_test/aggregated_hit_test_region.mojom",
     "hit_test/hit_test_region_list.mojom",
     "hit_test/input_target_client.mojom",
   ]
 
   public_deps = [
+    ":constants",
     "//gpu/ipc/common:interfaces",
     "//mojo/public/mojom/base",
     "//skia/public/interfaces",
@@ -47,3 +47,9 @@
     "//ui/latency/mojo:interfaces",
   ]
 }
+
+mojom("constants") {
+  sources = [
+    "constants.mojom",
+  ]
+}
diff --git a/services/viz/service.cc b/services/viz/service.cc
index 4538413..8eee9420 100644
--- a/services/viz/service.cc
+++ b/services/viz/service.cc
@@ -51,7 +51,13 @@
 void Service::OnBindInterface(const service_manager::BindSourceInfo& info,
                               const std::string& interface_name,
                               mojo::ScopedMessagePipeHandle interface_pipe) {
-  registry_.BindInterface(interface_name, std::move(interface_pipe));
+  if (registry_.TryBindInterface(interface_name, &interface_pipe))
+    return;
+#if defined(USE_OZONE)
+  viz_main_->BindInterface(interface_name, std::move(interface_pipe));
+#else
+  NOTREACHED();
+#endif
 }
 
 void Service::BindVizMainRequest(mojom::VizMainRequest request) {
diff --git a/services/ws/manifest.json b/services/ws/manifest.json
index af91063..552fddc 100644
--- a/services/ws/manifest.json
+++ b/services/ws/manifest.json
@@ -23,7 +23,10 @@
         "arc_manager" : [
           "ws.mojom.ArcGpu"
         ],
-        // Interfaces provided by mus-gpu for mus-ws.
+        // TODO(crbug.com/912221): When viz is run in-process inside window
+        // service, window service should provide ozone interfaces; otherwise,
+        // viz service provides them itself. Remove this when the in-process viz
+        // codepath is removed.
         "ozone": [
           "ui.ozone.mojom.DeviceCursor",
           "ui.ozone.mojom.DrmDevice"
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h
index 11b8dd3..fc09db84 100644
--- a/skia/config/SkUserConfig.h
+++ b/skia/config/SkUserConfig.h
@@ -163,6 +163,12 @@
 
 #define SK_LEGACY_SRGB_STAGE_CHOICE
 
+// We're turning this off indefinitely,
+// until we can figure out some fundamental problems with its approach.
+//
+// See chromium:913223, skia:6886.
+#define SK_DISABLE_DAA
+
 ///////////////////////// Imported from BUILD.gn and skia_common.gypi
 
 /* In some places Skia can use static initializers for global initialization,
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 12f9e073..931678d 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -680,7 +680,7 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/mojo.fyi.network_webview_CTS_test.filter",
-          "--enable-features=NetworkService",
+          "--enable-features=NetworkService,NetworkServiceInProcess",
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices"
         ],
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index f6395aa..25ab1921 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -572,7 +572,7 @@
         },
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/mojo.fyi.network_webview_CTS_test.filter',
-          '--enable-features=NetworkService',
+          '--enable-features=NetworkService,NetworkServiceInProcess',
         ],
         'swarming': {
           'dimension_sets': [
diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
index 95b87461..6c730114 100644
--- a/third_party/blink/public/platform/platform.h
+++ b/third_party/blink/public/platform/platform.h
@@ -683,36 +683,6 @@
 
   virtual const char* GetBrowserServiceName() const { return ""; }
 
-  // This method converts from the supplied DOM code enum to the
-  // embedder's DOM code value for the key pressed. |dom_code| values are
-  // based on the value defined in
-  // ui/events/keycodes/dom4/keycode_converter_data.h.
-  // Returns null string, if DOM code value is not found.
-  virtual WebString DomCodeStringFromEnum(int dom_code) { return WebString(); }
-
-  // This method converts from the suppled DOM code value to the
-  // embedder's DOM code enum for the key pressed. |code_string| is defined in
-  // ui/events/keycodes/dom4/keycode_converter_data.h.
-  // Returns 0, if DOM code enum is not found.
-  virtual int DomEnumFromCodeString(const WebString& code_string) { return 0; }
-
-  // This method converts from the supplied DOM |key| enum to the
-  // corresponding DOM |key| string value for the key pressed. |dom_key| values
-  // are based on the value defined in ui/events/keycodes/dom3/dom_key_data.h.
-  // Returns empty string, if DOM key value is not found.
-  virtual WebString DomKeyStringFromEnum(int dom_key) { return WebString(); }
-
-  // This method converts from the suppled DOM |key| value to the
-  // embedder's DOM |key| enum for the key pressed. |key_string| is defined in
-  // ui/events/keycodes/dom3/dom_key_data.h.
-  // Returns 0 if DOM key enum is not found.
-  virtual int DomKeyEnumFromString(const WebString& key_string) { return 0; }
-
-  // This method returns whether the specified |dom_key| is a modifier key.
-  // |dom_key| values are based on the value defined in
-  // ui/events/keycodes/dom3/dom_key_data.h.
-  virtual bool IsDomKeyForModifier(int dom_key) { return false; }
-
   // WebDatabase --------------------------------------------------------
 
   virtual WebDatabaseObserver* DatabaseObserver() { return nullptr; }
diff --git a/third_party/blink/public/platform/web_rtc_ice_candidate.h b/third_party/blink/public/platform/web_rtc_ice_candidate.h
index b2d1c55e..68d67f92 100644
--- a/third_party/blink/public/platform/web_rtc_ice_candidate.h
+++ b/third_party/blink/public/platform/web_rtc_ice_candidate.h
@@ -32,50 +32,73 @@
 #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_RTC_ICE_CANDIDATE_H_
 
 #include "base/memory/ref_counted.h"
+#include "base/optional.h"
 #include "third_party/blink/public/platform/web_common.h"
-#include "third_party/blink/public/platform/web_private_ptr.h"
 #include "third_party/blink/public/platform/web_string.h"
 
 namespace blink {
 
-class WebRTCICECandidate final : public base::RefCounted<WebRTCICECandidate> {
+class BLINK_PLATFORM_EXPORT WebRTCICECandidate final
+    : public base::RefCounted<WebRTCICECandidate> {
  public:
   REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE();
 
   // TODO(guidou): Support setting sdp_m_line_index to -1 to indicate the
   // absence of a value for sdp_m_line_index. crbug.com/614958
-  static scoped_refptr<WebRTCICECandidate> Create(
-      const WebString& candidate,
-      const WebString& sdp_mid,
-      unsigned short sdp_m_line_index) {
-    return base::AdoptRef(
-        new WebRTCICECandidate(candidate, sdp_mid, sdp_m_line_index));
-  }
+  static scoped_refptr<WebRTCICECandidate> Create(WebString candidate,
+                                                  WebString sdp_mid,
+                                                  uint16_t sdp_m_line_index);
+
+  static scoped_refptr<WebRTCICECandidate> Create(WebString candidate,
+                                                  WebString sdp_mid,
+                                                  uint16_t sdp_m_line_index,
+                                                  WebString username_fragment);
 
   const WebString& Candidate() const { return candidate_; }
   const WebString& SdpMid() const { return sdp_mid_; }
-  unsigned short SdpMLineIndex() const { return sdp_m_line_index_; }
-  void SetCandidate(WebString candidate) { candidate_ = std::move(candidate); }
-  void SetSdpMid(WebString sdp_mid) { sdp_mid_ = std::move(sdp_mid); }
-  void SetSdpMLineIndex(unsigned short sdp_m_line_index) {
-    sdp_m_line_index_ = sdp_m_line_index;
-  }
+  uint16_t SdpMLineIndex() const { return sdp_m_line_index_; }
+  const WebString& Foundation() const { return foundation_; }
+  const WebString& Component() const { return component_; }
+  const base::Optional<uint32_t>& Priority() const { return priority_; }
+  const WebString& Address() const { return address_; }
+  const WebString Protocol() const { return protocol_; }
+  const base::Optional<uint16_t>& Port() const { return port_; }
+  const WebString& Type() const { return type_; }
+  const WebString& TcpType() const { return tcp_type_; }
+  const WebString& RelatedAddress() const { return related_address_; }
+  const base::Optional<uint16_t>& RelatedPort() const { return related_port_; }
+  const WebString& UsernameFragment() const { return username_fragment_; }
 
  private:
   friend class base::RefCounted<WebRTCICECandidate>;
 
-  WebRTCICECandidate(const WebString& candidate,
-                     const WebString& sdp_mid,
-                     unsigned short sdp_m_line_index)
-      : candidate_(candidate),
-        sdp_mid_(sdp_mid),
-        sdp_m_line_index_(sdp_m_line_index) {}
+  WebRTCICECandidate(WebString candidate,
+                     WebString sdp_mid,
+                     uint16_t sdp_m_line_index);
+
+  WebRTCICECandidate(WebString candidate,
+                     WebString sdp_mid,
+                     uint16_t sdp_m_line_index,
+                     WebString username_fragment);
+
+  void PopulateFields(bool use_username_from_candidate);
 
   ~WebRTCICECandidate() = default;
 
   WebString candidate_;
   WebString sdp_mid_;
-  unsigned short sdp_m_line_index_;
+  uint16_t sdp_m_line_index_;
+  WebString foundation_;
+  WebString component_;
+  base::Optional<uint32_t> priority_;
+  WebString address_;
+  WebString protocol_;
+  base::Optional<uint16_t> port_;
+  WebString type_;
+  WebString tcp_type_;
+  WebString related_address_;
+  base::Optional<uint16_t> related_port_;
+  WebString username_fragment_;
 
   DISALLOW_COPY_AND_ASSIGN(WebRTCICECandidate);
 };
diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/web/web_view.h
index f7f0ae5b..01ff6cb 100644
--- a/third_party/blink/public/web/web_view.h
+++ b/third_party/blink/public/web/web_view.h
@@ -450,6 +450,11 @@
   // completed.
   virtual WebWidget* MainFrameWidget() = 0;
 
+  // Portals --------------------------------------------------------------
+
+  // Informs the page that it is inside a portal.
+  virtual void SetInsidePortal(bool inside_portal) = 0;
+
  protected:
   ~WebView() = default;
 };
diff --git a/third_party/blink/renderer/DEPS b/third_party/blink/renderer/DEPS
index 96e4e17..ed183f92 100644
--- a/third_party/blink/renderer/DEPS
+++ b/third_party/blink/renderer/DEPS
@@ -46,6 +46,7 @@
     "+testing/gtest/include/gtest",
     "+third_party/blink/public/platform",
     "+third_party/blink/renderer/platform",
+    "+ui/events/keycodes/dom",
     "+v8",
 
     # We are moving from WTF_MAKE_NONCOPYABLE to DISALLOW_COPY_AND_ASSIGN. Stop
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn
index 784d08e3..de758912 100644
--- a/third_party/blink/renderer/core/BUILD.gn
+++ b/third_party/blink/renderer/core/BUILD.gn
@@ -120,6 +120,7 @@
     "//third_party/ots",
     "//third_party/snappy",
     "//third_party/zlib",
+    "//ui/events:dom_keycode_converter",
     "//ui/gfx/geometry",
     "//ui/native_theme",
     "//url",
diff --git a/third_party/blink/renderer/core/css/style_change_reason.cc b/third_party/blink/renderer/core/css/style_change_reason.cc
index bd196a6c..ccc91f3 100644
--- a/third_party/blink/renderer/core/css/style_change_reason.cc
+++ b/third_party/blink/renderer/core/css/style_change_reason.cc
@@ -34,7 +34,6 @@
 const char kInvisibleChange[] = "InvisibleChange";
 const char kLazyReattach[] = "LazyReattach";
 const char kLinkColorChange[] = "LinkColorChange";
-const char kNodeInserted[] = "NodeInserted";
 const char kPlatformColorChange[] = "PlatformColorChange";
 const char kPolicyViolation[] = "Feature Policy Violation";
 const char kPropertyRegistration[] = "PropertyRegistration";
diff --git a/third_party/blink/renderer/core/css/style_change_reason.h b/third_party/blink/renderer/core/css/style_change_reason.h
index 6144c31..6e0f0fe 100644
--- a/third_party/blink/renderer/core/css/style_change_reason.h
+++ b/third_party/blink/renderer/core/css/style_change_reason.h
@@ -35,7 +35,6 @@
 extern const char kLanguage[];
 extern const char kLazyReattach[];
 extern const char kLinkColorChange[];
-extern const char kNodeInserted[];
 extern const char kPlatformColorChange[];
 extern const char kPolicyViolation[];
 extern const char kPropertyRegistration[];
diff --git a/third_party/blink/renderer/core/dom/container_node.cc b/third_party/blink/renderer/core/dom/container_node.cc
index 075945f..724be268 100644
--- a/third_party/blink/renderer/core/dom/container_node.cc
+++ b/third_party/blink/renderer/core/dom/container_node.cc
@@ -990,9 +990,9 @@
   }
   if (!change.IsChildInsertion())
     return;
-  if (!isConnected())
+  if (!InActiveDocument())
     return;
-  if (!IsDocumentNode() && !IsShadowRoot() && !GetComputedStyle()) {
+  if (IsElementNode() && !GetComputedStyle()) {
     // There is no need to mark for style recalc if the parent element does not
     // Already have a ComputedStyle. For instance if we insert nodes into a
     // display:none subtree. If this ContainerNode gets a ComputedStyle during
@@ -1000,13 +1000,9 @@
     // the ComputedStyle goes from null to non-null.
     return;
   }
-  if (change.sibling_changed->getNodeType() == Node::kCommentNode)
-    return;
-  if (change.sibling_changed->getNodeType() == Node::kProcessingInstructionNode)
-    return;
-  change.sibling_changed->SetNeedsStyleRecalc(
-      kLocalStyleChange,
-      StyleChangeReasonForTracing::Create(style_change_reason::kNodeInserted));
+  Node* inserted_node = change.sibling_changed;
+  if (inserted_node->IsContainerNode() || inserted_node->IsTextNode())
+    inserted_node->SetStyleChangeOnInsertion();
 }
 
 void ContainerNode::CloneChildNodesFrom(const ContainerNode& node) {
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc
index 286380bf..e840bb7 100644
--- a/third_party/blink/renderer/core/dom/node.cc
+++ b/third_party/blink/renderer/core/dom/node.cc
@@ -1093,10 +1093,6 @@
   GetDocument().ScheduleLayoutTreeUpdateIfNeeded();
 }
 
-inline void Node::SetStyleChange(StyleChangeType change_type) {
-  node_flags_ = (node_flags_ & ~kStyleChangeMask) | change_type;
-}
-
 void Node::MarkAncestorsWithChildNeedsStyleRecalc() {
   ContainerNode* ancestor = ParentOrShadowHostNode();
   bool parent_dirty = ancestor && ancestor->NeedsStyleRecalc();
diff --git a/third_party/blink/renderer/core/dom/node.h b/third_party/blink/renderer/core/dom/node.h
index 7ac3c03..e602421 100644
--- a/third_party/blink/renderer/core/dom/node.h
+++ b/third_party/blink/renderer/core/dom/node.h
@@ -452,6 +452,17 @@
   // Propagates a dirty bit breadcrumb for this element up the ancestor chain.
   void MarkAncestorsWithChildNeedsStyleRecalc();
 
+  // Nodes which are not connected are style clean. Mark them for style recalc
+  // when inserting them into a document. This method was added as a light-
+  // weight alternative to SetNeedsStyleRecalc because using that method caused
+  // a micro-benchmark regression (https://crbug.com/926343).
+  void SetStyleChangeOnInsertion() {
+    DCHECK(isConnected());
+    if (!NeedsStyleRecalc())
+      SetStyleChange(kLocalStyleChange);
+    MarkAncestorsWithChildNeedsStyleRecalc();
+  }
+
   bool NeedsReattachLayoutTree() const {
     return GetFlag(kNeedsReattachLayoutTree);
   }
@@ -1000,7 +1011,9 @@
   void UpdateDistributionInternal();
   void RecalcDistribution();
 
-  void SetStyleChange(StyleChangeType);
+  void SetStyleChange(StyleChangeType change_type) {
+    node_flags_ = (node_flags_ & ~kStyleChangeMask) | change_type;
+  }
 
   virtual const ComputedStyle* VirtualEnsureComputedStyle(
       PseudoId = kPseudoIdNone);
diff --git a/third_party/blink/renderer/core/editing/keyboard_test.cc b/third_party/blink/renderer/core/editing/keyboard_test.cc
index d74988d..a336c00 100644
--- a/third_party/blink/renderer/core/editing/keyboard_test.cc
+++ b/third_party/blink/renderer/core/editing/keyboard_test.cc
@@ -41,6 +41,7 @@
 #include "third_party/blink/renderer/core/events/keyboard_event.h"
 #include "third_party/blink/renderer/core/frame/settings.h"
 #include "third_party/blink/renderer/platform/keyboard_codes.h"
+#include "ui/events/keycodes/dom/keycode_converter.h"
 
 namespace blink {
 
@@ -65,7 +66,9 @@
                            WebInputEvent::GetStaticTimeStampForTests());
     event.text[0] = key_code;
     event.windows_key_code = key_code;
-    event.dom_key = Platform::Current()->DomKeyEnumFromString(key);
+    CString key_utf8 = key.Utf8();
+    event.dom_key = ui::KeycodeConverter::KeyStringToDomKey(
+        std::string(key_utf8.data(), key_utf8.length()));
     return event;
   }
 
diff --git a/third_party/blink/renderer/core/events/event_target_names.json5 b/third_party/blink/renderer/core/events/event_target_names.json5
index e9fdcfb..6b3b343e 100644
--- a/third_party/blink/renderer/core/events/event_target_names.json5
+++ b/third_party/blink/renderer/core/events/event_target_names.json5
@@ -30,6 +30,7 @@
     "OffscreenCanvas",
     "EventSource",
     "Performance",
+    "PortalHost",
     {
       name: "VisualViewport",
       ImplementedAs: "DOMVisualViewport",
diff --git a/third_party/blink/renderer/core/events/keyboard_event.cc b/third_party/blink/renderer/core/events/keyboard_event.cc
index 70610af..f7463bf 100644
--- a/third_party/blink/renderer/core/events/keyboard_event.cc
+++ b/third_party/blink/renderer/core/events/keyboard_event.cc
@@ -33,6 +33,7 @@
 #include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/windows_keyboard_codes.h"
+#include "ui/events/keycodes/dom/keycode_converter.h"
 
 namespace blink {
 
@@ -76,6 +77,10 @@
   return local_frame->GetInputMethodController().HasComposition();
 }
 
+static String FromUTF8(const std::string& s) {
+  return String::FromUTF8(s.data(), s.length());
+}
+
 }  // namespace
 
 KeyboardEvent* KeyboardEvent::Create(ScriptState* script_state,
@@ -107,8 +112,10 @@
               : nullptr),
       key_event_(std::make_unique<WebKeyboardEvent>(key)),
       // TODO(crbug.com/482880): Fix this initialization to lazy initialization.
-      code_(Platform::Current()->DomCodeStringFromEnum(key.dom_code)),
-      key_(Platform::Current()->DomKeyStringFromEnum(key.dom_key)),
+      code_(FromUTF8(ui::KeycodeConverter::DomCodeToCodeString(
+          static_cast<ui::DomCode>(key.dom_code)))),
+      key_(FromUTF8(ui::KeycodeConverter::DomKeyToKeyString(
+          static_cast<ui::DomKey>(key.dom_key)))),
       location_(GetKeyLocationCode(key)),
       is_composing_(HasCurrentComposition(dom_window)) {
   InitLocationModifiers(location_);
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc
index abc88263..60ab7e40 100644
--- a/third_party/blink/renderer/core/exported/web_frame_test.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -162,6 +162,7 @@
 #include "third_party/blink/renderer/platform/weborigin/scheme_registry.h"
 #include "third_party/blink/renderer/platform/weborigin/security_origin.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
+#include "ui/events/keycodes/dom/dom_key.h"
 #include "v8/include/v8.h"
 
 using blink::url_test_helpers::ToKURL;
@@ -4631,8 +4632,8 @@
                             WebInputEvent::GetStaticTimeStampForTests());
   WebKeyboardEvent tab_up(WebInputEvent::kKeyUp, WebInputEvent::kNoModifiers,
                           WebInputEvent::GetStaticTimeStampForTests());
-  tab_down.dom_key = Platform::Current()->DomKeyEnumFromString("\t");
-  tab_up.dom_key = Platform::Current()->DomKeyEnumFromString("\t");
+  tab_down.dom_key = ui::DomKey::TAB;
+  tab_up.dom_key = ui::DomKey::TAB;
   tab_down.windows_key_code = VKEY_TAB;
   tab_up.windows_key_code = VKEY_TAB;
 
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index e8c4fe4..6009bd1e 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -2936,6 +2936,10 @@
   }
 }
 
+void WebViewImpl::SetInsidePortal(bool inside_portal) {
+  GetPage()->SetInsidePortal(inside_portal);
+}
+
 void WebViewImpl::SetIsActive(bool active) {
   if (GetPage())
     GetPage()->GetFocusController().SetActive(active);
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h
index dc2442e..7f8031ee 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.h
+++ b/third_party/blink/renderer/core/exported/web_view_impl.h
@@ -197,6 +197,7 @@
   void ClearBackgroundColorOverride() override;
   void SetBaseBackgroundColorOverride(SkColor) override;
   void ClearBaseBackgroundColorOverride() override;
+  void SetInsidePortal(bool inside_portal) override;
 
   void DidUpdateFullscreenSize();
 
diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc
index 7c4e37f..2d84f0d 100644
--- a/third_party/blink/renderer/core/exported/web_view_test.cc
+++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -131,6 +131,7 @@
 #include "third_party/blink/renderer/platform/testing/wtf/scoped_mock_clock.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkCanvas.h"
+#include "ui/events/keycodes/dom/dom_key.h"
 #include "v8/include/v8.h"
 
 #if defined(OS_MACOSX)
@@ -3354,7 +3355,7 @@
     WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                                WebInputEvent::kNoModifiers,
                                WebInputEvent::GetStaticTimeStampForTests());
-    key_event.dom_key = Platform::Current()->DomKeyEnumFromString("\b");
+    key_event.dom_key = ui::DomKey::BACKSPACE;
     key_event.windows_key_code = VKEY_BACK;
     web_view->MainFrameWidget()->HandleInputEvent(
         WebCoalescedInputEvent(key_event));
@@ -3565,7 +3566,7 @@
   WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                              WebInputEvent::kNoModifiers,
                              WebInputEvent::GetStaticTimeStampForTests());
-  key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event.dom_key = ui::DomKey::FromCharacter(' ');
   key_event.windows_key_code = VKEY_SPACE;
   web_view->MainFrameWidget()->HandleInputEvent(
       WebCoalescedInputEvent(key_event));
@@ -4020,7 +4021,7 @@
   WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                              WebInputEvent::kNoModifiers,
                              WebInputEvent::GetStaticTimeStampForTests());
-  key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event.dom_key = ui::DomKey::FromCharacter(' ');
   key_event.windows_key_code = VKEY_SPACE;
   web_view->MainFrameWidget()->HandleInputEvent(
       WebCoalescedInputEvent(key_event));
@@ -5085,7 +5086,7 @@
   WebKeyboardEvent key_event1(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event1.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event1.dom_key = ui::DomKey::FromCharacter(' ');
   key_event1.windows_key_code = VKEY_SPACE;
   key_event1.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(50));
@@ -5102,7 +5103,7 @@
   WebKeyboardEvent key_event2(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event2.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event2.dom_key = ui::DomKey::FromCharacter(' ');
   key_event2.windows_key_code = VKEY_SPACE;
   clock.Advance(TimeDelta::FromMilliseconds(60));
   key_event2.SetTimeStamp(CurrentTimeTicks());
@@ -5141,7 +5142,7 @@
   WebKeyboardEvent key_event1(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event1.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event1.dom_key = ui::DomKey::FromCharacter(' ');
   key_event1.windows_key_code = VKEY_SPACE;
   key_event1.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(50));
@@ -5153,7 +5154,7 @@
   WebKeyboardEvent key_event2(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event2.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event2.dom_key = ui::DomKey::FromCharacter(' ');
   key_event2.windows_key_code = VKEY_SPACE;
   key_event2.SetTimeStamp(longest_input_timestamp);
   clock.Advance(TimeDelta::FromMilliseconds(100));
@@ -5163,7 +5164,7 @@
   WebKeyboardEvent key_event3(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event3.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event3.dom_key = ui::DomKey::FromCharacter(' ');
   key_event3.windows_key_code = VKEY_SPACE;
   key_event3.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(70));
@@ -5193,7 +5194,7 @@
   WebKeyboardEvent key_event1(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event1.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event1.dom_key = ui::DomKey::FromCharacter(' ');
   key_event1.windows_key_code = VKEY_SPACE;
   key_event1.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(50));
@@ -5203,7 +5204,7 @@
   WebKeyboardEvent key_event2(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event2.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event2.dom_key = ui::DomKey::FromCharacter(' ');
   key_event2.windows_key_code = VKEY_SPACE;
   key_event2.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(50));
@@ -5213,7 +5214,7 @@
   WebKeyboardEvent key_event3(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event3.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event3.dom_key = ui::DomKey::FromCharacter(' ');
   key_event3.windows_key_code = VKEY_SPACE;
   key_event3.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(70));
@@ -5263,7 +5264,7 @@
   WebKeyboardEvent key_event1(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event1.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event1.dom_key = ui::DomKey::FromCharacter(' ');
   key_event1.windows_key_code = VKEY_SPACE;
   TimeTicks key_event1_time = CurrentTimeTicks();
   key_event1.SetTimeStamp(key_event1_time);
@@ -5274,7 +5275,7 @@
   WebKeyboardEvent key_event2(WebInputEvent::kRawKeyDown,
                               WebInputEvent::kNoModifiers,
                               WebInputEvent::GetStaticTimeStampForTests());
-  key_event2.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event2.dom_key = ui::DomKey::FromCharacter(' ');
   key_event2.windows_key_code = VKEY_SPACE;
   key_event2.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(100));
@@ -5317,7 +5318,7 @@
   WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                              WebInputEvent::kNoModifiers,
                              WebInputEvent::GetStaticTimeStampForTests());
-  key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event.dom_key = ui::DomKey::FromCharacter(' ');
   key_event.windows_key_code = VKEY_SPACE;
   key_event.SetTimeStamp(CurrentTimeTicks());
   clock.Advance(TimeDelta::FromMilliseconds(100));
@@ -5359,7 +5360,7 @@
   WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                              WebInputEvent::kNoModifiers,
                              WebInputEvent::GetStaticTimeStampForTests());
-  key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event.dom_key = ui::DomKey::FromCharacter(' ');
   key_event.windows_key_code = VKEY_SPACE;
   TimeTicks key_event_time = CurrentTimeTicks();
   key_event.SetTimeStamp(key_event_time);
@@ -5645,7 +5646,7 @@
   WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                              WebInputEvent::kNoModifiers,
                              WebInputEvent::GetStaticTimeStampForTests());
-  key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event.dom_key = ui::DomKey::FromCharacter(' ');
   key_event.windows_key_code = VKEY_SPACE;
   key_event.SetTimeStamp(CurrentTimeTicks());
 
@@ -5691,7 +5692,7 @@
   WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown,
                              WebInputEvent::kNoModifiers,
                              WebInputEvent::GetStaticTimeStampForTests());
-  key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" ");
+  key_event.dom_key = ui::DomKey::FromCharacter(' ');
   key_event.windows_key_code = VKEY_SPACE;
   key_event.SetTimeStamp(CurrentTimeTicks());
 
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index 3d353b2..327d0f1c 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -2517,6 +2517,7 @@
 }
 
 void WebLocalFrameImpl::OnPortalActivated() {
+  GetFrame()->GetPage()->SetInsidePortal(false);
   PortalActivateEvent* event = PortalActivateEvent::Create();
   GetFrame()->DomWindow()->DispatchEvent(*event);
 }
diff --git a/third_party/blink/renderer/core/html/BUILD.gn b/third_party/blink/renderer/core/html/BUILD.gn
index dc15596..b243ffdd 100644
--- a/third_party/blink/renderer/core/html/BUILD.gn
+++ b/third_party/blink/renderer/core/html/BUILD.gn
@@ -503,6 +503,7 @@
     "portal/dom_window_portal_host.h",
     "portal/html_portal_element.cc",
     "portal/html_portal_element.h",
+    "portal/portal_host.cc",
     "portal/portal_host.h",
     "rel_list.cc",
     "rel_list.h",
diff --git a/third_party/blink/renderer/core/html/portal/dom_window_portal_host.cc b/third_party/blink/renderer/core/html/portal/dom_window_portal_host.cc
index 85e3cc5..b86b3154 100644
--- a/third_party/blink/renderer/core/html/portal/dom_window_portal_host.cc
+++ b/third_party/blink/renderer/core/html/portal/dom_window_portal_host.cc
@@ -4,11 +4,21 @@
 
 #include "third_party/blink/renderer/core/html/portal/dom_window_portal_host.h"
 
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
+#include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/core/html/portal/portal_host.h"
+#include "third_party/blink/renderer/core/page/page.h"
+
 namespace blink {
 
 // static
 PortalHost* DOMWindowPortalHost::portalHost(LocalDOMWindow& window) {
-  return nullptr;
+  // The portal host is only exposed in the main frame of a page
+  // embedded in a portal.
+  if (!window.GetFrame() || !window.GetFrame()->IsMainFrame() ||
+      !window.GetFrame()->GetPage()->InsidePortal())
+    return nullptr;
+  return &PortalHost::From(window);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/portal/portal_host.cc b/third_party/blink/renderer/core/html/portal/portal_host.cc
new file mode 100644
index 0000000..9e19602
--- /dev/null
+++ b/third_party/blink/renderer/core/html/portal/portal_host.cc
@@ -0,0 +1,44 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/html/portal/portal_host.h"
+
+#include "third_party/blink/renderer/core/dom/document.h"
+#include "third_party/blink/renderer/core/execution_context/execution_context.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
+#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
+
+namespace blink {
+
+PortalHost::PortalHost(LocalDOMWindow& window)
+    : Supplement<LocalDOMWindow>(window) {}
+
+void PortalHost::Trace(Visitor* visitor) {
+  EventTargetWithInlineData::Trace(visitor);
+  Supplement<LocalDOMWindow>::Trace(visitor);
+}
+
+// static
+const char PortalHost::kSupplementName[] = "PortalHost";
+
+// static
+PortalHost& PortalHost::From(LocalDOMWindow& window) {
+  PortalHost* portal_host =
+      Supplement<LocalDOMWindow>::From<PortalHost>(window);
+  if (!portal_host) {
+    portal_host = MakeGarbageCollected<PortalHost>(window);
+    Supplement<LocalDOMWindow>::ProvideTo<PortalHost>(window, portal_host);
+  }
+  return *portal_host;
+}
+
+const AtomicString& PortalHost::InterfaceName() const {
+  return event_target_names::kPortalHost;
+}
+
+ExecutionContext* PortalHost::GetExecutionContext() const {
+  return GetSupplementable()->document();
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/html/portal/portal_host.h b/third_party/blink/renderer/core/html/portal/portal_host.h
index f4066072..fc0ed222 100644
--- a/third_party/blink/renderer/core/html/portal/portal_host.h
+++ b/third_party/blink/renderer/core/html/portal/portal_host.h
@@ -7,11 +7,29 @@
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/events/event_target.h"
+#include "third_party/blink/renderer/platform/supplementable.h"
 
 namespace blink {
 
-class CORE_EXPORT PortalHost : public EventTargetWithInlineData {
+class ExecutionContext;
+class LocalDOMWindow;
+
+class CORE_EXPORT PortalHost : public EventTargetWithInlineData,
+                               public Supplement<LocalDOMWindow> {
   DEFINE_WRAPPERTYPEINFO();
+  USING_GARBAGE_COLLECTED_MIXIN(PortalHost);
+
+ public:
+  explicit PortalHost(LocalDOMWindow& window);
+
+  void Trace(Visitor* visitor) override;
+
+  static const char kSupplementName[];
+  static PortalHost& From(LocalDOMWindow& window);
+
+  // EventTarget overrides
+  const AtomicString& InterfaceName() const override;
+  ExecutionContext* GetExecutionContext() const override;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/input/keyboard_event_manager.cc b/third_party/blink/renderer/core/input/keyboard_event_manager.cc
index 16dc5458..31759bd 100644
--- a/third_party/blink/renderer/core/input/keyboard_event_manager.cc
+++ b/third_party/blink/renderer/core/input/keyboard_event_manager.cc
@@ -29,6 +29,7 @@
 #include "third_party/blink/renderer/core/page/spatial_navigation_controller.h"
 #include "third_party/blink/renderer/platform/keyboard_codes.h"
 #include "third_party/blink/renderer/platform/windows_keyboard_codes.h"
+#include "ui/events/keycodes/dom/keycode_converter.h"
 
 #if defined(OS_WIN)
 #include <windows.h>
@@ -179,8 +180,8 @@
   // To be meaningful enough to indicate user intention, a keyboard event needs
   // - not to be a modifier event
   // https://crbug.com/709765
-  bool is_modifier =
-      Platform::Current()->IsDomKeyForModifier(initial_key_event.dom_key);
+  bool is_modifier = ui::KeycodeConverter::IsDomKeyForModifier(
+      static_cast<ui::DomKey>(initial_key_event.dom_key));
 
   std::unique_ptr<UserGestureIndicator> gesture_indicator;
   if (!is_modifier)
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
index ff57969..7058be4 100644
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -853,6 +853,14 @@
   return autoplay_flags_;
 }
 
+void Page::SetInsidePortal(bool inside_portal) {
+  inside_portal_ = inside_portal;
+}
+
+bool Page::InsidePortal() const {
+  return inside_portal_;
+}
+
 Page::PageClients::PageClients() : chrome_client(nullptr) {}
 
 Page::PageClients::~PageClients() = default;
diff --git a/third_party/blink/renderer/core/page/page.h b/third_party/blink/renderer/core/page/page.h
index 616470be..f696f06 100644
--- a/third_party/blink/renderer/core/page/page.h
+++ b/third_party/blink/renderer/core/page/page.h
@@ -310,6 +310,9 @@
 
   int32_t AutoplayFlags() const;
 
+  void SetInsidePortal(bool inside_portal);
+  bool InsidePortal() const;
+
  private:
   friend class ScopedPagePauser;
 
@@ -400,6 +403,9 @@
 
   int32_t autoplay_flags_;
 
+  // Accessed by frames to determine whether to expose the PortalHost object.
+  bool inside_portal_ = false;
+
   DISALLOW_COPY_AND_ASSIGN(Page);
 };
 
diff --git a/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc b/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc
index 15d92a8..769b4271 100644
--- a/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc
+++ b/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc
@@ -32,7 +32,7 @@
 
   bool is_neuterable = true;
   for (const auto& buffer_handle : buffer_handles)
-    is_neuterable &= buffer_handle->IsNeuterable();
+    is_neuterable &= buffer_handle->IsDetachable();
 
   return is_neuterable;
 }
diff --git a/third_party/blink/renderer/devtools/front_end/common/ParsedURL.js b/third_party/blink/renderer/devtools/front_end/common/ParsedURL.js
index 92599f5..2cd4637 100644
--- a/third_party/blink/renderer/devtools/front_end/common/ParsedURL.js
+++ b/third_party/blink/renderer/devtools/front_end/common/ParsedURL.js
@@ -46,10 +46,17 @@
     this.folderPathComponents = '';
     this.lastPathComponent = '';
 
-    const match = url.match(Common.ParsedURL._urlRegex());
+    const isBlobUrl = this.url.startsWith('blob:');
+    const urlToMatch = isBlobUrl ? url.substring(5) : url;
+    const match = urlToMatch.match(Common.ParsedURL._urlRegex());
     if (match) {
       this.isValid = true;
-      this.scheme = match[2].toLowerCase();
+      if (isBlobUrl) {
+        this._blobInnerScheme = match[2].toLowerCase();
+        this.scheme = 'blob';
+      } else {
+        this.scheme = match[2].toLowerCase();
+      }
       this.user = match[3];
       this.host = match[4];
       this.port = match[5];
@@ -61,6 +68,10 @@
         this.scheme = 'data';
         return;
       }
+      if (this.url.startsWith('blob:')) {
+        this.scheme = 'blob';
+        return;
+      }
       if (this.url === 'about:blank') {
         this.scheme = 'about';
         return;
@@ -296,6 +307,8 @@
 
     if (this.isDataURL())
       return this.dataURLDisplayName();
+    if (this.isBlobURL())
+      return this.url;
     if (this.isAboutBlank())
       return this.url;
 
@@ -334,6 +347,13 @@
   }
 
   /**
+   * @return {boolean}
+   */
+  isBlobURL() {
+    return this.url.startsWith('blob:');
+  }
+
+  /**
    * @return {string}
    */
   lastPathComponentWithFragment() {
@@ -355,7 +375,8 @@
   securityOrigin() {
     if (this.isDataURL())
       return 'data:';
-    return this.scheme + '://' + this.domain();
+    const scheme = this.isBlobURL() ? this._blobInnerScheme : this.scheme;
+    return scheme + '://' + this.domain();
   }
 
   /**
diff --git a/third_party/blink/renderer/devtools/front_end/network/NetworkLogView.js b/third_party/blink/renderer/devtools/front_end/network/NetworkLogView.js
index 045ed1e..14e36e1 100644
--- a/third_party/blink/renderer/devtools/front_end/network/NetworkLogView.js
+++ b/third_party/blink/renderer/devtools/front_end/network/NetworkLogView.js
@@ -116,6 +116,7 @@
     this._dataURLFilterUI = new UI.CheckboxFilterUI(
         'hide-data-url', Common.UIString('Hide data URLs'), true, this._networkHideDataURLSetting);
     this._dataURLFilterUI.addEventListener(UI.FilterUI.Events.FilterChanged, this._filterChanged.bind(this), this);
+    this._dataURLFilterUI.element().title = ls`Hides data: and blob: URLs`;
     filterBar.addFilter(this._dataURLFilterUI);
 
     const filterItems =
@@ -1351,7 +1352,7 @@
     const categoryName = request.resourceType().category().title;
     if (!this._resourceCategoryFilterUI.accept(categoryName))
       return false;
-    if (this._dataURLFilterUI.checked() && request.parsedURL.isDataURL())
+    if (this._dataURLFilterUI.checked() && (request.parsedURL.isDataURL() || request.parsedURL.isBlobURL()))
       return false;
     if (request.statusText === 'Service Worker Fallback Required')
       return false;
diff --git a/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js b/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
index b5e4223..e779ca5 100644
--- a/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
+++ b/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
@@ -553,6 +553,9 @@
     if (this._parsedURL.isDataURL()) {
       this._name = this._parsedURL.dataURLDisplayName();
       this._path = '';
+    } else if (this._parsedURL.isBlobURL()) {
+      this._name = this._parsedURL.url;
+      this._path = '';
     } else if (this._parsedURL.isAboutBlank()) {
       this._name = this._parsedURL.url;
       this._path = '';
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index a989f53d..0ff9e44c 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -468,9 +468,8 @@
   if (GetNode()->HasTagName(kSectionTag))
     return ax::mojom::Role::kRegion;
 
-  // TODO(accessibility): http://crbug.com/873118
   if (GetNode()->HasTagName(kAddressTag))
-    return ax::mojom::Role::kContentInfo;
+    return ax::mojom::Role::kGenericContainer;
 
   if (IsHTMLDialogElement(*GetNode()))
     return ax::mojom::Role::kDialog;
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_request.cc b/third_party/blink/renderer/modules/mediastream/user_media_request.cc
index 9b8a91b..f8b3478 100644
--- a/third_party/blink/renderer/modules/mediastream/user_media_request.cc
+++ b/third_party/blink/renderer/modules/mediastream/user_media_request.cc
@@ -367,8 +367,9 @@
     return nullptr;
 
   if (media_type == WebUserMediaRequest::MediaType::kDisplayMedia) {
-    // https://w3c.github.io/mediacapture-screen-share/#navigator-additions
-    // 5.1 Navigator Additions
+    // https://w3c.github.io/mediacapture-screen-share/#mediadevices-additions
+    // MediaDevices Additions
+    // The user agent MUST reject audio-only requests.
     // 1. Let constraints be the method's first argument.
     // 2. For each member present in constraints whose value, value, is a
     // dictionary, run the following steps:
@@ -396,6 +397,11 @@
       error_state.ThrowTypeError("exact constraints are not supported");
       return nullptr;
     }
+    if (!options->audio().IsNull() && options->audio().GetAsBoolean() &&
+        (options->video().IsNull() || !options->video().GetAsBoolean())) {
+      error_state.ThrowTypeError("Audio only requests are not supported");
+      return nullptr;
+    }
     if (audio.IsNull() && video.IsNull()) {
       video = ParseOptions(context,
                            BooleanOrMediaTrackConstraints::FromBoolean(true),
@@ -403,13 +409,6 @@
       if (error_state.HadException())
         return nullptr;
     }
-
-    // TODO(emircan): Enable when audio capture is actually supported, see
-    // https://crbug.com/896333.
-    if (!options->audio().IsNull() && options->audio().GetAsBoolean()) {
-      error_state.ThrowTypeError("Audio capture is not supported");
-      return nullptr;
-    }
   }
 
   if (audio.IsNull() && video.IsNull()) {
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc
index d317222..d380eb2 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc
@@ -51,20 +51,11 @@
     return nullptr;
   }
 
-  if (!candidate_init->hasCandidate() ||
-      !candidate_init->candidate().length()) {
-    exception_state.ThrowDOMException(
-        DOMExceptionCode::kTypeMismatchError,
-        ExceptionMessages::IncorrectPropertyType(
-            "candidate", "is not a string, or is empty."));
-    return nullptr;
-  }
-
   String sdp_mid;
   if (candidate_init->hasSdpMid())
     sdp_mid = candidate_init->sdpMid();
 
-  // TODO(guidou): Change default value to -1. crbug.com/614958.
+  // TODO(crbug.com/614958): Change default value to -1.
   uint16_t sdp_m_line_index = 0;
   if (candidate_init->hasSdpMLineIndex()) {
     sdp_m_line_index = candidate_init->sdpMLineIndex();
@@ -74,7 +65,8 @@
   }
 
   return MakeGarbageCollected<RTCIceCandidate>(WebRTCICECandidate::Create(
-      candidate_init->candidate(), sdp_mid, sdp_m_line_index));
+      candidate_init->candidate(), sdp_mid, sdp_m_line_index,
+      candidate_init->usernameFragment()));
 }
 
 RTCIceCandidate* RTCIceCandidate::Create(
@@ -94,7 +86,9 @@
   return web_candidate_->SdpMid();
 }
 
-uint16_t RTCIceCandidate::sdpMLineIndex() const {
+uint16_t RTCIceCandidate::sdpMLineIndex(bool& is_null) const {
+  // TODO(crbug.com/614958): Handle case when SdpMLineIndex has no value.
+  is_null = false;
   return web_candidate_->SdpMLineIndex();
 }
 
@@ -102,16 +96,51 @@
   return web_candidate_;
 }
 
-void RTCIceCandidate::setCandidate(String candidate) {
-  web_candidate_->SetCandidate(candidate);
+String RTCIceCandidate::foundation() const {
+  return web_candidate_->Foundation();
 }
 
-void RTCIceCandidate::setSdpMid(String sdp_mid) {
-  web_candidate_->SetSdpMid(sdp_mid);
+String RTCIceCandidate::component() const {
+  return web_candidate_->Component();
 }
 
-void RTCIceCandidate::setSdpMLineIndex(uint16_t sdp_m_line_index) {
-  web_candidate_->SetSdpMLineIndex(sdp_m_line_index);
+uint32_t RTCIceCandidate::priority(bool& is_null) const {
+  is_null = !web_candidate_->Priority().has_value();
+  return is_null ? 0 : *web_candidate_->Priority();
+}
+
+String RTCIceCandidate::address() const {
+  return web_candidate_->Address();
+}
+
+String RTCIceCandidate::protocol() const {
+  return web_candidate_->Protocol();
+}
+
+uint16_t RTCIceCandidate::port(bool& is_null) const {
+  is_null = !web_candidate_->Port().has_value();
+  return is_null ? 0 : *web_candidate_->Port();
+}
+
+String RTCIceCandidate::type() const {
+  return web_candidate_->Type();
+}
+
+String RTCIceCandidate::tcpType() const {
+  return web_candidate_->TcpType();
+}
+
+String RTCIceCandidate::relatedAddress() const {
+  return web_candidate_->RelatedAddress();
+}
+
+uint16_t RTCIceCandidate::relatedPort(bool& is_null) const {
+  is_null = !web_candidate_->RelatedPort().has_value();
+  return is_null ? 0 : *web_candidate_->RelatedPort();
+}
+
+String RTCIceCandidate::usernameFragment() const {
+  return web_candidate_->UsernameFragment();
 }
 
 ScriptValue RTCIceCandidate::toJSONForBinding(ScriptState* script_state) {
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h
index 946706e..1f82863 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h
@@ -56,11 +56,19 @@
   explicit RTCIceCandidate(scoped_refptr<WebRTCICECandidate>);
 
   String candidate() const;
-  void setCandidate(String);
   String sdpMid() const;
-  void setSdpMid(String);
-  uint16_t sdpMLineIndex() const;
-  void setSdpMLineIndex(uint16_t);
+  uint16_t sdpMLineIndex(bool& is_null) const;
+  String foundation() const;
+  String component() const;
+  uint32_t priority(bool& is_null) const;
+  String address() const;
+  String protocol() const;
+  uint16_t port(bool& is_null) const;
+  String type() const;
+  String tcpType() const;
+  String relatedAddress() const;
+  uint16_t relatedPort(bool& is_null) const;
+  String usernameFragment() const;
 
   ScriptValue toJSONForBinding(ScriptState*);
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl
index b98ff23..cbe411b5 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl
@@ -28,6 +28,33 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+// https://w3c.github.io/webrtc-pc/#dom-rtcicecomponent
+enum RTCIceComponent {
+    "rtp",
+    "rtcp"
+};
+
+// https://w3c.github.io/webrtc-pc/#rtciceprotocol-enum
+enum RTCIceProtocol {
+    "udp",
+    "tcp"
+};
+
+// https://w3c.github.io/webrtc-pc/#rtcicecandidatetype-enum
+enum RTCIceCandidateType {
+    "host",
+    "srflx",
+    "prflx",
+    "relay"
+};
+
+// https://w3c.github.io/webrtc-pc/#rtcicetcpcandidatetype-enum
+enum RTCIceTcpCandidateType {
+    "active",
+    "passive",
+    "so"
+};
+
 // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
 [
     Constructor(optional RTCIceCandidateInit candidateInitDict),
@@ -35,9 +62,20 @@
     RaisesException=Constructor,
     Exposed=Window
 ] interface RTCIceCandidate {
-    attribute DOMString candidate;
-    attribute DOMString sdpMid;
-    attribute unsigned short sdpMLineIndex;
+    readonly attribute DOMString candidate;
+    readonly attribute DOMString? sdpMid;
+    readonly attribute unsigned short? sdpMLineIndex;
+    readonly attribute DOMString? foundation;
+    readonly attribute RTCIceComponent? component;
+    readonly attribute unsigned long? priority;
+    readonly attribute DOMString? address;
+    readonly attribute RTCIceProtocol? protocol;
+    readonly attribute unsigned short? port;
+    readonly attribute RTCIceCandidateType? type;
+    readonly attribute RTCIceTcpCandidateType? tcpType;
+    readonly attribute DOMString? relatedAddress;
+    readonly attribute unsigned short? relatedPort;
+    readonly attribute DOMString? usernameFragment;
     // TODO(peria): Return type should be RTCIceCandidateInit.
     [CallWith=ScriptState, ImplementedAs=toJSONForBinding] object toJSON();
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate_init.idl b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate_init.idl
index 0422d09..e14ccf1f 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate_init.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate_init.idl
@@ -8,4 +8,5 @@
     DOMString candidate = "";
     DOMString? sdpMid = null;
     unsigned short? sdpMLineIndex = null;
+    DOMString usernameFragment;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
index 6139ec8..1866607c 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
@@ -226,9 +226,9 @@
       UseCounter::Count(context,
                         WebFeature::kRTCIceCandidateDefaultSdpMLineIndex);
     }
-    return WebRTCICECandidate::Create(ice_candidate_init->candidate(),
-                                      ice_candidate_init->sdpMid(),
-                                      sdp_m_line_index);
+    return WebRTCICECandidate::Create(
+        ice_candidate_init->candidate(), ice_candidate_init->sdpMid(),
+        sdp_m_line_index, ice_candidate_init->usernameFragment());
   }
 
   DCHECK(candidate.IsRTCIceCandidate());
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
index ee98ccd2..57f3c69 100644
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -558,6 +558,7 @@
     "exported/web_prerender.cc",
     "exported/web_prerendering_support.cc",
     "exported/web_rtc_answer_options.cc",
+    "exported/web_rtc_ice_candidate.cc",
     "exported/web_rtc_offer_options.cc",
     "exported/web_rtc_peer_connection_handler_client.cc",
     "exported/web_rtc_rtp_receiver.cc",
diff --git a/third_party/blink/renderer/platform/exported/web_rtc_ice_candidate.cc b/third_party/blink/renderer/platform/exported/web_rtc_ice_candidate.cc
new file mode 100644
index 0000000..9de50dc3
--- /dev/null
+++ b/third_party/blink/renderer/platform/exported/web_rtc_ice_candidate.cc
@@ -0,0 +1,106 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/public/platform/web_rtc_ice_candidate.h"
+
+#include "third_party/webrtc/api/candidate.h"
+#include "third_party/webrtc/p2p/base/p2p_constants.h"
+#include "third_party/webrtc/p2p/base/port.h"
+#include "third_party/webrtc/pc/webrtc_sdp.h"
+
+namespace blink {
+
+namespace {
+
+// Maps |component| to constants defined in
+// https://w3c.github.io/webrtc-pc/#dom-rtcicecomponent
+blink::WebString CandidateComponentToWebString(int component) {
+  if (component == cricket::ICE_CANDIDATE_COMPONENT_RTP)
+    return blink::WebString::FromASCII("rtp");
+  if (component == cricket::ICE_CANDIDATE_COMPONENT_RTCP)
+    return blink::WebString::FromASCII("rtcp");
+  return blink::WebString();
+}
+
+// Maps |type| to constants defined in
+// https://w3c.github.io/webrtc-pc/#rtcicecandidatetype-enum
+blink::WebString CandidateTypeToWebString(const std::string& type) {
+  if (type == cricket::LOCAL_PORT_TYPE)
+    return blink::WebString::FromASCII("host");
+  if (type == cricket::STUN_PORT_TYPE)
+    return blink::WebString::FromASCII("srflx");
+  if (type == cricket::PRFLX_PORT_TYPE)
+    return blink::WebString::FromASCII("prflx");
+  if (type == cricket::RELAY_PORT_TYPE)
+    return blink::WebString::FromASCII("relay");
+  return blink::WebString();
+}
+
+}  // namespace
+
+// static
+scoped_refptr<WebRTCICECandidate> WebRTCICECandidate::Create(
+    WebString candidate,
+    WebString sdp_mid,
+    uint16_t sdp_m_line_index,
+    WebString username_fragment) {
+  return base::AdoptRef(
+      new WebRTCICECandidate(std::move(candidate), std::move(sdp_mid),
+                             sdp_m_line_index, std::move(username_fragment)));
+}
+
+scoped_refptr<WebRTCICECandidate> WebRTCICECandidate::Create(
+    WebString candidate,
+    WebString sdp_mid,
+    uint16_t sdp_m_line_index) {
+  return base::AdoptRef(new WebRTCICECandidate(
+      std::move(candidate), std::move(sdp_mid), sdp_m_line_index));
+}
+
+WebRTCICECandidate::WebRTCICECandidate(WebString candidate,
+                                       WebString sdp_mid,
+                                       uint16_t sdp_m_line_index,
+                                       WebString username_fragment)
+    : candidate_(std::move(candidate)),
+      sdp_mid_(std::move(sdp_mid)),
+      sdp_m_line_index_(sdp_m_line_index),
+      username_fragment_(std::move(username_fragment)) {
+  PopulateFields(false);
+}
+
+WebRTCICECandidate::WebRTCICECandidate(WebString candidate,
+                                       WebString sdp_mid,
+                                       uint16_t sdp_m_line_index)
+    : candidate_(std::move(candidate)),
+      sdp_mid_(std::move(sdp_mid)),
+      sdp_m_line_index_(sdp_m_line_index) {
+  PopulateFields(true);
+}
+
+void WebRTCICECandidate::PopulateFields(bool use_username_from_candidate) {
+  cricket::Candidate c;
+  if (!webrtc::ParseCandidate(candidate_.Utf8(), &c, nullptr, true))
+    return;
+
+  foundation_ = blink::WebString::FromUTF8(c.foundation());
+  component_ = CandidateComponentToWebString(c.component());
+  priority_ = c.priority();
+  protocol_ = blink::WebString::FromUTF8(c.protocol());
+  if (!c.address().IsNil()) {
+    address_ = blink::WebString::FromUTF8(c.address().HostAsURIString());
+    port_ = c.address().port();
+  }
+  type_ = CandidateTypeToWebString(c.type());
+  tcp_type_ = blink::WebString::FromUTF8(c.tcptype());
+  if (!c.related_address().IsNil()) {
+    related_address_ =
+        blink::WebString::FromUTF8(c.related_address().HostAsURIString());
+    related_port_ = c.related_address().port();
+  }
+
+  if (use_username_from_candidate)
+    username_fragment_ = blink::WebString::FromUTF8(c.username());
+}
+
+}  // namespace blink
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index 3c04388..dca67052 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -316,6 +316,11 @@
             # STL types such as std::unique_ptr are encouraged.
             'std::.+',
 
+            # UI Keyconverter
+            'ui::DomCode',
+            'ui::DomKey',
+            'ui::KeycodeConverter',
+
             # Blink uses UKM for logging e.g. always-on leak detection (crbug/757374)
             'ukm::.+',
         ],
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 3f0cb43..4f7edc8b 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -146,6 +146,7 @@
 crbug.com/771003 http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
 crbug.com/771003 virtual/outofblink-cors-ns/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
 crbug.com/771003 virtual/outofblink-cors/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
+crbug.com/771003 virtual/feature-policy-for-sandbox/http/tests/security/mixedContent/insecure-iframe-in-main-frame.html [ Failure ]
 
 # Tests temporarily disabled with Site Isolation - known differences in product
 # behavior (either accepted for the long-term, or for the short-term):
@@ -157,6 +158,7 @@
 crbug.com/669083 http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
 crbug.com/669083 virtual/outofblink-cors-ns/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
 crbug.com/669083 virtual/outofblink-cors/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
+crbug.com/669083 virtual/feature-policy-for-sandbox/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html [ Failure ]
 crbug.com/886588 external/wpt/dom/events/EventListener-addEventListener.sub.window.html [ Failure ]
 
 # Tests temporarily disabled with Site Isolation - uninvestigated bugs:
@@ -172,6 +174,7 @@
 crbug.com/793127 http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
 crbug.com/793127 virtual/outofblink-cors-ns/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
 crbug.com/793127 virtual/outofblink-cors/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
+crbug.com/793127 virtual/feature-policy-for-sandbox/http/tests/security/upgrade-insecure-requests/iframe-upgrade.https.html [ Crash ]
 crbug.com/801992 http/tests/misc/iframe-script-modify-attr.html [ Pass Crash ]
 crbug.com/807675 http/tests/images/image-decode-in-frame.html [ Crash Failure ]
 crbug.com/819800 external/wpt/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html [ Failure ]
@@ -355,6 +358,7 @@
 crbug.com/846747 http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
 crbug.com/846747 virtual/outofblink-cors/http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
 crbug.com/846747 virtual/outofblink-cors-ns/http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
+crbug.com/846747 virtual/feature-policy-for-sandbox/http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
 crbug.com/846747 virtual/stable/http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
 
 crbug.com/849459 fragmentation/repeating-thead-under-repeating-thead.html [ Failure ]
@@ -2026,6 +2030,7 @@
 crbug.com/518883 crbug.com/390452 http/tests/security/isolatedWorld/media-query-wrapper-leaks.html [ Failure Pass Timeout ]
 crbug.com/518883 crbug.com/390452 virtual/outofblink-cors/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html [ Failure Pass Timeout ]
 crbug.com/518883 crbug.com/390452 virtual/outofblink-cors-ns/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html [ Failure Pass Timeout ]
+crbug.com/518883 crbug.com/390452 virtual/feature-policy-for-sandbox/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html [ Failure Pass Timeout ]
 crbug.com/518987 http/tests/xmlhttprequest/navigation-abort-detaches-frame.html [ Pass Timeout ]
 crbug.com/518987 virtual/outofblink-cors/http/tests/xmlhttprequest/navigation-abort-detaches-frame.html [ Pass Timeout ]
 crbug.com/518987 virtual/outofblink-cors-ns/http/tests/xmlhttprequest/navigation-abort-detaches-frame.html [ Pass Timeout ]
@@ -2098,6 +2103,7 @@
 crbug.com/686118 http/tests/security/setDomainRelaxationForbiddenForURLScheme.html [ Crash Pass ]
 crbug.com/686118 virtual/outofblink-cors/http/tests/security/setDomainRelaxationForbiddenForURLScheme.html [ Crash Pass ]
 crbug.com/686118 virtual/outofblink-cors-ns/http/tests/security/setDomainRelaxationForbiddenForURLScheme.html [ Crash Pass ]
+crbug.com/686118 virtual/feature-policy-for-sandbox/http/tests/security/setDomainRelaxationForbiddenForURLScheme.html [ Crash Pass ]
 
 # In external/wpt/html/, we prefer checking in failure
 # expectation files. The following tests with [ Failure ] don't have failure
@@ -2427,6 +2433,10 @@
 crbug.com/528062 [ Win ] virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/cached-frame-csp.html [ Failure ]
 crbug.com/528062 [ Win ] virtual/outofblink-cors-ns/http/tests/security/xssAuditor/cached-frame.html [ Failure ]
 crbug.com/528062 [ Win ] virtual/outofblink-cors-ns/http/tests/security/xssAuditor/chunked-big-script.html [ Failure ]
+crbug.com/528062 [ Win ] virtual/feature-policy-for-sandbox/http/tests/security/XFrameOptions/x-frame-options-cached.html [ Failure ]
+crbug.com/528062 [ Win ] virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/cached-frame-csp.html [ Failure ]
+crbug.com/528062 [ Win ] virtual/feature-policy-for-sandbox/http/tests/security/xssAuditor/cached-frame.html [ Failure ]
+crbug.com/528062 [ Win ] virtual/feature-policy-for-sandbox/http/tests/security/xssAuditor/chunked-big-script.html [ Failure ]
 
 # When drawing subpixel smoothed glyphs, CoreGraphics will fake bold the glyphs.
 # In this configuration, the pixel smoothed glyphs will be created from subpixel smoothed glyphs.
@@ -2708,6 +2718,7 @@
 crbug.com/501659 http/tests/security/xss-DENIED-xml-external-entity.xhtml [ Failure ]
 crbug.com/501659 virtual/outofblink-cors/http/tests/security/xss-DENIED-xml-external-entity.xhtml [ Failure ]
 crbug.com/501659 virtual/outofblink-cors-ns/http/tests/security/xss-DENIED-xml-external-entity.xhtml [ Failure ]
+crbug.com/501659 virtual/feature-policy-for-sandbox/http/tests/security/xss-DENIED-xml-external-entity.xhtml [ Failure ]
 crbug.com/501659 fast/css/stylesheet-candidate-nodes-crash.xhtml [ Failure ]
 
 crbug.com/545140 [ Mac ] fast/encoding/denormalised-voiced-japanese-chars.html [ Failure ]
@@ -2832,6 +2843,7 @@
 crbug.com/763830 http/tests/security/cors-rfc1918/ [ Skip ]
 crbug.com/763830 virtual/outofblink-cors/http/tests/security/cors-rfc1918/ [ Skip ]
 crbug.com/763830 virtual/outofblink-cors-ns/http/tests/security/cors-rfc1918/ [ Skip ]
+crbug.com/763830 virtual/feature-policy-for-sandbox/http/tests/security/cors-rfc1918/ [ Skip ]
 
 crbug.com/831729 external/wpt/event-timing/event-timing-crossiframe.html [ Timeout ]
 crbug.com/831729 external/wpt/event-timing/event-timing-observer-manual.html [ Skip ]
@@ -3260,7 +3272,7 @@
 crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html [ Failure ]
 crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html [ Failure ]
 crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html [ Failure ]
-crbug.com/626703 external/wpt/css/css-backgrounds/border-image-width-008.html [ Failure ]
+crbug.com/767352 external/wpt/css/css-backgrounds/border-image-width-008.html [ Failure ]
 crbug.com/367760 external/wpt/svg/pservers/reftests/meshgradient-basic-004.svg [ Failure ]
 crbug.com/367760 external/wpt/svg/pservers/reftests/meshgradient-basic-001.svg [ Failure ]
 
@@ -4357,6 +4369,7 @@
 crbug.com/610835 http/tests/security/XFrameOptions/x-frame-options-deny-multiple-clients.html [ Failure Pass ]
 crbug.com/610835 virtual/outofblink-cors/http/tests/security/XFrameOptions/x-frame-options-deny-multiple-clients.html [ Failure Pass ]
 crbug.com/610835 virtual/outofblink-cors-ns/http/tests/security/XFrameOptions/x-frame-options-deny-multiple-clients.html [ Failure Pass ]
+crbug.com/610835 virtual/feature-policy-for-sandbox/http/tests/security/XFrameOptions/x-frame-options-deny-multiple-clients.html [ Failure Pass ]
 
 # Added 2016-12-12
 crbug.com/673539 [ Linux ] css3/filters/effect-contrast-hw.html [ Pass Failure ]
@@ -4377,6 +4390,7 @@
 crbug.com/664816 http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-reportonly-blocked.php [ Pass Failure ]
 crbug.com/664816 virtual/outofblink-cors/http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-reportonly-blocked.php [ Pass Failure ]
 crbug.com/664816 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-reportonly-blocked.php [ Pass Failure ]
+crbug.com/664816 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-reportonly-blocked.php [ Pass Failure ]
 
 crbug.com/702837 fast/text/aat-morx.html [ Skip ]
 
@@ -4448,6 +4462,7 @@
 crbug.com/678499 http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-preload-allowed.php [ Failure Pass ]
 crbug.com/678499 virtual/outofblink-cors/http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-preload-allowed.php [ Failure Pass ]
 crbug.com/678499 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-preload-allowed.php [ Failure Pass ]
+crbug.com/678499 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-preload-allowed.php [ Failure Pass ]
 
 crbug.com/747751 [ Win ] http/tests/devtools/application-panel/resources-panel-resource-preview.js [ Failure Pass ]
 
@@ -4534,6 +4549,8 @@
 crbug.com/724027 virtual/outofblink-cors/http/tests/security/contentSecurityPolicy/source-list-parsing-04.html [ Skip ]
 crbug.com/724027 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/directive-parsing-03.html [ Skip ]
 crbug.com/724027 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/source-list-parsing-04.html [ Skip ]
+crbug.com/724027 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/directive-parsing-03.html [ Skip ]
+crbug.com/724027 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/source-list-parsing-04.html [ Skip ]
 
 # Sheriff failures 2017-05-16
 crbug.com/722212 fast/events/pointerevents/mouse-pointer-event-properties.html [ Failure Timeout Pass ]
@@ -4633,6 +4650,7 @@
 crbug.com/708994 http/tests/security/cross-frame-mouse-source-capabilities.html [ Timeout Pass ]
 crbug.com/708994 virtual/outofblink-cors/http/tests/security/cross-frame-mouse-source-capabilities.html [ Timeout Pass ]
 crbug.com/708994 virtual/outofblink-cors-ns/http/tests/security/cross-frame-mouse-source-capabilities.html [ Timeout Pass ]
+crbug.com/708994 virtual/feature-policy-for-sandbox/http/tests/security/cross-frame-mouse-source-capabilities.html [ Timeout Pass ]
 
 crbug.com/745887 [ Mac ] fast/frames/sandboxed-iframe-plugins.html [ Failure Pass ]
 crbug.com/745887 [ Win ] fast/frames/sandboxed-iframe-plugins.html [ Failure Pass ]
@@ -4679,6 +4697,9 @@
 crbug.com/686118 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/register-bypassing-scheme.html [ Pass Crash ]
 crbug.com/686118 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/register-bypassing-scheme-partial.html [ Pass Crash ]
 crbug.com/686118 virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/register-bypassing-scheme-script.https.html [ Pass Crash ]
+crbug.com/686118 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/register-bypassing-scheme.html [ Pass Crash ]
+crbug.com/686118 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/register-bypassing-scheme-partial.html [ Pass Crash ]
+crbug.com/686118 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/register-bypassing-scheme-script.https.html [ Pass Crash ]
 
 # Tests currently failing on Windows when run on Swarming
 crbug.com/757165 [ Win ] compositing/culling/filter-occlusion-blur.html [ Skip ]
@@ -4828,11 +4849,13 @@
 crbug.com/767091 [ Mac10.12 ] http/tests/security/link-crossorigin-preload-use-credentials.html [ Failure ]
 crbug.com/767091 [ Mac10.12 ] virtual/outofblink-cors/http/tests/security/link-crossorigin-preload-use-credentials.html [ Failure ]
 crbug.com/767091 [ Mac10.12 ] virtual/outofblink-cors-ns/http/tests/security/link-crossorigin-preload-use-credentials.html [ Failure ]
+crbug.com/767091 [ Mac10.12 ] virtual/feature-policy-for-sandbox/http/tests/security/link-crossorigin-preload-use-credentials.html [ Failure ]
 
 # Sheriff failures 2017-09-21
 crbug.com/767469 http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ]
 crbug.com/767469 virtual/outofblink-cors/http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ]
 crbug.com/767469 virtual/outofblink-cors-ns/http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ]
+crbug.com/767469 virtual/feature-policy-for-sandbox/http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ]
 crbug.com/767469 virtual/stable/http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ]
 
 # Sheriff failures 2017-10-02
@@ -5273,6 +5296,7 @@
 crbug.com/854538 [ Win7 ] http/tests/security/contentSecurityPolicy/1.1/form-action-src-default-ignored-with-redirect.html [ Skip ]
 crbug.com/854538 [ Win7 ] virtual/outofblink-cors/http/tests/security/contentSecurityPolicy/1.1/form-action-src-default-ignored-with-redirect.html [ Skip ]
 crbug.com/854538 [ Win7 ] virtual/outofblink-cors-ns/http/tests/security/contentSecurityPolicy/1.1/form-action-src-default-ignored-with-redirect.html [ Skip ]
+crbug.com/854538 [ Win7 ] virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/1.1/form-action-src-default-ignored-with-redirect.html [ Skip ]
 
 # Sheriff 2018-06-21
 crbug.com/854910 [ Mac ] fast/scroll-behavior/smooth-scroll/track-scroll.html [ Failure Pass ]
@@ -5282,6 +5306,7 @@
 crbug.com/855816 [ Win ] virtual/outofblink-cors/http/tests/navigation/rename-subframe-goback.html [ Pass Timeout ]
 crbug.com/855816 [ Win ] virtual/outofblink-cors-ns/http/tests/navigation/rename-subframe-goback.html [ Pass Timeout ]
 crbug.com/855816 [ Win ] virtual/stable/http/tests/navigation/rename-subframe-goback.html [ Pass Timeout ]
+crbug.com/855816 [ Win ] virtual/feature-policy-for-sandbox/http/tests/navigation/rename-subframe-goback.html [ Pass Timeout ]
 
 # Sheriff 2018-06-29
 crbug.com/859169 [ Linux Debug ] http/tests/devtools/layers/layer-scroll-rects-get.js [ Failure Pass ]
@@ -5582,6 +5607,7 @@
 crbug.com/882689 http/tests/security/cookies/third-party-cookie-blocking-worker.html [ Pass Failure ]
 crbug.com/882689 virtual/outofblink-cors/http/tests/security/cookies/third-party-cookie-blocking-worker.html [ Pass Failure ]
 crbug.com/882689 virtual/outofblink-cors-ns/http/tests/security/cookies/third-party-cookie-blocking-worker.html [ Pass Failure ]
+crbug.com/882689 virtual/feature-policy-for-sandbox/http/tests/security/cookies/third-party-cookie-blocking-worker.html [ Pass Failure ]
 
 # The following tests need LazyFrameLoading.
 crbug.com/869492 external/wpt/feature-policy/experimental-features/lazyload/lazyload-enabled-tentative.sub.html [ Failure ]
@@ -5618,6 +5644,7 @@
 
 # Enable AnimationWorklet tests for mainthread
 crbug.com/785940 [ Release ] animations/animationworklet/worklet-animation-currentTime.html [ Pass Failure ]
+crbug.com/927462 external/wpt/animation-worklet/current-time.https.html [ Pass Failure ]
 
 # Sheriff 2018-09-25
 crbug.com/888609 [ Mac ] http/tests/devtools/coverage/gutter-css.js [ Pass Timeout ]
@@ -5697,6 +5724,7 @@
 crbug.com/901489 [ Mac10.13 ] http/tests/security/document-domain-canonicalizes.html [ Crash Pass ]
 crbug.com/901489 [ Mac10.13 ] virtual/outofblink-cors-ns/http/tests/security/document-domain-canonicalizes.html [ Crash Pass ]
 crbug.com/901489 [ Mac10.13 ] virtual/outofblink-cors/http/tests/security/document-domain-canonicalizes.html [ Crash Pass ]
+crbug.com/901489 [ Mac10.13 ] virtual/feature-policy-for-sandbox/http/tests/security/document-domain-canonicalizes.html [ Crash Pass ]
 
 #Sheriff 2018-11-06
 crbug.com/902645 [ Retina ] transforms/3d/point-mapping/3d-point-mapping-3.html [ Failure Pass ]
@@ -5842,6 +5870,7 @@
 crbug.com/921151 [ Linux ] http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html [ Failure Pass ]
 crbug.com/921151 [ Linux ] virtual/outofblink-cors/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html [ Failure Pass ]
 crbug.com/921151 [ Linux ] virtual/outofblink-cors-ns/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html [ Failure Pass ]
+crbug.com/921151 [ Linux ] virtual/feature-policy-for-sandbox/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html [ Failure Pass ]
 
 # Writable Files tests depend on mojo interfaces that are only exposed behind a flag.
 crbug.com/922735 fast/filesystem/writable-files/ [ Skip ]
@@ -5927,6 +5956,7 @@
 crbug.com/922951 virtual/new-remote-playback-pipeline/media/controls/overflow-menu-toggle-class-for-animation.html [ Skip ]
 crbug.com/922951 virtual/outofblink-cors-ns/http/tests/security/offscreencanvas-placeholder-read-blocked-no-crossorigin.html [ Skip ]
 crbug.com/922951 virtual/outofblink-cors/http/tests/security/offscreencanvas-placeholder-read-blocked-no-crossorigin.html [ Skip ]
+crbug.com/922951 virtual/feature-policy-for-sandbox/http/tests/security/offscreencanvas-placeholder-read-blocked-no-crossorigin.html [ Skip ]
 crbug.com/922951 virtual/prefer_compositing_to_lcd_text/scrollbars/resize-scales-with-dpi-150.html [ Skip ]
 crbug.com/922951 virtual/scalefactor150/fast/events/synthetic-events/tap-on-scaled-screen.html [ Skip ]
 crbug.com/922951 virtual/stable/compositing/overflow/overflow-scroll-with-local-background.html [ Skip ]
@@ -5970,6 +6000,19 @@
 # WebXR feature policy feature name in Chrome doesn't match spec.
 crbug.com/924670 external/wpt/webvr/webvr-supported-by-feature-policy.html [ Failure ]
 
+# Feature Policy for Sandbox currently causes these tests to fail.
+crbug.com/926245 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/sandbox-empty-subframe.html [ Failure ]
+crbug.com/926245 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/sandbox-empty.html [ Failure ]
+crbug.com/926245 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/sandbox-in-http-header-control.html [ Failure ]
+crbug.com/926245 virtual/feature-policy-for-sandbox/http/tests/security/contentSecurityPolicy/sandbox-invalid-header.html [ Failure ]
+crbug.com/926247 virtual/feature-policy-for-sandbox/http/tests/navigation/new-window-sandboxed-iframe.html [ Failure ]
+crbug.com/926247 virtual/feature-policy-for-sandbox/http/tests/security/popup-allowed-by-sandbox-is-sandboxed.html [ Failure ]
+crbug.com/926248 virtual/feature-policy-for-sandbox/mhtml/page_with_css_and_js_ie.mht [ Failure ]
+crbug.com/926248 virtual/feature-policy-for-sandbox/mhtml/page_with_css_and_js_unmht.mht [ Failure ]
+crbug.com/926248 virtual/feature-policy-for-sandbox/mhtml/page_with_javascript.mht [ Failure ]
+crbug.com/926248 virtual/feature-policy-for-sandbox/mhtml/transfer_encoding_8bit.mht [ Failure ]
+crbug.com/926249 virtual/feature-policy-for-sandbox/http/tests/security/sandbox-iframe-blocks-modals.php [ Failure ]
+
 # Sheriff 2019-01-25
 crbug.com/925325 [ Mac ] storage/indexeddb/index-population.html [ Pass Failure ]
 
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index 0c1c5bd..d3e1231 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -1013,5 +1013,20 @@
     "prefix": "bidi-caret-affinity",
     "base": "editing/selection/modify_move",
     "args": ["--enable-blink-features=BidiCaretAffinity,EditingNG"]
+  },
+  {
+    "prefix": "feature-policy-for-sandbox",
+    "base": "http/tests/navigation",
+    "args": ["--enable-blink-features=FeaturePolicyForSandbox"]
+  },
+  {
+    "prefix": "feature-policy-for-sandbox",
+    "base": "http/tests/security",
+    "args": ["--enable-blink-features=FeaturePolicyForSandbox"]
+  },
+  {
+    "prefix": "feature-policy-for-sandbox",
+    "base": "mhtml",
+    "args": ["--enable-blink-features=FeaturePolicyForSandbox"]
   }
 ]
diff --git a/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt b/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt
index d1e583b5..43c1f2a 100644
--- a/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt
+++ b/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt
@@ -151,7 +151,7 @@
             AXRole: AXParagraph
                 AXRole: AXStaticText "Footer in section"
                     AXRole: AXInlineTextBox "Footer in section"
-    AXRole: AXContentInfo
+    AXRole: AXGenericContainer
         AXRole: AXStaticText "Written by Julie"
             AXRole: AXInlineTextBox "Written by Julie"
         AXRole: AXLineBreak "
diff --git a/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles-expected.txt b/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles-expected.txt
index cf54848..63e874f 100644
--- a/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles-expected.txt
+++ b/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles-expected.txt
@@ -16,7 +16,7 @@
 PASS AXObject.role is 'AXRole: AXRegion'
 PASS AXObject.role is 'AXRole: AXBanner'
 PASS AXObject.role is 'AXRole: AXComplementary'
-PASS AXObject.role is 'AXRole: AXContentInfo'
+PASS AXObject.role is 'AXRole: AXGenericContainer'
 PASS AXObject.role is 'AXRole: AXFooter'
 PASS AXObject.role is 'AXRole: AXMain'
 PASS AXObject.role is 'AXRole: AXNavigation'
diff --git a/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles.html b/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles.html
index ce6751c..5f2bce8 100644
--- a/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles.html
+++ b/third_party/blink/web_tests/accessibility/not-ignore-landmark-roles.html
@@ -30,7 +30,7 @@
         "AXRegion",
         "AXBanner",
         "AXComplementary",
-        "AXContentInfo",
+        "AXGenericContainer",
         "AXFooter",
         "AXMain",
         "AXNavigation"
diff --git a/third_party/blink/web_tests/compositing/overflow/border-radius-above-composited-subframe-expected.png b/third_party/blink/web_tests/compositing/overflow/border-radius-above-composited-subframe-expected.png
index b2e1c50..f833bbd 100644
--- a/third_party/blink/web_tests/compositing/overflow/border-radius-above-composited-subframe-expected.png
+++ b/third_party/blink/web_tests/compositing/overflow/border-radius-above-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/compositing/overflow/border-radius-composited-subframe-expected.png b/third_party/blink/web_tests/compositing/overflow/border-radius-composited-subframe-expected.png
index 40a7c91..9247210 100644
--- a/third_party/blink/web_tests/compositing/overflow/border-radius-composited-subframe-expected.png
+++ b/third_party/blink/web_tests/compositing/overflow/border-radius-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/blink/web_tests/compositing/overflow/border-radius-styles-with-composited-child-expected.png
index 0258aeb..1ce0b3eb 100644
--- a/third_party/blink/web_tests/compositing/overflow/border-radius-styles-with-composited-child-expected.png
+++ b/third_party/blink/web_tests/compositing/overflow/border-radius-styles-with-composited-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png
index 0870191..7220a9d1 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-with-masking-expected.png b/third_party/blink/web_tests/css3/blending/mix-blend-mode-with-masking-expected.png
index 34cb18f..5f0072f 100644
--- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-with-masking-expected.png
+++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-with-masking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001-expected.txt
deleted file mode 100644
index ecab08e..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-PASS Matrix for translation transforms
-FAIL Matrix for rotate assert_equals: Incorrect matrix for rotate() expected "matrix(0, 1, -1, 0, 0, 0)" but got "matrix(6.12323e-17, 1, -1, 6.12323e-17, 0, 0)"
-PASS Matrix for scaling
-PASS Matrix for skew
-PASS Matrix for general transform
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001.html b/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001.html
index a085b79..8fc4f938 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-2d-getComputedStyle-001.html
@@ -63,7 +63,15 @@
 	<div id="matrix" class="block"></div>
     <script type="text/javascript">
     function getTransformFor(id) {
-    	return window.getComputedStyle(document.getElementById(id)).getPropertyValue("transform");
+      let transform =
+        window.getComputedStyle(document.getElementById(id)).getPropertyValue("transform");
+      // Round matrix arguments to allow for small errors in numerical precision.
+      transform = transform.replace(/matrix\(([^\)]*)\)/g, function(match, arguments) {
+        let parts = arguments.split(",");
+        parts = parts.map(str => parseFloat(parseFloat(str).toFixed(6)));
+        return 'matrix(' + parts.join(", ") + ')';
+      });
+      return transform;
     }
     function clear(id) {
     	document.getElementById(id).style.display = 'none';
diff --git a/third_party/blink/web_tests/external/wpt/portals/portal-activate-event.html b/third_party/blink/web_tests/external/wpt/portals/portal-activate-event.html
index ac1505d..33d91e37 100644
--- a/third_party/blink/web_tests/external/wpt/portals/portal-activate-event.html
+++ b/third_party/blink/web_tests/external/wpt/portals/portal-activate-event.html
@@ -4,29 +4,35 @@
 <script src="/resources/testharnessreport.js"></script>
 <script>
   async_test(function(t) {
-    var bc = new BroadcastChannel("test-eventlistener");
+    let test = "eventlistener";
+    var bc = new BroadcastChannel(`test-${test}`);
     bc.onmessage = t.step_func_done(function(e) {
       assert_equals(e.data, "passed");
       bc.close();
     });
-    window.open("resources/portal-activate-event-window.html?test=eventlistener");
+    const portalUrl = encodeURIComponent(`portal-activate-event-portal.html?test=${test}`);
+    window.open(`resources/portal-embed-and-activate.html?url=${portalUrl}&channelName=portal-${test}`);
   }, "Tests that the PortalActivateEvent is dispatched when a portal is activated.");
 
   async_test(function(t) {
-    var bc = new BroadcastChannel("test-eventhandler");
+    let test = "eventhandler";
+    var bc = new BroadcastChannel(`test-${test}`);
     bc.onmessage = t.step_func_done(function(e) {
       assert_equals(e.data, "passed");
       bc.close();
     });
-    window.open("resources/portal-activate-event-window.html?test=eventhandler");
+    const portalUrl = encodeURIComponent(`portal-activate-event-portal.html?test=${test}`);
+    window.open(`resources/portal-embed-and-activate.html?url=${portalUrl}&channelName=portal-${test}`);
   }, "Tests that the portalactivate event handler is dispatched when a portal is activated.");
 
   async_test(function(t) {
-    var bc = new BroadcastChannel("test-bodyeventhandler");
+    let test = "bodyeventhandler";
+    var bc = new BroadcastChannel(`test-${test}`);
     bc.onmessage = t.step_func_done(function(e) {
       assert_equals(e.data, "passed");
       bc.close();
     });
-    window.open("resources/portal-activate-event-window.html?test=bodyeventhandler");
+    const portalUrl = encodeURIComponent(`portal-activate-event-portal.html?test=${test}`);
+    window.open(`resources/portal-embed-and-activate.html?url=${portalUrl}&channelName=portal-${test}`);
   }, "Tests that the HTMLBodyElement has the portalactivate event handler.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/portals/portals-host-exposure.sub.html b/third_party/blink/web_tests/external/wpt/portals/portals-host-exposure.sub.html
new file mode 100644
index 0000000..83e31bd4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/portals-host-exposure.sub.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+  let channelIndex = 0;
+  async function openPortalAndReceiveMessage(portalSrc) {
+    let channelName = `portals-host-exposure-${channelIndex++}`
+    let broadcastChannel = new BroadcastChannel(channelName);
+    try {
+      let received = new Promise((resolve, reject) => {
+        broadcastChannel.addEventListener('message', e => {
+          resolve(e.data);
+        }, {once: true})
+      });
+      let portal = document.createElement('portal');
+      portal.src = `${portalSrc}?broadcastchannel=${channelName}`;
+      document.body.appendChild(portal);
+      return await received;
+    } finally {
+      broadcastChannel.close();
+    }
+  }
+
+  promise_test(async t => {
+    let {hasHost} = await openPortalAndReceiveMessage(
+        'resources/portal-host.html');
+    assert_true(hasHost, "window.portalHost should be defined");
+  }, "window.portalHost should be exposed in same-origin portal");
+
+  promise_test(async t => {
+    let {hasHost} = await openPortalAndReceiveMessage(
+        'http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/portal-host-cross-origin.sub.html');
+    assert_true(hasHost, "window.portalHost should be defined");
+  }, "window.portalHost should be exposed in cross-origin portal");
+
+  promise_test(async t => {
+    let {hasHost} = await openPortalAndReceiveMessage(
+        'resources/portal-host-cross-origin-navigate.sub.html');
+    assert_true(hasHost, "window.portalHost should be defined");
+  }, "window.portalHost should be exposed in portal after cross-origin navigation");
+
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/portals-host-hidden-after-activation.html b/third_party/blink/web_tests/external/wpt/portals/portals-host-hidden-after-activation.html
new file mode 100644
index 0000000..f51e54b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/portals-host-hidden-after-activation.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+  // Waits for 2 messages from portal, one before activation and one after.
+  function waitForMessages() {
+    return new Promise((resolve, reject) => {
+      var results = [];
+      var bc = new BroadcastChannel("portals-host-hidden-after-activation");
+      bc.onmessage = e => {
+        results.push(e.data.hasHost);
+        if (results.length == 2) {
+          bc.close();
+          resolve(results);
+        }
+      };
+    });
+  }
+
+  promise_test(async () => {
+    const portalUrl = encodeURIComponent("portal-host-hidden-after-activation-portal.html");
+    window.open(`resources/portal-embed-and-activate.html?url=${portalUrl}`);
+    var results = await waitForMessages();
+    assert_true(results[0], "portalHost exposed before calling activate()");
+    assert_false(results[1], "portalHost hidden after receiving portalactivate event");
+  }, "window.portalHost should be null after portal is activated");
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/portal-activate-event-window.html b/third_party/blink/web_tests/external/wpt/portals/resources/portal-activate-event-window.html
deleted file mode 100644
index cf09caeb..0000000
--- a/third_party/blink/web_tests/external/wpt/portals/resources/portal-activate-event-window.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<script>
-  window.onload = function(e) {
-    var test = (new URL(location)).searchParams.get("test");
-    var portal = document.createElement("portal");
-    portal.src = "portal-activate-event-portal.html" + location.search;
-    document.body.appendChild(portal);
-
-    var bc = new BroadcastChannel("portal-" + test);
-    bc.onmessage = function(e) {
-      document.querySelector("portal").activate();
-      bc.close();
-    }
-  }
-</script>
-<body>
-</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/portal-embed-and-activate.html b/third_party/blink/web_tests/external/wpt/portals/resources/portal-embed-and-activate.html
new file mode 100644
index 0000000..6b77a2bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/portal-embed-and-activate.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<!--
+  Embeds a portal (src specified by query parameter "url") and activates it after
+  receiving a message from the portal. Use query parameter "channelName" to
+  specify the name of the channel used by the portal src send a message
+  indicating that it is ready for activation (default name used is "portal").
+-->
+</title>
+<body>
+  <script>
+    var searchParams = new URL(location).searchParams;
+
+    // TODO(adithyas): Replace this with postmessage once it's implemented for
+    // portals.
+    var channelName = searchParams.get("channelName") || "portal";
+    var bc = new BroadcastChannel(channelName);
+    bc.onmessage = function(e) {
+      document.querySelector("portal").activate();
+      bc.close();
+    }
+
+    let portal = document.createElement("portal");
+    portal.src = searchParams.get("url");
+    document.body.appendChild(portal);
+  </script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-cross-origin-navigate.sub.html b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-cross-origin-navigate.sub.html
new file mode 100644
index 0000000..44c6c16
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-cross-origin-navigate.sub.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<body>
+  <script>
+    let channelName = new URL(location).searchParams.get('broadcastchannel');
+    window.location.href = `http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/portal-host-cross-origin.sub.html?broadcastchannel=${channelName}`;
+  </script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-cross-origin.sub.html b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-cross-origin.sub.html
new file mode 100644
index 0000000..dc4e9e7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-cross-origin.sub.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<body>
+  <script>
+    let forwardingIframe = document.createElement('iframe');
+    let channelName = new URL(location).searchParams.get('broadcastchannel');
+    forwardingIframe.src = `http://{{host}}:{{ports[http][0]}}/portals/resources/portal-forward-with-broadcast.html?broadcastchannel=${channelName}`;
+    forwardingIframe.onload = () => {
+      let message = {
+        hasHost: !!window.portalHost
+      };
+      forwardingIframe.contentWindow.postMessage(message, '*');
+    }
+    document.body.appendChild(forwardingIframe);
+  </script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-hidden-after-activation-portal.html b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-hidden-after-activation-portal.html
new file mode 100644
index 0000000..586929e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host-hidden-after-activation-portal.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<script>
+  window.addEventListener("portalactivate", function(e) {
+    var bc = new BroadcastChannel("portals-host-hidden-after-activation");
+    bc.postMessage({ hasHost: !!window.portalHost });
+    bc.close();
+  });
+
+  var bc = new BroadcastChannel("portals-host-hidden-after-activation");
+  bc.postMessage({hasHost: !!window.portalHost });
+  bc.close();
+
+  bc = new BroadcastChannel("portal");
+  bc.postMessage("loaded");
+  bc.close();
+
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/portal-host.html b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host.html
new file mode 100644
index 0000000..5043a158e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/portal-host.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<body>
+  <script>
+    let message = {
+      hasHost: !!window.portalHost
+    };
+    let broadcastChannel = new BroadcastChannel(new URL(location).searchParams.get('broadcastchannel'));
+    try {
+      broadcastChannel.postMessage(message);
+    } finally {
+      broadcastChannel.close();
+    }
+  </script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https-expected.txt b/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https-expected.txt
index b8e23099..2209b877 100644
--- a/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https-expected.txt
@@ -13,8 +13,9 @@
 PASS getDisplayMedia({"video":{"height":{"exact":240}}}) must fail with TypeError
 PASS getDisplayMedia({"video":{"frameRate":{"min":4}}}) must fail with TypeError
 PASS getDisplayMedia({"video":{"frameRate":{"exact":4}}}) must fail with TypeError
-FAIL getDisplayMedia({"video":true,"audio":true}) must succeed with video maybe audio promise_test: Unhandled rejection with value: object "TypeError: Failed to execute 'getDisplayMedia' on 'MediaDevices': Audio capture is not supported"
-FAIL getDisplayMedia({"audio":true}) must succeed with video maybe audio promise_test: Unhandled rejection with value: object "TypeError: Failed to execute 'getDisplayMedia' on 'MediaDevices': Audio capture is not supported"
+PASS getDisplayMedia({"audio":true}) must fail with TypeError
+PASS getDisplayMedia({"video":false,"audio":true}) must fail with TypeError
+PASS getDisplayMedia({"video":true,"audio":true}) must succeed with video maybe audio
 PASS getDisplayMedia({"video":{"width":{"max":360}}}) must be constrained
 PASS getDisplayMedia({"video":{"height":{"max":240}}}) must be constrained
 PASS getDisplayMedia({"video":{"width":{"max":360},"height":{"max":240}}}) must be constrained
diff --git a/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https.html b/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https.html
index e52e596d6..7427e34 100644
--- a/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https.html
+++ b/third_party/blink/web_tests/external/wpt/screen-capture/getdisplaymedia.https.html
@@ -35,6 +35,8 @@
  {video: {height: {exact: 240}}},
  {video: {frameRate: {min: 4}}},
  {video: {frameRate: {exact: 4}}},
+ {audio: true},
+ {video: false, audio: true},
 ].forEach(constraints => promise_test(async t => {
   try {
     stopTracks(await navigator.mediaDevices.getDisplayMedia(constraints));
@@ -47,7 +49,6 @@
 
 [
  {video: true, audio: true},
- {audio: true},
 ].forEach(constraints => promise_test(async t => {
   const stream = await navigator.mediaDevices.getDisplayMedia(constraints);
   t.add_cleanup(() => stopTracks(stream));
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor-expected.txt
index bb163f4..e545731 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor-expected.txt
@@ -6,15 +6,16 @@
 PASS new RTCIceCandidate({ candidate: '' })
 PASS new RTCIceCandidate({ candidate: null })
 PASS new RTCIceCandidate({ ... }) with valid candidate string only
-FAIL new RTCIceCandidate({ sdpMid: 'audio' }) Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
-FAIL new RTCIceCandidate({ sdpMLineIndex: 0 }) Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
-FAIL new RTCIceCandidate({ sdpMid: 'audio', sdpMLineIndex: 0 }) Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
-FAIL new RTCIceCandidate({ candidate: '', sdpMid: 'audio' } Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
-FAIL new RTCIceCandidate({ candidate: '', sdpMLineIndex: 0 } Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
+FAIL new RTCIceCandidate({ sdpMid: 'audio' }) assert_equals: sdpMLineIndex expected (object) null but got (number) 0
+PASS new RTCIceCandidate({ sdpMLineIndex: 0 })
+PASS new RTCIceCandidate({ sdpMid: 'audio', sdpMLineIndex: 0 })
+FAIL new RTCIceCandidate({ candidate: '', sdpMid: 'audio' } assert_equals: sdpMLineIndex expected (object) null but got (number) 0
+PASS new RTCIceCandidate({ candidate: '', sdpMLineIndex: 0 }
 FAIL new RTCIceCandidate({ ... }) with valid candidate string and sdpMid assert_equals: sdpMLineIndex expected (object) null but got (number) 0
 FAIL new RTCIceCandidate({ ... }) with invalid candidate string and sdpMid assert_equals: sdpMLineIndex expected (object) null but got (number) 0
-FAIL new RTCIceCandidate({ ... }) with non default value for all fields assert_equals: usernameFragment expected (string) "test" but got (undefined) undefined
-FAIL new RTCIceCandidate({ ... }) with invalid sdpMid Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
-FAIL new RTCIceCandidate({ ... }) with invalid sdpMLineIndex Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
+PASS new RTCIceCandidate({ ... }) with nondefault values for all fields
+PASS new RTCIceCandidate({ ... }) with nondefault values for all fields, tcp candidate
+FAIL new RTCIceCandidate({ ... }) with invalid sdpMid assert_equals: sdpMLineIndex expected (object) null but got (number) 0
+PASS new RTCIceCandidate({ ... }) with invalid sdpMLineIndex
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor.html
index cad0464a..344007d 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor.html
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCIceCandidate-constructor.html
@@ -6,6 +6,7 @@
   'use strict';
 
   const candidateString = 'candidate:1905690388 1 udp 2113937151 192.168.0.1 58041 typ host generation 0 ufrag thC8 network-cost 50';
+  const candidateString2 = 'candidate:435653019 2 tcp 1845501695 192.168.0.196 4444 typ srflx raddr www.example.com rport 22222 tcptype active';
   const arbitraryString = '<arbitrary string[0] content>;';
 
   test(t => {
@@ -162,8 +163,45 @@
     assert_equals(candidate.sdpMid, 'video', 'sdpMid');
     assert_equals(candidate.sdpMLineIndex, 1, 'sdpMLineIndex');
     assert_equals(candidate.usernameFragment, 'test', 'usernameFragment');
-  }, 'new RTCIceCandidate({ ... }) with non default value for all fields');
 
+    // The following fields should match those in the candidate field
+    assert_equals(candidate.foundation, '1905690388', 'foundation');
+    assert_equals(candidate.component, 'rtp', 'component');
+    assert_equals(candidate.priority, 2113937151, 'priority');
+    assert_equals(candidate.address, '192.168.0.1', 'address');
+    assert_equals(candidate.protocol, 'udp', 'protocol');
+    assert_equals(candidate.port, 58041, 'port');
+    assert_equals(candidate.type, 'host', 'type');
+    assert_equals(candidate.tcpType, '', 'tcpType');
+    assert_equals(candidate.relatedAddress, null, 'relatedAddress');
+    assert_equals(candidate.relatedPort, null, 'relatedPort');
+  }, 'new RTCIceCandidate({ ... }) with nondefault values for all fields');
+
+  test(t => {
+    const candidate = new RTCIceCandidate({
+      candidate: candidateString2,
+      sdpMid: 'video',
+      sdpMLineIndex: 1,
+      usernameFragment: 'user1'
+    });
+
+    assert_equals(candidate.candidate, candidateString2, 'candidate');
+    assert_equals(candidate.sdpMid, 'video', 'sdpMid');
+    assert_equals(candidate.sdpMLineIndex, 1, 'sdpMLineIndex');
+    assert_equals(candidate.usernameFragment, 'user1', 'usernameFragment');
+
+    // The following fields should match those in the candidate field
+    assert_equals(candidate.foundation, '435653019', 'foundation');
+    assert_equals(candidate.component, 'rtcp', 'component');
+    assert_equals(candidate.priority, 1845501695, 'priority');
+    assert_equals(candidate.address, '192.168.0.196', 'address');
+    assert_equals(candidate.protocol, 'tcp', 'protocol');
+    assert_equals(candidate.port, 4444, 'port');
+    assert_equals(candidate.type, 'srflx', 'type');
+    assert_equals(candidate.tcpType, 'active', 'tcpType');
+    assert_equals(candidate.relatedAddress, 'www.example.com', 'relatedAddress');
+    assert_equals(candidate.relatedPort, 22222, 'relatedPort');
+  }, 'new RTCIceCandidate({ ... }) with nondefault values for all fields, tcp candidate');
 
   test(t => {
     // sdpMid is not validated in RTCIceCandidate
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt
index 9a48c64..fe7ba8dc 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt
@@ -4,7 +4,7 @@
 FAIL RTCPeerConnectionIceEvent with empty object as eventInitDict (default) assert_equals: expected (object) null but got (undefined) undefined
 PASS RTCPeerConnectionIceEvent.candidate is null when constructed with { candidate: null }
 PASS RTCPeerConnectionIceEvent.candidate is null when constructed with { candidate: undefined }
-FAIL RTCPeerConnectionIceEvent with RTCIceCandidate Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty.
+PASS RTCPeerConnectionIceEvent with RTCIceCandidate
 PASS RTCPeerConnectionIceEvent with non RTCIceCandidate object throws
 PASS RTCPeerConnectionIceEvent bubbles and cancelable
 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
index a557706..e8123d1 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 494 tests; 340 PASS, 154 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 494 tests; 372 PASS, 122 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS Test driver for asyncInitCertificate
 FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: ReferenceError: RTCSctpTransport is not defined Reached unreachable code
@@ -147,39 +147,39 @@
 PASS RTCIceCandidate interface: existence and properties of interface prototype object
 PASS RTCIceCandidate interface: existence and properties of interface prototype object's "constructor" property
 PASS RTCIceCandidate interface: existence and properties of interface prototype object's @@unscopables property
-FAIL RTCIceCandidate interface: attribute candidate assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set candidate() { [native code] }"
-FAIL RTCIceCandidate interface: attribute sdpMid assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdpMid() { [native code] }"
-FAIL RTCIceCandidate interface: attribute sdpMLineIndex assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdpMLineIndex() { [native code] }"
-FAIL RTCIceCandidate interface: attribute foundation assert_true: The prototype object must have a property "foundation" expected true got false
-FAIL RTCIceCandidate interface: attribute component assert_true: The prototype object must have a property "component" expected true got false
-FAIL RTCIceCandidate interface: attribute priority assert_true: The prototype object must have a property "priority" expected true got false
-FAIL RTCIceCandidate interface: attribute address assert_true: The prototype object must have a property "address" expected true got false
-FAIL RTCIceCandidate interface: attribute protocol assert_true: The prototype object must have a property "protocol" expected true got false
-FAIL RTCIceCandidate interface: attribute port assert_true: The prototype object must have a property "port" expected true got false
-FAIL RTCIceCandidate interface: attribute type assert_true: The prototype object must have a property "type" expected true got false
-FAIL RTCIceCandidate interface: attribute tcpType assert_true: The prototype object must have a property "tcpType" expected true got false
-FAIL RTCIceCandidate interface: attribute relatedAddress assert_true: The prototype object must have a property "relatedAddress" expected true got false
-FAIL RTCIceCandidate interface: attribute relatedPort assert_true: The prototype object must have a property "relatedPort" expected true got false
-FAIL RTCIceCandidate interface: attribute usernameFragment assert_true: The prototype object must have a property "usernameFragment" expected true got false
+PASS RTCIceCandidate interface: attribute candidate
+PASS RTCIceCandidate interface: attribute sdpMid
+PASS RTCIceCandidate interface: attribute sdpMLineIndex
+PASS RTCIceCandidate interface: attribute foundation
+PASS RTCIceCandidate interface: attribute component
+PASS RTCIceCandidate interface: attribute priority
+PASS RTCIceCandidate interface: attribute address
+PASS RTCIceCandidate interface: attribute protocol
+PASS RTCIceCandidate interface: attribute port
+PASS RTCIceCandidate interface: attribute type
+PASS RTCIceCandidate interface: attribute tcpType
+PASS RTCIceCandidate interface: attribute relatedAddress
+PASS RTCIceCandidate interface: attribute relatedPort
+PASS RTCIceCandidate interface: attribute usernameFragment
 PASS RTCIceCandidate interface: operation toJSON()
-FAIL RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 }) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL Stringification of new RTCIceCandidate({ sdpMid: 1 }) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 }) Cannot read property 'toJSON' of undefined
+PASS RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 })
+PASS Stringification of new RTCIceCandidate({ sdpMid: 1 })
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type
+PASS RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 })
 PASS RTCPeerConnectionIceEvent interface: existence and properties of interface object
 PASS RTCPeerConnectionIceEvent interface object length
 PASS RTCPeerConnectionIceEvent interface object name
diff --git a/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-expected.png b/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-expected.png
index 9365e423..d9758ed 100644
--- a/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png b/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png
index 8b74f0a5..2ecf1d5 100644
--- a/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png
index f102126..4428e2e 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
index 2d2afc5..66435fe 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/svg-as-mask-expected.png b/third_party/blink/web_tests/fast/backgrounds/svg-as-mask-expected.png
index 5dc2656..2cea9b1 100644
--- a/third_party/blink/web_tests/fast/backgrounds/svg-as-mask-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/svg-as-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-double-expected.png b/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-double-expected.png
index dcc5e10..4c686b0 100644
--- a/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-double-expected.png
+++ b/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-double-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-expected.png b/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-expected.png
index 483f5f4a..6d2966c6 100644
--- a/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-expected.png
+++ b/third_party/blink/web_tests/fast/borders/border-radius-different-width-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/borderRadiusDashed01-expected.png b/third_party/blink/web_tests/fast/borders/borderRadiusDashed01-expected.png
index 41663be..8786afe 100644
--- a/third_party/blink/web_tests/fast/borders/borderRadiusDashed01-expected.png
+++ b/third_party/blink/web_tests/fast/borders/borderRadiusDashed01-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/borderRadiusDashed02-expected.png b/third_party/blink/web_tests/fast/borders/borderRadiusDashed02-expected.png
index 053d96d..ada337f 100644
--- a/third_party/blink/web_tests/fast/borders/borderRadiusDashed02-expected.png
+++ b/third_party/blink/web_tests/fast/borders/borderRadiusDashed02-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/borderRadiusDashed03-expected.png b/third_party/blink/web_tests/fast/borders/borderRadiusDashed03-expected.png
index 5c0ac8e6..4065e0f 100644
--- a/third_party/blink/web_tests/fast/borders/borderRadiusDashed03-expected.png
+++ b/third_party/blink/web_tests/fast/borders/borderRadiusDashed03-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/borderRadiusDashed04-expected.png b/third_party/blink/web_tests/fast/borders/borderRadiusDashed04-expected.png
index dc21bc33..5008f76b 100644
--- a/third_party/blink/web_tests/fast/borders/borderRadiusDashed04-expected.png
+++ b/third_party/blink/web_tests/fast/borders/borderRadiusDashed04-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/borderRadiusDashed05-expected.png b/third_party/blink/web_tests/fast/borders/borderRadiusDashed05-expected.png
index b632fb4..9efe71e 100644
--- a/third_party/blink/web_tests/fast/borders/borderRadiusDashed05-expected.png
+++ b/third_party/blink/web_tests/fast/borders/borderRadiusDashed05-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/dotted-border-ajoining-thick-expected.png b/third_party/blink/web_tests/fast/borders/dotted-border-ajoining-thick-expected.png
index 636540c..a6692d6 100644
--- a/third_party/blink/web_tests/fast/borders/dotted-border-ajoining-thick-expected.png
+++ b/third_party/blink/web_tests/fast/borders/dotted-border-ajoining-thick-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/fieldsetBorderRadius-expected.png b/third_party/blink/web_tests/fast/borders/fieldsetBorderRadius-expected.png
index 889eb97..e65a841 100644
--- a/third_party/blink/web_tests/fast/borders/fieldsetBorderRadius-expected.png
+++ b/third_party/blink/web_tests/fast/borders/fieldsetBorderRadius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/outline-rounded-border-expected.png b/third_party/blink/web_tests/fast/borders/outline-rounded-border-expected.png
deleted file mode 100644
index f4f36b8..0000000
--- a/third_party/blink/web_tests/fast/borders/outline-rounded-border-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png b/third_party/blink/web_tests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png
index 5a22a1f4..d4bd2b981 100644
--- a/third_party/blink/web_tests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png
+++ b/third_party/blink/web_tests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-expected.png b/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-expected.png
index d9c70447..949c0252c 100644
--- a/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-expected.png
+++ b/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-fill-expected.png b/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-fill-expected.png
index b5e27f2..5323902 100644
--- a/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-fill-expected.png
+++ b/third_party/blink/web_tests/fast/canvas/canvas-arc-circumference-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-expected.png b/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-expected.png
index 25f6051..392a4a0d 100644
--- a/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-expected.png
+++ b/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-fill-expected.png b/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-fill-expected.png
index bab6b82..5f15f2c 100644
--- a/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-fill-expected.png
+++ b/third_party/blink/web_tests/fast/canvas/canvas-ellipse-circumference-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/canvas/canvas-pattern-no-repeat-with-transformations-expected.png b/third_party/blink/web_tests/fast/canvas/canvas-pattern-no-repeat-with-transformations-expected.png
index 4d6c827..7175080 100644
--- a/third_party/blink/web_tests/fast/canvas/canvas-pattern-no-repeat-with-transformations-expected.png
+++ b/third_party/blink/web_tests/fast/canvas/canvas-pattern-no-repeat-with-transformations-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/css/border-radius-non-negative-expected.png b/third_party/blink/web_tests/fast/css/border-radius-non-negative-expected.png
index 84f0f194..83c63586 100644
--- a/third_party/blink/web_tests/fast/css/border-radius-non-negative-expected.png
+++ b/third_party/blink/web_tests/fast/css/border-radius-non-negative-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png b/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png
index 435e5ee..011c851 100644
--- a/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png
+++ b/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
index f2c7166d..61d732d 100644
--- a/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
+++ b/third_party/blink/web_tests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/gradients/background-clipped-expected.png b/third_party/blink/web_tests/fast/gradients/background-clipped-expected.png
index bd4d5bc..00ce2b2 100644
--- a/third_party/blink/web_tests/fast/gradients/background-clipped-expected.png
+++ b/third_party/blink/web_tests/fast/gradients/background-clipped-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/peerconnection/RTCIceCandidate.html b/third_party/blink/web_tests/fast/peerconnection/RTCIceCandidate.html
index f72301a..4ea2c80 100644
--- a/third_party/blink/web_tests/fast/peerconnection/RTCIceCandidate.html
+++ b/third_party/blink/web_tests/fast/peerconnection/RTCIceCandidate.html
@@ -28,7 +28,6 @@
 }, 'Constructor can be initialized with output from another constructor');
 
 test(function() {
-    assert_throws('TypeMismatchError', () => new RTCIceCandidate({sdpMid: ''}));
     assert_throws({name: 'TypeError'}, () => new RTCIceCandidate({}));
     assert_throws({name: 'TypeError'}, () => new RTCIceCandidate(5));
     assert_throws({name: 'TypeError'}, () => new RTCIceCandidate('foobar'));
@@ -36,23 +35,19 @@
 }, 'Constructor throws on invalid input');
 
 test(function() {
-    new RTCIceCandidate({candidate: 'x', sdpMid: ''})
+    new RTCIceCandidate({candidate: 'x', sdpMid: ''});
+    new RTCIceCandidate({sdpMid: ''});
 }, 'Constructor does not throw on valid input');
 
 test(function() {
     const candidate = new RTCIceCandidate(getInitializer());
     candidate.candidate = 'bar';
     candidate.sdpMid = 'foo';
-    candidate.sdpMLineIndex = 0;
-    assert_equals(candidate.candidate, 'bar');
-    assert_equals(candidate.sdpMid, 'foo');
-    assert_equals(candidate.sdpMLineIndex, 0);
-
-    candidate.candidate = null;
-    candidate.sdpMid = null;
-    assert_equals(candidate.candidate, 'null');
-    assert_equals(candidate.sdpMid, 'null');
-}, 'candidate, sdpMid, and sdpMLineIndex properties can be modified');
+    candidate.sdpMLineIndex = 1;
+    assert_equals(candidate.candidate, 'foo');
+    assert_equals(candidate.sdpMid, 'bar');
+    assert_equals(candidate.sdpMLineIndex, 6);
+}, 'candidate, sdpMid, and sdpMLineIndex properties are read only');
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/network-filters-expected.txt b/third_party/blink/web_tests/http/tests/devtools/network/network-filters-expected.txt
index 0714dee..4c605f1 100644
--- a/third_party/blink/web_tests/http/tests/devtools/network/network-filters-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/network/network-filters-expected.txt
@@ -39,4 +39,10 @@
 filterText: -is:from-cache
 Found results: 3
 
+hide data URLs unchecked
+Found results: 6
+
+hide data URLs checked
+Found results: 4
+
 
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/network-filters.js b/third_party/blink/web_tests/http/tests/devtools/network/network-filters.js
index 7a7e65e..e15449cc 100644
--- a/third_party/blink/web_tests/http/tests/devtools/network/network-filters.js
+++ b/third_party/blink/web_tests/http/tests/devtools/network/network-filters.js
@@ -9,17 +9,20 @@
 
   await NetworkTestRunner.clearNetworkCache();
 
+  async function makeFetchPromise(url) {
+    return new Promise(resolve => {
+      NetworkTestRunner.makeFetch(url, {}, resolve);
+    });
+  }
+
   NetworkTestRunner.recordNetwork();
 
-  NetworkTestRunner.makeFetch('resources/style.css', {}, ensureAllResources);
-  NetworkTestRunner.makeFetch('resources/abe.png', {}, () => {
-    // Ensures result is cached.
-    NetworkTestRunner.makeFetch('resources/abe.png', {}, ensureAllResources);
-    ensureAllResources();
-  });
-  NetworkTestRunner.makeFetch('missing/foo.bar', {}, ensureAllResources);
+  await makeFetchPromise('resources/style.css');
+  await makeFetchPromise('resources/abe.png');
+  await makeFetchPromise('resources/abe.png');  // Ensure result is cached.
+  await makeFetchPromise('missing/foo.bar');
 
-  var filterChecks = [
+  const filterChecks = [
     '-.css',
     '-.png',
     'css',
@@ -35,34 +38,44 @@
     '-is:from-cache',
   ];
 
-  var resourceCount = 0;
-  var totalResourceCount = 4;
-  function ensureAllResources() {
-    if (++resourceCount >= totalResourceCount)
-      checkFilters();
+  for (const filterText of filterChecks) {
+    TestRunner.addResult('filterText: ' + filterText);
+    setNetworkLogFilter(filterText);
+    printNetworkLog();
   }
+  setNetworkLogFilter('');
 
-  function checkFilters() {
-    for (var filterText of filterChecks) {
-      TestRunner.addResult('filterText: ' + filterText);
-      setNetworkLogFilter(filterText);
+  await TestRunner.evaluateInPageAsync(
+      `fetch('data:;base64,c2VuZGluZyB0aGlzIHV0Zi04IHN0cmluZyBhcyBhIGJpbmFyeSBtZXNzYWdlLi4u')`);
+  await TestRunner.evaluateInPageAsync(
+      `fetch(URL.createObjectURL(new Blob(new Uint8Array([1, 2, 3, 4]))))`);
+  UI.panels.network._networkLogView._filterChanged(null);
 
-      var nodes = UI.panels.network._networkLogView.flatNodesList();
-      var foundNodesCount = 0;
-      for (var i = 0; i < nodes.length; i++) {
-        if (!nodes[i][Network.NetworkLogView._isFilteredOutSymbol])
-          foundNodesCount++;
-      }
+  TestRunner.addResult('hide data URLs unchecked');
+  printNetworkLog();
 
-      TestRunner.addResult('Found results: ' + foundNodesCount);
-      TestRunner.addResult('');
+  UI.panels.network._networkLogView._dataURLFilterUI.setChecked(true);
+  UI.panels.network._networkLogView._filterChanged(null);
+  TestRunner.addResult('hide data URLs checked');
+  printNetworkLog();
+
+  TestRunner.completeTest();
+
+  function printNetworkLog() {
+    const nodes = UI.panels.network._networkLogView.flatNodesList();
+    let foundNodesCount = 0;
+    for (let i = 0; i < nodes.length; i++) {
+      if (!nodes[i][Network.NetworkLogView._isFilteredOutSymbol])
+        foundNodesCount++;
     }
-    TestRunner.completeTest();
+
+    TestRunner.addResult('Found results: ' + foundNodesCount);
+    TestRunner.addResult('');
   }
 
   /**
-     * @param {string} value
-     */
+   * @param {string} value
+   */
   function setNetworkLogFilter(value) {
     UI.panels.network._networkLogView._textFilterUI.setValue(value);
     UI.panels.network._networkLogView._filterChanged(null);  // event not used in this method, so passing null
diff --git a/third_party/blink/web_tests/images/cross-fade-invalidation-expected.png b/third_party/blink/web_tests/images/cross-fade-invalidation-expected.png
index c649c5f..34665ed3 100644
--- a/third_party/blink/web_tests/images/cross-fade-invalidation-expected.png
+++ b/third_party/blink/web_tests/images/cross-fade-invalidation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/images/cross-fade-overflow-position-expected.png b/third_party/blink/web_tests/images/cross-fade-overflow-position-expected.png
index 13cea7e..a64ffc9a 100644
--- a/third_party/blink/web_tests/images/cross-fade-overflow-position-expected.png
+++ b/third_party/blink/web_tests/images/cross-fade-overflow-position-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/media/video-remove-insert-repaints.html b/third_party/blink/web_tests/media/video-remove-insert-repaints.html
index 9b2c0db..5726c20 100644
--- a/third_party/blink/web_tests/media/video-remove-insert-repaints.html
+++ b/third_party/blink/web_tests/media/video-remove-insert-repaints.html
@@ -10,8 +10,9 @@
 
             function seeked()
             {
+                // Wait for one rAF to ensure a new frame is onscreen.
                 if (window.testRunner)
-                    testRunner.notifyDone();
+                    requestAnimationFrame(_ => testRunner.notifyDone());
             }
 
             function playing()
diff --git a/third_party/blink/web_tests/paint/invalidation/box/border-radius-repaint-2-expected.png b/third_party/blink/web_tests/paint/invalidation/box/border-radius-repaint-2-expected.png
index 759fc0f..a7fe526 100644
--- a/third_party/blink/web_tests/paint/invalidation/box/border-radius-repaint-2-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/box/border-radius-repaint-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/animate-path-discrete-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/animate-path-discrete-expected.png
index 7faa8a0..52709b2 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/animate-path-discrete-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/animate-path-discrete-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/js-update-bounce-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/js-update-bounce-expected.png
index a5cb355..7c45db8b 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/js-update-bounce-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/js-update-bounce-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/js-update-polygon-removal-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/js-update-polygon-removal-expected.png
index 2b863aa..3026fff32 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/js-update-polygon-removal-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/js-update-polygon-removal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/paintorder-filtered-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/paintorder-filtered-expected.png
index 9a7de19..e3069cd 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/paintorder-filtered-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/paintorder-filtered-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/repaint-paintorder-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/repaint-paintorder-expected.png
index 8783803..15ae690e 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/repaint-paintorder-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/repaint-paintorder-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/use-setAttribute-crash-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/use-setAttribute-crash-expected.png
index 9467456..242b051c 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/use-setAttribute-crash-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/use-setAttribute-crash-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/table/table-cell-vertical-overflow-expected.png b/third_party/blink/web_tests/paint/invalidation/table/table-cell-vertical-overflow-expected.png
index 2163838d..e49e50f 100644
--- a/third_party/blink/web_tests/paint/invalidation/table/table-cell-vertical-overflow-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/table/table-cell-vertical-overflow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/android/compositing/rendering-contexts-expected.txt b/third_party/blink/web_tests/platform/android/compositing/rendering-contexts-expected.txt
index 72852ca..cfe221a 100644
--- a/third_party/blink/web_tests/platform/android/compositing/rendering-contexts-expected.txt
+++ b/third_party/blink/web_tests/platform/android/compositing/rendering-contexts-expected.txt
@@ -2,13 +2,11 @@
   "layers": [
     {
       "name": "LayoutView #document",
-      "bounds": [800, 600],
       "drawsContent": false,
       "backgroundColor": "#FFFFFF"
     },
     {
       "name": "Scrolling Layer",
-      "bounds": [800, 600],
       "drawsContent": false
     },
     {
diff --git a/third_party/blink/web_tests/platform/android/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/blink/web_tests/platform/android/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
new file mode 100644
index 0000000..c147371
--- /dev/null
+++ b/third_party/blink/web_tests/platform/android/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/android/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt b/third_party/blink/web_tests/platform/android/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt
index 23de772..79fa1d4 100644
--- a/third_party/blink/web_tests/platform/android/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt
+++ b/third_party/blink/web_tests/platform/android/paint/invalidation/compositing/should-not-repaint-composited-opacity-expected.txt
@@ -2,13 +2,11 @@
   "layers": [
     {
       "name": "LayoutView #document",
-      "bounds": [800, 600],
       "drawsContent": false,
       "backgroundColor": "#FFFFFF"
     },
     {
       "name": "Scrolling Layer",
-      "bounds": [800, 600],
       "drawsContent": false
     },
     {
diff --git a/third_party/blink/web_tests/platform/android/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt b/third_party/blink/web_tests/platform/android/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
index 289f274..fa294d6 100644
--- a/third_party/blink/web_tests/platform/android/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
+++ b/third_party/blink/web_tests/platform/android/paint/invalidation/svg/animated-svg-as-image-transformed-offscreen-expected.txt
@@ -2,13 +2,11 @@
   "layers": [
     {
       "name": "LayoutView #document",
-      "bounds": [800, 600],
       "drawsContent": false,
       "backgroundColor": "#FFFFFF"
     },
     {
       "name": "Scrolling Layer",
-      "bounds": [800, 600],
       "drawsContent": false
     },
     {
diff --git a/third_party/blink/web_tests/platform/android/virtual/gpu-rasterization/images/drag-image-descendant-painting-sibling-expected.png b/third_party/blink/web_tests/platform/android/virtual/gpu-rasterization/images/drag-image-descendant-painting-sibling-expected.png
new file mode 100644
index 0000000..a29647cc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/android/virtual/gpu-rasterization/images/drag-image-descendant-painting-sibling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
new file mode 100644
index 0000000..c147371
--- /dev/null
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
new file mode 100644
index 0000000..7c3fe92
--- /dev/null
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
new file mode 100644
index 0000000..e8a69d5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
new file mode 100644
index 0000000..09817f2
--- /dev/null
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
new file mode 100644
index 0000000..4e19d96
--- /dev/null
+++ b/third_party/blink/web_tests/platform/fuchsia/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/collapsing_borders/bug41262-3-expected.png b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/collapsing_borders/bug41262-3-expected.png
new file mode 100644
index 0000000..afbd12b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/collapsing_borders/bug41262-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/blink/web_tests/platform/linux/compositing/overflow/mask-with-small-content-rect-expected.png
index a50cfe6..7391ee8 100644
--- a/third_party/blink/web_tests/platform/linux/compositing/overflow/mask-with-small-content-rect-expected.png
+++ b/third_party/blink/web_tests/platform/linux/compositing/overflow/mask-with-small-content-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/compositing/overflow/scaled-mask-expected.png b/third_party/blink/web_tests/platform/linux/compositing/overflow/scaled-mask-expected.png
index 3700b9e4..e82f62c 100644
--- a/third_party/blink/web_tests/platform/linux/compositing/overflow/scaled-mask-expected.png
+++ b/third_party/blink/web_tests/platform/linux/compositing/overflow/scaled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png
index 169fb45..acae19f 100644
--- a/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css1/box_properties/border_style-expected.png b/third_party/blink/web_tests/platform/linux/css1/box_properties/border_style-expected.png
index b406380b..2dea93e4 100644
--- a/third_party/blink/web_tests/platform/linux/css1/box_properties/border_style-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css1/box_properties/border_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png
index ec7c352..b374983 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png
index 9d2ac0f2..c0f5997b 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-13-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-13-d-expected.png
index 6fbcdc0..b199e9c4 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-13-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-13-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png
index b791f98..073ac19a 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-23-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-23-d-expected.png
index 0cf8e3e1..ef1c332a 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-23-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-23-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png
index eef70ec..d265e51 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-33-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-33-d-expected.png
index 7344f47..7f6c8ef 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-33-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-33-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png
index 41d6c6e..4d6b00d 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png
index 02f95d30..3a146673 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png
index e0dd4c3..8f9124a 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png
index f8c5ff4..deea941d 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png
index 7ffc3c1..34a041c 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png
index 1ee1ab4..dc0a514d 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png
index 5310308..51469ac 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png
index aebc389..56ca45f 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png
index 7b3c776..8d5592e1 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png
index 3349240e..4531f79 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-53-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-53-d-expected.png
index 5a53c85..98457a0 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-53-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-53-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png
index 143234e..0e19c97 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-63-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-63-d-expected.png
index 8291f27..d80e6c6a 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-63-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-63-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png
index f72be72..9ea3995 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-73-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-73-d-expected.png
index 7a9fdd5d..7b0a8668 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-73-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-73-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png
index 002f60f..0202b49 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-83-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-83-d-expected.png
index 9beba006..e737f86 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-83-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-83-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png
index 23264f77..b56ceeb9 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png
index 325bf29..11490ec 100644
--- a/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png
+++ b/third_party/blink/web_tests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png b/third_party/blink/web_tests/platform/linux/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
index 527b9bc..643bfde 100644
--- a/third_party/blink/web_tests/platform/linux/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png b/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png
index 46fa93a..f1cc8b0 100644
--- a/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/block/positioning/child-of-absolute-with-auto-height-expected.png b/third_party/blink/web_tests/platform/linux/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
index 4e80540..be78e1a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-inner-bleed-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-inner-bleed-expected.png
index 5787793..0fd4341 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-inner-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-inner-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-double-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-double-expected.png
index b48fdcf8..5e7907b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-double-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-double-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-expected.png
index 1ef1016..0a16e5a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-constraints-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-huge-assert-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-huge-assert-expected.png
index 51310b9..76ce71b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-huge-assert-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-huge-assert-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-percent-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-percent-expected.png
index 9ed0935a..b16cee5 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-percent-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-radius-percent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png
index 58522896..83a6dae 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusInvalidColor-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusInvalidColor-expected.png
index 11580b6..fd02fcbc 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusInvalidColor-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/borderRadiusInvalidColor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png
index be5eff4..c042d0a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/dashed-1px-with-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-block-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-block-expected.png
index 7ffb78f..4c889e8 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-block-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/outline-alpha-block-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-expected.png b/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-expected.png
index 1e7e6e9..117f37b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-subpixel-expected.png b/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-subpixel-expected.png
index 029fc0be..5524f4fb 100644
--- a/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-subpixel-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/box-shadow/inset-subpixel-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png
index 6367aaba..1ae64b5 100644
--- a/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
index c147371..c54e1a11 100644
--- a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
index 7c3fe92..371735cb 100644
--- a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
index e8a69d5..69770d9d 100644
--- a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
index 09817f2..4fac971e 100644
--- a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
index 4e19d96..85232ea 100644
--- a/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index f9f798c..30f9855b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
index c427233..d0a3ba4 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
index e652297..5331a80f 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/control-clip-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/control-clip-expected.png
index 0a37700..0d3e91f8 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/control-clip-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/control-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png
index e8da1b8..6e84a0a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
index 237e5c4d..01bece0 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
index bd30a60..3dbcd48 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/layers/opacity-outline-expected.png b/third_party/blink/web_tests/platform/linux/fast/layers/opacity-outline-expected.png
index 2ff2dd66..868fd94 100644
--- a/third_party/blink/web_tests/platform/linux/fast/layers/opacity-outline-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/layers/opacity-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/blink/web_tests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png
index 5b7cd2f..367419d 100644
--- a/third_party/blink/web_tests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
index 548ea5ad..d75a350 100644
--- a/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
index 70ec954..4b85267 100644
--- a/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png
index e33b5256..c58a8dc 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-expected.png
index 2e63962..bfff3f4 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png
index 25e7d1c..7ac0c80 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png
index 8c3086e..52d963c 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-expected.png
index b84c41e..aebc011 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
index b591c41e..a0a1911d 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-expected.png
index 1a6268f9..c52eb55 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-expected.png
index 5188451..c2271d1 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
index 60f5a79..780cfbbc 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-expected.png
index edfe5321..0d655db 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png
index 31440827..4a232696 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-expected.png
index 84a4735..0909a74b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
index e130748..41eb13f2 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-expected.png
index 61945be3..d7e4ffd 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_border-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png
index 75f5289c..30c28a09 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-expected.png
index 0889a9a..ebe41b8 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_layers-hide-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png
index d6ab0ea4..4e6255d 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-expected.png
index 970c4af..d6812eb 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png
index 63ce03a9..943ddcfe 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png
index b4cba4bb..7717118 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-expected.png
index e952b4b..ded9ed3 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
index 9e6ff425..ce790155 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-expected.png
index b463b5ed..b2f1dff 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-expected.png
index 2be66f6..1c7b4a70 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png
index 3b2b7a2..08f24ac2 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-expected.png
index b35ab12..86f84663 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
index e3e3dd08..c620b84 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-expected.png
index 925910c..ff03e75 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_position-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
index 56a75e2..dae51df 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-expected.png
index 9a52e82..1cbb9c10 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png
index b3754c78..a531507f 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png
index 1ea0c8a..af92a81 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-expected.png
index 905ea95..bce2a10 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
index d1abea4..d1882ba 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png
index 5443e33..b46fb476 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-expected.png
index ee8313d..aa807e0 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png
index 23421cd59..b45dcaa 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-expected.png
index 07abb3a4..b590494 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
index 14138a8..bcb021f 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png
index a238f804d..4cf5bbae1 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-expected.png
index 8b0bda7..b73441b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png
index 2a68c90..522e9cc 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-expected.png
index ce524a2..bde97e4b 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-vertical-expected.png b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-vertical-expected.png
index ead87fe..20c674f 100644
--- a/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/table/border-collapsing/002-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/text/shadow-translucent-fill-expected.png b/third_party/blink/web_tests/platform/linux/fast/text/shadow-translucent-fill-expected.png
index 587ac8c3..17da50c 100644
--- a/third_party/blink/web_tests/platform/linux/fast/text/shadow-translucent-fill-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/text/shadow-translucent-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/http/tests/media/video-buffered-range-contains-currentTime-expected.png b/third_party/blink/web_tests/platform/linux/http/tests/media/video-buffered-range-contains-currentTime-expected.png
index 4c974e10..d34d433 100644
--- a/third_party/blink/web_tests/platform/linux/http/tests/media/video-buffered-range-contains-currentTime-expected.png
+++ b/third_party/blink/web_tests/platform/linux/http/tests/media/video-buffered-range-contains-currentTime-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
index c8801a1d..9215026 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
index 6bc927a..e178c46d 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
index 7962afeb..5fa5444f 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
index 7bc10500..9f72eea 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
index cacc1c0..9b12144 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
index 39c7fe5e..98fe9ff 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
index 44aca57..8d5afe0 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
index 88ce95a..5ad4cf1 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
index c988824..03f61f9 100644
--- a/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
+++ b/third_party/blink/web_tests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/imagemap-focus-ring-with-scale-transform-expected.png b/third_party/blink/web_tests/platform/linux/images/imagemap-focus-ring-with-scale-transform-expected.png
index eff4117..cdbcf0e36 100644
--- a/third_party/blink/web_tests/platform/linux/images/imagemap-focus-ring-with-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/linux/images/imagemap-focus-ring-with-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/audio-controls-rendering-expected.png b/third_party/blink/web_tests/platform/linux/media/audio-controls-rendering-expected.png
index c4a37c04..82d2997a 100644
--- a/third_party/blink/web_tests/platform/linux/media/audio-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/audio-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png
index 1f0f2fd..bd2de7f 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png
index 799df38..41e7aed 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png
index ff1352c..c5423d56 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png
index c25af16..8e785f4 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png
index 3110727..5f1182d 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png
index 5090190..6c01930a 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png b/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
index 4d75bd6..7be338bd 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png
index 71aef90..18eaafb 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls/video-controls-with-cast-rendering-expected.png b/third_party/blink/web_tests/platform/linux/media/controls/video-controls-with-cast-rendering-expected.png
index a850240..0b554e1 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls/video-controls-with-cast-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls/video-controls-with-cast-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png
index a9c6fe24..fa7458f 100644
--- a/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png
index f4e6e83..e02cbe4a 100644
--- a/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/linux/media/media-document-audio-repaint-expected.png
index bd2ffafe..0a4036b 100644
--- a/third_party/blink/web_tests/platform/linux/media/media-document-audio-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png
index 0de3153..347bf3d9 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png
index 28c4d10..e4413487 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png
index 10689fa..f691988 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png
index 61e384d..f8169cd2 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/layer-child-outline-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/layer-child-outline-expected.png
index 00fdc32..5f00f68d 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/layer-child-outline-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/outline/layer-child-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/svg-image-change-content-size-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/svg-image-change-content-size-expected.png
index 9d58a03..ab1dcfd0 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/svg-image-change-content-size-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/svg-image-change-content-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png
index 02f7447..2f8fefb8 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/use-detach-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/use-detach-expected.png
index 2b097b2..2728e98 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/use-detach-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/use-detach-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
index 4026a02..ea77ba9d 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-125-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-125-expected.png
index 921ec3ef..0f912e0 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-125-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-150-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-150-expected.png
index 2039dee0..98292d8 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-150-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-150-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-175-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-175-expected.png
index 9446371..980c785 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-175-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-175-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-200-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-200-expected.png
index d7e57c2c..3f8d61a 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-200-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-250-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-250-expected.png
index 4e2a4a9..af12708 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-250-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/document-markers-zoom-250-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/grammar-markers-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/grammar-markers-hidpi-expected.png
index d5622fe8..7b3fc69f 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/grammar-markers-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/grammar-markers-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
index 0d17045f..e145999f 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-expected.png
index 0d17045f..e145999f 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/inline-spelling-markers-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/markers/markers-zoomed-expected.png b/third_party/blink/web_tests/platform/linux/paint/markers/markers-zoomed-expected.png
index c220fd9..08d4686 100644
--- a/third_party/blink/web_tests/platform/linux/paint/markers/markers-zoomed-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/markers/markers-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
index fa36380..fd9d753e 100644
--- a/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/plugins/webview-plugin-border-radius-expected.png b/third_party/blink/web_tests/platform/linux/plugins/webview-plugin-border-radius-expected.png
index 5059d5ae..a43c23f 100644
--- a/third_party/blink/web_tests/platform/linux/plugins/webview-plugin-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/linux/plugins/webview-plugin-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/scrollbars/border-box-rect-clips-scrollbars-expected.png b/third_party/blink/web_tests/platform/linux/scrollbars/border-box-rect-clips-scrollbars-expected.png
index 1dddc6f..bc907c0 100644
--- a/third_party/blink/web_tests/platform/linux/scrollbars/border-box-rect-clips-scrollbars-expected.png
+++ b/third_party/blink/web_tests/platform/linux/scrollbars/border-box-rect-clips-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
index 1dd9a82..b82445d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
index 651c9a8..2e2131cb2c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
index abbf656..45ae1967d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
index 10870ca..f719f48 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
index a98d094..8847e5c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
index b8bb366..d092f2ef 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
index 26b6ea0..91e4c4cc 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
index e00538b..76862f0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
index ace2bc63..925fa1767 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
index 5e32a606..b70626c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
index fdef736..0fd9a52 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
index 53514ea..e425d4d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
index 614e134..ff7806a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
index ecd6ce1..94b9761 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
index 140cfa6..545bdc2 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
index 95f4c48..aeae1437 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
index 3ca4f4d..250a907 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
index 45f9ee49..69d3d24 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
index b60a814b..6b9015c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
index 618ff15..d401beee 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
index 4026a02..ea77ba9d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
index 55099688..4e0b042 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
index 41cd85f..400417a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-example-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-example-01-b-expected.png
index e8f85c4..68ff2dd 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-example-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-example-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
index 9832d13..8fff5ac 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
index 62628bb..0721c8b 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
index 407f6fd..c80e44b1 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
index 9556407..cdc7fc11 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
index d6db5e84..0acc0fb 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
index cb4d8e6..db18c3d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
index 7820228..2de3359 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
index 0173588..6b3c8fa 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
index b66ff537..dc83b50 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
index b9ec2a7c..28e3edd 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
index 7bcf92e..4f220a6 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
index b53957e..82e03a2 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-render-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
index 6cda831..95cd005 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
index cfba3b3..98950bb1 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
index c956371..6796067 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
index 15916f5..8725bd3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-02-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
index 639b235..422d48e9 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
index aae1dd9..e14c0290 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
index c5eaf2f..6128463 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
index f8df3d2..fea4876 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
index fb65d42..f322228 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
index 84efbe7..ee9f2e5 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
index ca190d9..5b76954a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png
index cdfb310..1663d49 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-11-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-11-b-expected.png
index d3c8f77e..0344bd8a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-11-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-11-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-pattern-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-pattern-01-b-expected.png
index 29fff79..91b59f7 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-pattern-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/pservers-pattern-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
index 4374eb1..2c22988 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
index 591d87e4..675bd41 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png
index 33b5ecd..99fcd76 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png
index 2121fc38..6e87d0c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
index a0aba2d2..3a1ea14d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
index 0b2ca4a..b904639 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
index c48edd8..06a583d3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
index 995b6b3..1ea263e3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
index 4e53514..8f7109a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-use-01-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
index 413cd23..1e853e25 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png
index de0a1de..a6cee839 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
index 1db575d4..7b56ea6 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
index 10e79ba..05d6e21f3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
index 8938282..d8aed1f4 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png b/third_party/blink/web_tests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
index 0a024db..ff0ed05 100644
--- a/third_party/blink/web_tests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png b/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png
index 6c7978a0..2c24bb46 100644
--- a/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png b/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png
index 7fac5972..1a71cb9 100644
--- a/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png b/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png
index 2b3915ad..d2f3d56 100644
--- a/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/as-image/img-preserveAspectRatio-support-2-expected.png b/third_party/blink/web_tests/platform/linux/svg/as-image/img-preserveAspectRatio-support-2-expected.png
index 60e91b4..79eff95 100644
--- a/third_party/blink/web_tests/platform/linux/svg/as-image/img-preserveAspectRatio-support-2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/as-image/img-preserveAspectRatio-support-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/filters/feTile-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/filters/feTile-expected.png
index 9effe73..2998d0e0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/filters/feTile-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/filters/feTile-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/filters/filterRegions-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/filters/filterRegions-expected.png
index 3fcfbf6..d7db04b2 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/filters/filterRegions-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/filters/filterRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/masking/maskRegions-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/masking/maskRegions-expected.png
index a2ae9dd..2e76c035 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/masking/maskRegions-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/masking/maskRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/paints/gradientLimit-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/paints/gradientLimit-expected.png
index 2cbff40..c22d6f6d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/paints/gradientLimit-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/paints/gradientLimit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternPreserveAspectRatioA-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternPreserveAspectRatioA-expected.png
index 6bb22f1..21f0e8c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternPreserveAspectRatioA-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternPreserveAspectRatioA-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegionA-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegionA-expected.png
index 836879d..8251ee9 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegionA-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegionA-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-expected.png
index 2fec371c..e927ba3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-positioned-objects-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-positioned-objects-expected.png
index a8e1d6db..730466e 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-positioned-objects-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/paints/patternRegions-positioned-objects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/longTextOnPath-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/longTextOnPath-expected.png
index 1e1398b..f91be11 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/longTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/longTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/smallFonts-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/smallFonts-expected.png
index e107a14..bf2e8a5a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/smallFonts-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/smallFonts-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textAnchor-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textAnchor-expected.png
index 3171f41..033aa05 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textAnchor-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textAnchor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textDecoration-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textDecoration-expected.png
index 7ff7fef..fbc0f59 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textDecoration-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textDecoration-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect-expected.png
index 3b28c68..ea6be0d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect2-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect2-expected.png
index 91ef57b..b11a0075 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect3-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect3-expected.png
index 5afe505..a111423 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect3-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textEffect3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textFeatures-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textFeatures-expected.png
index d266206..2a4314b3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textFeatures-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textFeatures-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout-expected.png
index f3382f8a..5eaf44a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout2-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout2-expected.png
index bdcb4e0ed..5fec9a0e 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textLayout2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textLength-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textLength-expected.png
index 3732794..d40602c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textLength-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textLength-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPath-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPath-expected.png
index 9000ec3..738001c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPathSpaces-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPathSpaces-expected.png
index 9381c41..6937364 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPathSpaces-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textOnPathSpaces-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition-expected.png
index a2ac8b39..89151543 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition2-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition2-expected.png
index 67600f61..1351bf7d 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textPosition2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties-expected.png
index ab1b5eae..74d5993 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties2-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties2-expected.png
index 1f967ec..83761d0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textProperties2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/textStyles-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/textStyles-expected.png
index 4302ecbb..7b5e2418 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/textStyles-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/textStyles-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalText-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalText-expected.png
index 39e325ea..ef7b31b 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalText-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalText-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalTextOnPath-expected.png b/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalTextOnPath-expected.png
index c59b05b..82f9139 100644
--- a/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/batik/text/verticalTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/clone-element-with-animated-svg-properties-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/clone-element-with-animated-svg-properties-expected.png
index 5a32cde..991bc8c1 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/clone-element-with-animated-svg-properties-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/clone-element-with-animated-svg-properties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/focus-ring-expected.png
index d43df35b..62028f1e 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/invalid-css-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/invalid-css-expected.png
index 77762540..aa35dc8 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/invalid-css-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/invalid-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
index 20689907..530e4b0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png
index eba4b05f..c20a7bf 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png
index 20689907..530e4b0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png
index 20689907..530e4b0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/marker-orient-auto-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/marker-orient-auto-expected.png
index 8f2645c..414cdcd 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/marker-orient-auto-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/marker-orient-auto-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png
index f617a11..6a61f4bf 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png
index 997086c9..ad031b4 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/second-inline-text-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/second-inline-text-expected.png
index b902cba..eff6746 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/second-inline-text-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/second-inline-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/shapes-supporting-markers-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/shapes-supporting-markers-expected.png
index b441ae9..4722e6d6 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/shapes-supporting-markers-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/shapes-supporting-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/stroked-pattern-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/stroked-pattern-expected.png
index ca58143a..b6af9b3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/stroked-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/stroked-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png
index db5b772..275a547 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/use-on-text-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/use-on-text-expected.png
index b8f729ff..0b3d3b87 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/use-on-text-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/use-on-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/use-transform-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/use-transform-expected.png
index d8a44b03..2d0235f4 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/use-transform-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/use-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/viewbox-syntax-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/viewbox-syntax-expected.png
index 75ce29a5..aac72f4 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/viewbox-syntax-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/viewbox-syntax-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-in-attr-expected.png b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-in-attr-expected.png
index 05a34bda..f346f8c0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-in-attr-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-operator-attr-expected.png b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-operator-attr-expected.png
index f9218f7..077b03c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-operator-attr-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-operator-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-radius-attr-expected.png b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-radius-attr-expected.png
index f9218f7..077b03c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-radius-attr-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-dom-radius-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-in-prop-expected.png
index 05a34bda..f346f8c0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-in-prop-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-operator-prop-expected.png b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-operator-prop-expected.png
index f9218f7..077b03c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-operator-prop-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-operator-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-radius-call-expected.png b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-radius-call-expected.png
index f9218f7..077b03c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-radius-call-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/dynamic-updates/SVGFEMorphologyElement-svgdom-radius-call-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/hixie/error/017-expected.png b/third_party/blink/web_tests/platform/linux/svg/hixie/error/017-expected.png
index e8c41c0..2e6bd1b 100644
--- a/third_party/blink/web_tests/platform/linux/svg/hixie/error/017-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/hixie/error/017-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/001-expected.png b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/001-expected.png
index f15849f..a130a906 100644
--- a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/001-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/002-expected.png b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/002-expected.png
index 7b873c0..de9c06f9 100644
--- a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/002-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/007-expected.png b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/007-expected.png
index c8ea8bd5..12b68f0 100644
--- a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/007-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/text/text-selection-text-08-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/text/text-selection-text-08-b-expected.png
index 75f8377..de2b293 100644
--- a/third_party/blink/web_tests/platform/linux/svg/text/text-selection-text-08-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/text/text-selection-text-08-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
index fa035c43..9e793f5 100644
--- a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
index cfb765f8..6bbde82 100644
--- a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
index cfb765f8..6bbde82 100644
--- a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
index 6c0f3b3..025f76a 100644
--- a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
index 11baae3..cb0e3c3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-3-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-3-expected.png
index afbd12b..7c77e32 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-3-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/collapsing_borders/bug41262-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/marvin/tables_style-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/marvin/tables_style-expected.png
index 9155cc69..b5c89d24 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/marvin/tables_style-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/marvin/tables_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index b5bcdfb..fc38c57 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png b/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png
index 6bb0c031..3e33d68 100644
--- a/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png
+++ b/third_party/blink/web_tests/platform/linux/transforms/transformed-focused-text-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png
index 355b9c3..8f81465d 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
index 9f50cc1..2a102ee 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png
new file mode 100644
index 0000000..367419d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png b/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
index 4d75bd6..7be338bd 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
index 71aef90..18eaafb 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/video-controls-with-cast-rendering-expected.png b/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/video-controls-with-cast-rendering-expected.png
index a850240..0b554e1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/video-controls-with-cast-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/new-remote-playback-pipeline/media/controls/video-controls-with-cast-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-small-content-rect-expected.png
index a50cfe6..7391ee8 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-small-content-rect-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-small-content-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png b/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png
new file mode 100644
index 0000000..e82f62c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png b/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
index e84005f..9ce94f9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
index 6171219..21a1bcc 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
index c672adc..2cb3c14f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
index 6e87889..d7dac86 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index f685608..dc1b7ff3 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
index 3480c30..10c50f9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
index 815a76d..413d2f1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
index d0fb098..3a0efe1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index c2fe331..4691d3c 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
index 3480c30..10c50f9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
index 815a76d..413d2f1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png
index d0fb098..3a0efe1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index c2fe331..4691d3c 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-above-composited-subframe-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-above-composited-subframe-expected.png
index 982ca5a..6fc1bc4 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-above-composited-subframe-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-above-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-composited-subframe-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-composited-subframe-expected.png
index c024ba35..467f6527 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-composited-subframe-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-composited-subframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-styles-with-composited-child-expected.png
new file mode 100644
index 0000000..0a96ecf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/border-radius-styles-with-composited-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/mask-with-small-content-rect-expected.png
new file mode 100644
index 0000000..7391ee8
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/mask-with-small-content-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/scaled-mask-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/scaled-mask-expected.png
new file mode 100644
index 0000000..e82f62c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/overflow/scaled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/video/video-controls-layer-creation-expected.png
index 169fb45..acae19f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-125-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-125-expected.png
index 921ec3ef..0f912e0 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-125-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-150-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-150-expected.png
new file mode 100644
index 0000000..98292d8
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-150-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-175-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-175-expected.png
new file mode 100644
index 0000000..980c785
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-175-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-200-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-200-expected.png
index d7e57c2c..3f8d61a 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-200-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-250-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-250-expected.png
index 4e2a4a9..af12708 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-250-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/document-markers-zoom-250-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/grammar-markers-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/grammar-markers-hidpi-expected.png
new file mode 100644
index 0000000..7b3fc69f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/grammar-markers-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
new file mode 100644
index 0000000..e145999f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/inline-spelling-markers-hidpi-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/inline-spelling-markers-hidpi-expected.png
new file mode 100644
index 0000000..e145999f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/inline-spelling-markers-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/markers-zoomed-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/markers-zoomed-expected.png
index c220fd9..08d4686 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/markers-zoomed-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/markers/markers-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
index fa36380..fd9d753e 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/stable/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/stable/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/audio-controls-rendering-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/audio-controls-rendering-expected.png
index c4a37c04..82d2997a 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/audio-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/audio-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-after-reload-expected.png
index 1f0f2fd..bd2de7f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-layout-direction-expected.png
index 799df38..41e7aed 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-strict-expected.png
index ff1352c..c5423d56 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-expected.png
index c25af16..8e785f4 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-strict-expected.png
index 3110727..5f1182d 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-without-preload-expected.png
index 5090190..6c01930a 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls/video-controls-with-cast-rendering-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls/video-controls-with-cast-rendering-expected.png
index a850240..0b554e1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls/video-controls-with-cast-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/controls/video-controls-with-cast-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-clone-expected.png
index a9c6fe24..fa7458f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png
index f4e6e83..e02cbe4a 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
index bd2ffafe..0a4036b 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-controls-rendering-expected.png
index 0de3153..347bf3d9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-display-toggle-expected.png
index 28c4d10..e4413487 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-empty-source-expected.png
index 10689fa..f691988 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-no-audio-expected.png
index 61e384d..f8169cd2 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/video-surface-layer/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index 3f74592..bc549723 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png
index ff781e7f..cec66f2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/custom-elements/form-validation-bubble-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/custom-elements/form-validation-bubble-appearance-expected.png
index f948ab3..3523ec1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/custom-elements/form-validation-bubble-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/custom-elements/form-validation-bubble-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png
index 56c3f44..bd7870a2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/caret-at-the-edge-of-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/caret-at-the-edge-of-input-expected.png
index fc50774..933207e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/caret-at-the-edge-of-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/caret-at-the-edge-of-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png
index 303693f..75aa2693 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/inserting/4278698-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/inserting/4278698-expected.png
index dfa30c7..7dc8ce2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/inserting/4278698-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/inserting/4278698-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png
index d9ddc27..a7f6064 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png
index 03ed877..c0882a5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-box-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-box-expected.png
index 9e86bce..9a04c97 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-box-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-box-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png
index 440164b..4a95431 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png
index 1fcc4b2..8682c378 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png
index 61d2ef29..0d40e159 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/borders/dashed-1px-with-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png
index dc99a28..1b0685c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
index 290a620..cb6aee0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index cf05e36..f3acf1c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
index c3508b5b..18ddf2f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-expected.png
index e2e4972..486c3d65 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
index d9a13cd..76e1182 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
index 1670011..7843c81 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
index 60d9fbe2..9cd7d21e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
index 64c09a19..5a5f34b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
index bb4ed15c..fcd6269 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/control-clip-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/control-clip-expected.png
index 8938844..715e356 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/control-clip-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/control-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/date/date-appearance-basic-expected.png
index fbf2c3c..5992ce2c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/date/date-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/date/date-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
index 00da140..09574d37 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/month/month-appearance-basic-expected.png
index 08e036b8..a49eddf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/month/month-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/month/month-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-rtl-expected.png
index 9c14312..fbd31488 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
index b5ab018..bdb9ecc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png
index 8bd57c5..92fbce9f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-appearance-basic-expected.png
index 1e536d7..9de0960 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-cancel-button-style-sharing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-cancel-button-style-sharing-expected.png
index 6cb9080..9021df3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-cancel-button-style-sharing-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-cancel-button-style-sharing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-rtl-expected.png
index 85b742a..22e1f30 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/search/search-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/basic-selects-expected.png
index 9544b7f2..5d9d79b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/basic-selects-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/basic-selects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/listbox-appearance-basic-expected.png
index 02e63946..a8a6d03f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/listbox-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/listbox-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-basic-expected.png
index 7a08f43e..4f63e2b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
index 09c4618..eec4c16 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
index b929061a..7bbaffb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
index 49e0aa0b..c8f52478 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
index b1493b1..3cb788e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
index 9a5a482c8..be9dcf4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
index 3583f779..37d89fbe 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
index 9dabff2..febe69422 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
index 177056b..5ae1edd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
index c7160e3..f66879f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
index f563a6b1..3449d828 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
index 52c2b461..8c65167d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
index cafc44a..73720c1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
index 18fc605..59c750d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
index 55850cebd..8a0ea9e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
index bc6d1611..71cf799 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
index cfc61a41..0c38323 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
index 92f7052..3430ed7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
index 442263f..b75c5ae1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/tabbing-input-iframe-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/tabbing-input-iframe-expected.png
index 05168e12..68fb72a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/tabbing-input-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/tabbing-input-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-focus-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-focus-expected.png
index ca7444e7..78b299f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-focus-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-focus-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-readonly-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-readonly-expected.png
index 6d500a5..c52085f4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-selection-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-selection-expected.png
index 4b7ec89..ceca617 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-appearance-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-double-click-selection-gap-bug-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-double-click-selection-gap-bug-expected.png
index 27b79e7..554eac8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-double-click-selection-gap-bug-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-double-click-selection-gap-bug-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png
index 4ec6199..42b8eac 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-1-expected.png
index 650d020..7ab9bee 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-3-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-3-expected.png
index 7c163f0..7aa8314 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-placeholder-visibility-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-readonly-autoscroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-readonly-autoscroll-expected.png
index b58861da..c1005a78 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-readonly-autoscroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-readonly-autoscroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-double-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-double-click-expected.png
index b0bceb33..abc9901 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-double-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-double-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-drag-down-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-drag-down-expected.png
index cdca561..06e16e8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-drag-down-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-drag-down-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-option-delete-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-option-delete-expected.png
index ee85fb1..cfef886 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-option-delete-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-option-delete-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-scroll-left-on-blur-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-scroll-left-on-blur-expected.png
index 2207d41..8f81f6d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-scroll-left-on-blur-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/input-text-scroll-left-on-blur-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png
index 794ef45a..bdcbc10 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
index 2a896e9..5bc346b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
index a0e2b5e..c6a99e7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrollbar-expected.png
index c27b76b..116a2d6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrollbar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
index 3f1af59..41edda49 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-type-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-type-expected.png
index 9d1ce08..a9611a1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-type-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/textarea/textarea-scrolled-type-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/time/time-appearance-basic-expected.png
index b573816..ad4774bf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-edge-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-edge-expected.png
index 1578180..82a4d1a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-edge-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-edge-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-iframe-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-iframe-expected.png
index 41cfbee9..377f49b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-rtl-ui-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
index f1f69034..0ddbdbe 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/week/week-appearance-basic-expected.png
index 286ea67..649b97e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/week/week-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/forms/week/week-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
index 68366b3..6859ade 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
index f561b725..f7fbbec 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png
index 76254746..ca5b7aa9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png
index e01e5d08..f16d5a65 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png
index 5c4db39..151ceb0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png
index 0796aac..a3f3a307 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png
index 65f0c4f..cc8cd90 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
index c869b42..cba48be 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png
index d439709..99f042c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png
index 48a24c6..a8632d07 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
index 01cb8d5..816e8f3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png
index 8f7ccea5..15ce134 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png
index 746b459..900f398 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png
index f0e064cc..f735e61 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
index 814c1118..643d9f5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png
index 4d9e215..670e8ad 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png
index bffc307..bd6da38 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png
index f8555f5..4fe185e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png
index 94a8b84..a29b959 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png
index 04564a61..e669c3a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png
index 7cf8f94..0924708 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png
index 55e5dac..ec00354 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png
index 1d13a645..3766ee4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
index f521b30..223ea062e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png
index 0d97e959..0d76375 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png
index 82f1940..47fbdcf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png
index f734feb..7b35eef 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png
index e6d850ebc..95ca025 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
index 0ef0ac7..0a05d9a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png
index af9f0fac..e4c4cf5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
index fce876d..99bffc5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png
index 0410c98..ee58ba55 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png
index 4d88c65..d8a03f8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png
index c2f328e0..90c89c3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png
index db127ed..cc3e50e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
index 035bf9d5..3ee81cd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png
index abc8fd0..947095c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png
index b0a06d6..e58abdd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png
index e5ffe93..c86ff56 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png
index 5ac15b7..7d0f4720 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
index 46fc005..6a60aac 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png
index c54b36ab..79a7678 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-disabled-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-disabled-expected.png
index 73a5f52..e23e748f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-disabled-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-disabled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-expected.png
index 151ba5b..7c0f65c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-rtl-expected.png
index c41b6c7..c0c68114 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/caps-lock-indicator-enabled-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
index 76d06bc..a52a18e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
index 6d06c93..8d950ef1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
index 8c60930..b3e826f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
index 5eb26e8..dbfec51 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png
index eeff69a..5b7f410 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png
index 5b29e9a..00df0f0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png
index e3b1236..6bd755b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/select-new-line-with-line-break-normal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/select-new-line-with-line-break-normal-expected.png
index 737d1c474..1eaf5967 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/select-new-line-with-line-break-normal-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/selection/select-new-line-with-line-break-normal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/shadow-translucent-fill-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/shadow-translucent-fill-expected.png
index c055588e..fd727528 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/shadow-translucent-fill-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/shadow-translucent-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/textarea-caret-expected.png
index eccaad90..1ded73b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/textarea-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/forms/textarea-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
index e0dc2c2..195d8619 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
index c0d39e2c..e2c6c700 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
index 278cd77..da7762af 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/svg/use-detach-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/svg/use-detach-expected.png
index 968b7ee..e351886 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/svg/use-detach-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/invalidation/svg/use-detach-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/paint/selection/text-selection-with-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/paint/selection/text-selection-with-composition-expected.png
index 19e90af..784f04f1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/paint/selection/text-selection-with-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/paint/selection/text-selection-with-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla/collapsing_borders/bug41262-3-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla/collapsing_borders/bug41262-3-expected.png
index 497dea9..4dddac8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla/collapsing_borders/bug41262-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla/collapsing_borders/bug41262-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index 018abac4..3696c682 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/transforms/2d/zoom-menulist-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/transforms/2d/zoom-menulist-expected.png
index 7585cf5..cb41da6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/transforms/2d/zoom-menulist-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/transforms/2d/zoom-menulist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index 3f74592..bc549723 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index f2dcde5..c4b63735 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
index 09c4618..eec4c16 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
index 8833efd..7305d55 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index 70301d6b..34916b6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/custom-elements/form-validation-bubble-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/custom-elements/form-validation-bubble-appearance-expected.png
index e7866c2b..4fbabbf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/custom-elements/form-validation-bubble-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/custom-elements/form-validation-bubble-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/caret-at-the-edge-of-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/caret-at-the-edge-of-input-expected.png
index 5b3bff68..dabafa8e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/caret-at-the-edge-of-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/caret-at-the-edge-of-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png
index 6d0ae6a..27d1a11 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png
index f013e57..b0eb6bb4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png
index 9084fad..4a8bd87 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-box-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-box-expected.png
index d98d3ca..6bcb4173 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-box-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-box-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png
index 4157e0d..eb9aada 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
index 3492b49..924526d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index 59b28aba..8de5c6a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
index da6f4f5..1abacc8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-expected.png
index 9fc7b10..fc8d744 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
index 0b42cea..39ad638 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
index 7d9d30d6..a180b26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
index ad0afc2..9df0f6e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
index 353824ec..f7baff299 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
index 32ec03b..ad2cabd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/control-clip-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/control-clip-expected.png
index 72bdc0f..ee51e6f5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/control-clip-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/control-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-rtl-expected.png
index d7130fb..924a406 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
index 8b843308..30489e7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png
index f81dbdea..6355aec 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-appearance-basic-expected.png
index c2401050..7e7553b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-cancel-button-style-sharing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-cancel-button-style-sharing-expected.png
index 1d408588..cbe5e074 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-cancel-button-style-sharing-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-cancel-button-style-sharing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-rtl-expected.png
index 5173a096..5596157 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/search/search-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/basic-selects-expected.png
index cc6e9507..8fef117 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/basic-selects-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/basic-selects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/listbox-appearance-basic-expected.png
index 8cb9583..adcc883 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/listbox-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/listbox-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-basic-expected.png
index 24bcd2f..9e08714 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
index 2c23038b6..07c87b2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
index 1d1f400..a454fad2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
index 0d0acba..a4939f0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
index ad68607..62787aa97 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
index 08da928c..ba6f61c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
index df62a967..4fca063 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
index bfbfac0f..386b341 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
index 84bd47f..599c167 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
index ff41d392..3728ea2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
index c1c9550..95745b1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
index 570606a..c551ad7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
index c824013..906a4dd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
index a075239..e3ae9ff 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
index 4cc2f25..9b89df9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
index b130d701..52fcc15 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
index a834b88..c8b5517 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
index 3dc39d3a..85bac44d9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
index 2080952..54fbff9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/tabbing-input-iframe-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/tabbing-input-iframe-expected.png
index 7118431..e4e69b52 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/tabbing-input-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/tabbing-input-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-focus-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-focus-expected.png
index 6c36760..ae1005ca 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-focus-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-focus-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-readonly-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-readonly-expected.png
index d2632a5..c0b0486 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-selection-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-selection-expected.png
index 8634a0d..a2152da 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-appearance-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-double-click-selection-gap-bug-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-double-click-selection-gap-bug-expected.png
index c11abf9..ccd2ae8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-double-click-selection-gap-bug-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-double-click-selection-gap-bug-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png
index 5a172be..966d3f8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-1-expected.png
index 114d172c..a908c97 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-3-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-3-expected.png
index b834e8c..20a1fe3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-placeholder-visibility-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-readonly-autoscroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-readonly-autoscroll-expected.png
index f828a04b..26f17ff5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-readonly-autoscroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-readonly-autoscroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-double-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-double-click-expected.png
index efbacff..cfe9a70 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-double-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-double-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-drag-down-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-drag-down-expected.png
index e6ef276..a50af08 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-drag-down-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-drag-down-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-option-delete-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-option-delete-expected.png
index 1dff528..4c293f1c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-option-delete-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-option-delete-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-scroll-left-on-blur-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-scroll-left-on-blur-expected.png
index d3f4fdf..55b9bf0f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-scroll-left-on-blur-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/input-text-scroll-left-on-blur-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png
index 077d78f..e5b12bd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
index ec08be7..24caf7d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
index 5a8b94d..6fd39bf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrollbar-expected.png
index 459ebcb..7a7937c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrollbar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
index 6c892c8..cc85d5a5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-type-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-type-expected.png
index 0f7a416cd..f74e3f3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-type-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/textarea/textarea-scrolled-type-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-edge-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-edge-expected.png
index 8bfd745c8..2e28b70 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-edge-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-edge-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-iframe-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-iframe-expected.png
index 698dec6..7d9f3fb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-rtl-ui-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
index 140946e..dde1a527 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
index 9f01b71..2d90c2a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
index 7522a78..0802fb3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png
index f6726b72..0865ea0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png
index 31f069f..bae3c57 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png
index 6967133b..2667cc8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png
index e05bbd8..2a1f71f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png
index 0e6a9583..3fd4471 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
index de62ad87..f2ebba0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png
index 529edf3..813df1f7a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png
index 463d90c..e908734 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
index 16af7aab..7fc5536 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png
index 69282d2..d9dde23 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png
index cb662bed..8bd53e49 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png
index 9436e74..bca1e30 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
index 45e12e3a..8989ba1b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png
index a9956ce..122c2ed 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png
index bdc481b..94ff414 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png
index 7dbad57..b6848584 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png
index ed31610..111bbc6b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png
index 9977cc3..658989e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png
index bc866e51..98d1bbc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png
index b204afac..9e1ca05 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png
index 6b364c4..3a6f90a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
index 17ebc54..349eb963 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png
index 702b43c..36fd9c0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png
index cc7c690..2618a73 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png
index 71420bc..9415dba 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png
index 705ca77..bba949b6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
index 274858e2c..c0209c2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png
index c4bbb218..78b98c5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
index 189bf42..1c33ae1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png
index 55c14df..8b1add3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png
index 3b590d5..f8aad9f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png
index 3ef852d8..9a15b30 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png
index 452d4cc3..1a46e9b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
index 2e2f1a7..b819bbb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png
index 0f03bc2..868083d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png
index 3a7ff95..57c5fa01 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png
index 72dfb16..0acd43d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png
index 6990934f9..8b15c7cd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
index 091fa5ce..0fea399 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png
index ba2c2e0..d73cbcb6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png
index 0edd0863..db562a9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/forms/textarea-caret-expected.png
index 46243a4..c65d03f1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/forms/textarea-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/forms/textarea-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
index 3825bb46e..08ee281 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
index 45a0f63..a8368fe 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
index 5d29742..dd74d55 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/paint/selection/text-selection-with-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/paint/selection/text-selection-with-composition-expected.png
index 3bc3814..13c371f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/paint/selection/text-selection-with-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/paint/selection/text-selection-with-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index 0fe4de04..de2acb9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/transforms/2d/zoom-menulist-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/transforms/2d/zoom-menulist-expected.png
index 360d87f..41f9d8f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/transforms/2d/zoom-menulist-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/transforms/2d/zoom-menulist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index 70301d6b..34916b6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index 3e78ed8..c4df74eb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
index 2c23038b6..07c87b2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
index cae3e5bb..56b5620 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index 1d87dbe..a5dba05 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png
index f95e915..a33d5be6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/custom-elements/form-validation-bubble-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/custom-elements/form-validation-bubble-appearance-expected.png
index b2812ea..a459199 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/custom-elements/form-validation-bubble-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/custom-elements/form-validation-bubble-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/caret/caret-color-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/caret/caret-color-expected.png
index fd43d5b..9655b2b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/caret/caret-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/caret/caret-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png
index ce84b01..ad9c5a82 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png
index 005d1bb..552271bd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png
index 88821fc..5d0f265 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png
index 09d54559..684c25e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png
index 1b96dad6..276210ce 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png
index 7e0d19d..abdc0d3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png
index b64faa1..5fdd201 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png
index 8587e184..7f460c7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png
index 8587e184..7f460c7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png
index 8587e184..7f460c7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png
index 8587e184..7f460c7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png
index 8587e184..7f460c7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png
index 190270f..1a1a712 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png
index ef47c1a..e4968fc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png
index 5ea03c4..90c6cac 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png
index 0a8e6af..06580a5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png
index 24d8f64a..391f136b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png
index 48f1b15..5a86e0b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png
index 5feb74e..ef848d4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png
index 4754122..a5ea5d4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png
index a6fc2b50..71a7a258 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png
index 5337e902..c4a94b6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png
index 32d57e3..49c86fb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png
index 60b0431..4721179 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png
index 1c66849..698637b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
index d2af5c0..f2e5bb7a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index c212b1c..5d7e4acb8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
index deccecc..8d16a36 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
index 9837ae7..63da3be 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
index 9173158..254a522 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png
index 5f351c0..f420b66 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/search/search-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/search/search-appearance-basic-expected.png
index 62e9812..9448a8e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/search/search-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/search/search-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/basic-selects-expected.png
index 053222b..0168c3e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/basic-selects-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/basic-selects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/listbox-appearance-basic-expected.png
index f320b5c..2bcdbab 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/listbox-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/listbox-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/menulist-appearance-basic-expected.png
index 95f3e2c..9d67e29 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/menulist-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/select/menulist-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
index f4f18a1..f1233fb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
index 307ee19..3f0f8a19 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
index bf3d39bf..be540cd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
index e10060b..1b467df1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
index 8c88ec9..a7479acc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
index 1c0d2dd..2b80e3dc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
index 657e6fb..940af2b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
index c87eaf7..290121b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
index 9a39669..1f999bd3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-focus-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-focus-expected.png
index 67e9fc25..6f1085c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-focus-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-focus-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-readonly-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-readonly-expected.png
index a69c783..7f911463 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-appearance-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png
index 2ddb008..c70d9e6ee 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png
index c04b71b..78b2c59 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-edge-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-edge-expected.png
index 84c06f9..d026af72 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-edge-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-edge-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-iframe-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-iframe-expected.png
index b2c5eb3..c1418c4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-rtl-ui-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
index 5e6d9b1..bd1de5bf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
index f7cef52..dabe1ce 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png
index 0913b7b..e5eca62 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-disabled-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-disabled-expected.png
index 33f2f5be..793bc6c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-disabled-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-disabled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-expected.png
index 52e8240..9d11e62 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-rtl-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-rtl-expected.png
index 2fdc3c6e..6678957 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/caps-lock-indicator-enabled-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
index c77b75a..87231003 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
index ab0e23d3..a0c363f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
index 4f9f3bc..ccdf535 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
index 5ce5ac8..60357c4d8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png
index c809e545aec..16b60f10 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png
index b9836683..cd43eb6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png
index c39f48eb..28d8bfb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/select-new-line-with-line-break-normal-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/select-new-line-with-line-break-normal-expected.png
index 6af379a0..4747d31 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/select-new-line-with-line-break-normal-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/selection/select-new-line-with-line-break-normal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/shadow-translucent-fill-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/shadow-translucent-fill-expected.png
index 52338e76..7d844bde 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/shadow-translucent-fill-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/shadow-translucent-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/http/tests/media/video-buffered-range-contains-currentTime-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/http/tests/media/video-buffered-range-contains-currentTime-expected.png
index 40f74c7..49194f1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/http/tests/media/video-buffered-range-contains-currentTime-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/http/tests/media/video-buffered-range-contains-currentTime-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/audio-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/audio-controls-rendering-expected.png
index 21f8844b..6587ccf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/audio-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/audio-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
index 61982ea..484089f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png
index 87dfe34..7c9d15f3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
index bb6d7cf..c78f968 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
index 39b54c76..86a3c5dc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
index 3a124ac..9641c18 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
index 689e55b..5817f8b1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
index 9ca1ee4b..3542c3b9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png
index 6f9d858..5d9e2bf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png
index 2314f4a4..d03c1654 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png
index d83f658..da89fb7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-document-audio-repaint-expected.png
index 3bc85467..15c540f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-document-audio-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
index d0d456c..8fe2f22f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
index 0fea1c3..4ad8ca459 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png
index 6e34eff..447b7ea 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png
index bd38c383..ad37daca 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png
index 4ae1c9a3..1604850 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
index e2689af..1c558ed 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png
index 7ae1e17..262db72 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png
index 628edc5..7822c0b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-expected.png
index b698bba..eb0173d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-positioned-objects-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-positioned-objects-expected.png
index 57ea6c5b..40fc2cc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-positioned-objects-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/paints/patternRegions-positioned-objects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/smallFonts-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/smallFonts-expected.png
index 082fbcdc..0ba7f15 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/smallFonts-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/smallFonts-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textAnchor-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textAnchor-expected.png
index e158a0c1..cac6152 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textAnchor-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textAnchor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect-expected.png
index a8b35ec..acdc566 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect2-expected.png
index 9b576ab..92d5cb2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect3-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect3-expected.png
index c288c8d..fd76b42 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textEffect3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout-expected.png
index 41ff00b..44a3a057 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout2-expected.png
index 8b199ef..2cea17d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLayout2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLength-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLength-expected.png
index 02e3ef00..c6e464fd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLength-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textLength-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPath-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPath-expected.png
index 2bd6e73..7057fbfc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPathSpaces-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPathSpaces-expected.png
index e70ce4f..88dae10 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPathSpaces-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textOnPathSpaces-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textPosition2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textPosition2-expected.png
index 4f0300c..4ecf832 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textPosition2-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textPosition2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textStyles-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textStyles-expected.png
index 75145f6..8a5b682 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textStyles-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/textStyles-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/verticalTextOnPath-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/verticalTextOnPath-expected.png
index e5eb76f9..3e961d5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/verticalTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/batik/text/verticalTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/focus-ring-text-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/focus-ring-text-expected.png
index f3569dfd..d9f0041 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/focus-ring-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/focus-ring-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
index ae37ba5..77a5d1f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png
index ae37ba5..77a5d1f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png
index ae37ba5..77a5d1f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/stroked-pattern-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/stroked-pattern-expected.png
index 510a2da2a..f2d4ef0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/stroked-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/custom/stroked-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png
index 53b2990..29c2e04 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png
index 1f42cf2d..40ccbef3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/transforms/2d/zoom-menulist-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/transforms/2d/zoom-menulist-expected.png
index 84c7563..fe01e7c7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/transforms/2d/zoom-menulist-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/transforms/2d/zoom-menulist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
index 9ca1ee4b..3542c3b9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
index 6f9d858..5d9e2bf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index 1d87dbe..a5dba05 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index ea27feb3..77e0b00 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/audio-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/audio-controls-rendering-expected.png
index 21f8844b..6587ccf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/audio-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/audio-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-after-reload-expected.png
index 61982ea..484089f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-layout-direction-expected.png
index 87dfe34..7c9d15f3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-strict-expected.png
index bb6d7cf..c78f968 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-expected.png
index 39b54c76..86a3c5dc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-strict-expected.png
index 3a124ac..9641c18 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-without-preload-expected.png
index 689e55b..5817f8b1 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-clone-expected.png
index 2314f4a4..d03c1654 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png
index d83f658..da89fb7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
index 3bc85467..15c540f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-controls-rendering-expected.png
index d0d456c..8fe2f22f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-display-toggle-expected.png
index 0fea1c3..4ad8ca459 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-empty-source-expected.png
index 6e34eff..447b7ea 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/video-surface-layer/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/blink/web_tests/platform/mac-retina/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
deleted file mode 100644
index bee225a..0000000
--- a/third_party/blink/web_tests/platform/mac-retina/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/blink/web_tests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
index b4b9f699..2ee36e6f 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/blink/web_tests/platform/mac/compositing/overflow/mask-with-small-content-rect-expected.png
index 266b302..f172b35 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overflow/mask-with-small-content-rect-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/mask-with-small-content-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/scaled-mask-expected.png b/third_party/blink/web_tests/platform/mac/compositing/overflow/scaled-mask-expected.png
index dfd9205c..ab200d97 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overflow/scaled-mask-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/scaled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png
index 25a0811..d770aed 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css1/box_properties/border_style-expected.png b/third_party/blink/web_tests/platform/mac/css1/box_properties/border_style-expected.png
index 20a3c2b..af90f7e 100644
--- a/third_party/blink/web_tests/platform/mac/css1/box_properties/border_style-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css1/box_properties/border_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png
index 89abc3d..912184f 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png
index e5c0d52..aa7226d 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png
index 3d7d1b6..ac7c68c0 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png
index d33c165..75613ab 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png
index 38ac33b8..1ef9fe1 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png
index a034fb9e..8c9216ffe 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png
index eb04210..3f26901 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png
index 6381143..b451f3ad 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png
index ee74d16..6b92cdf 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png
index 4a08cde..159a3da0 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png
index 41edbb3..7297bdd 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png
index a454731..f4e8d7b 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png
index 5eeb56a4..2f10843e 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png
index 4918ced..70565cb 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png
index 5df2826..4e784cd 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png
index 603e50b7..5303b08 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png
index 5f9e1b1..7a2848a0 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png
index 4ca146a..097c44a 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png
index 7797e76..55eb9d73 100644
--- a/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/custom-elements/form-validation-bubble-appearance-expected.png b/third_party/blink/web_tests/platform/mac/custom-elements/form-validation-bubble-appearance-expected.png
index bb5b848..4835437 100644
--- a/third_party/blink/web_tests/platform/mac/custom-elements/form-validation-bubble-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/custom-elements/form-validation-bubble-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-001-expected.png
index e72e6f5f..951be86 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-002-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-002-expected.png
index e72e6f5f..951be86 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-003-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-003-expected.png
index f74adfc0..02227d2 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-007-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-007-expected.png
index d7be3de99..c0130963 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-007-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-010-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-010-expected.png
index b7d6a53..8eeeae5 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-010-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-010-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-011-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-011-expected.png
index b12b3dc..78c5dc1 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-011-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-012-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-012-expected.png
index e72e6f5f..951be86 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-012-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-012-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-014-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-014-expected.png
index e565d2d..84a95e55 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-014-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-014-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-015-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-015-expected.png
index a3c58a1..c2957ffe 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-015-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-015-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-expected.png
index abd2689..444a815 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/caret/caret-position-expected.png b/third_party/blink/web_tests/platform/mac/editing/caret/caret-position-expected.png
index 94c713b..3c848b8 100644
--- a/third_party/blink/web_tests/platform/mac/editing/caret/caret-position-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/caret/caret-position-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/5369009-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/5369009-expected.png
index 856856b7..aef1560 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/5369009-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/5369009-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/5433862-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/5433862-2-expected.png
index 1304ae4..1b43678 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/5433862-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/5433862-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/5483370-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/5483370-expected.png
index dc90d1c..9690bef 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/5483370-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/5483370-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-br-013-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-br-013-expected.png
index 94f2ab83..1a28547 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-br-013-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-br-013-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-015-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-015-expected.png
index 5fb8997..2e94cb7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-015-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-015-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-016-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-016-expected.png
index 6e1dade3..f693771f 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-016-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-016-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-017-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-017-expected.png
index 6eeb1c4..79be469 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-017-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/delete-line-017-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/merge-different-styles-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/merge-different-styles-expected.png
index fbcca4c3..1858dc23 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/merge-different-styles-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/merge-different-styles-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png
index 0fb9285..d95bc8c 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/deleting/table-cells-expected.png b/third_party/blink/web_tests/platform/mac/editing/deleting/table-cells-expected.png
index 4a43e35..240749845 100644
--- a/third_party/blink/web_tests/platform/mac/editing/deleting/table-cells-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/deleting/table-cells-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/execCommand/4916541-expected.png b/third_party/blink/web_tests/platform/mac/editing/execCommand/4916541-expected.png
index a047ec9..836c1f3d 100644
--- a/third_party/blink/web_tests/platform/mac/editing/execCommand/4916541-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/execCommand/4916541-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/execCommand/5142012-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/execCommand/5142012-1-expected.png
index 503f39f..081623a 100644
--- a/third_party/blink/web_tests/platform/mac/editing/execCommand/5142012-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/execCommand/5142012-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png b/third_party/blink/web_tests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png
index 7593216f..138e96b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/execCommand/insertImage-expected.png b/third_party/blink/web_tests/platform/mac/editing/execCommand/insertImage-expected.png
index 44eb0f2..46797f6 100644
--- a/third_party/blink/web_tests/platform/mac/editing/execCommand/insertImage-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/execCommand/insertImage-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-contenteditable-expected.png b/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-contenteditable-expected.png
index 0a87f5d..7c95804 100644
--- a/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-contenteditable-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-contenteditable-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-input-expected.png b/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-input-expected.png
index f841d16..61b1dcd 100644
--- a/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/input/caret-at-the-edge-of-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/input/caret-read-only-after-editable-expected.png b/third_party/blink/web_tests/platform/mac/editing/input/caret-read-only-after-editable-expected.png
index 6e1ba450..515fb40 100644
--- a/third_party/blink/web_tests/platform/mac/editing/input/caret-read-only-after-editable-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/input/caret-read-only-after-editable-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/input/emacs-ctrl-o-expected.png b/third_party/blink/web_tests/platform/mac/editing/input/emacs-ctrl-o-expected.png
index cd4732c4..d414604 100644
--- a/third_party/blink/web_tests/platform/mac/editing/input/emacs-ctrl-o-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/input/emacs-ctrl-o-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/blink/web_tests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png
index 746cdbf..da270d5 100644
--- a/third_party/blink/web_tests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/4278698-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/4278698-expected.png
index be47e206..889adb25 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/4278698-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/4278698-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/4840662-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/4840662-expected.png
index d318d16..1a4c63a 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/4840662-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/4840662-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/4960120-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/4960120-1-expected.png
index ecb32fda..f48d313 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/4960120-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/4960120-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/5002441-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/5002441-expected.png
index 0277e76a..4371eb33 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/5002441-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/5002441-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-1-expected.png
index 58715d8..e2919e4 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-2-expected.png
index 6f907e0..3061493 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/5058163-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-2-expected.png
index dd8686f..960fabf 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-3-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-3-expected.png
index 54d2e43..52f8d3f 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/5549929-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png
index 9f8c7f5..523a01f2 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png
index 33a76b54..00eb191e 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png
index 8bc550ae1..5f7d427 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/line-break-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/line-break-expected.png
index 97a3471..167ce0a 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/line-break-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/line-break-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png
index 24cca000..dbd5ba4 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png
index 0cea8eca..4fefe4a 100644
--- a/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/4631972-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/4631972-expected.png
index 34ecdbe5..44621774 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/4631972-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/4631972-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/4806874-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/4806874-expected.png
index cb503b5..8327919 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/4806874-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/4806874-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/4947130-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/4947130-expected.png
index 25374843..f8c9e98 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/4947130-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/4947130-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-2-expected.png
index b490531f..26d2a7d7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-expected.png
index ae054b57..dfdd3b99 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5071074-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5134759-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5134759-expected.png
index b8b01827..a9e25be 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5134759-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5134759-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5156401-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5156401-1-expected.png
index bdaaf72..d998c2b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5156401-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5156401-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5478250-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5478250-expected.png
index 539970d0..add8fcc 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5478250-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5478250-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5601583-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5601583-1-expected.png
index 453da62..c9df577 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/5601583-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/5601583-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/bad-placeholder-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/bad-placeholder-expected.png
index 46d74ed..9ab0c1a 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/bad-placeholder-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/bad-placeholder-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png
index 019ce3f..9f94ff5 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png
index 84d2bb66..2a3785b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png
index e36a0dac..943ae38 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png
index 066ee27..db337032 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.png
index 4926488..424ed01 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png
index 9cf0013..a68a481 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png
index 01b3bab..37b41f3 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png
index bed1b775..6d8b8d7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png
index bed1b775..6d8b8d7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png
index bed1b775..6d8b8d7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png
index bed1b775..6d8b8d7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png
index bed1b775..6d8b8d7 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png
index db4cdce..57b95a2b2 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/pasting-tabs-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/pasting-tabs-expected.png
index fe6b992..39b3474 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/pasting-tabs-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/pasting-tabs-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png
index c17b65d..575792e3 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/styled-element-markup-expected.png b/third_party/blink/web_tests/platform/mac/editing/pasteboard/styled-element-markup-expected.png
index f120150..56804d6 100644
--- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/styled-element-markup-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/styled-element-markup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/5099303-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/5099303-expected.png
index 35a786c..f5bd9fc 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/5099303-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/5099303-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/5195166-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/5195166-2-expected.png
index 52b99af1..c22efc8b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/5195166-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/5195166-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/6476-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/6476-expected.png
index b5cb359..4de1d84 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/6476-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/6476-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-expected.png
index fd5a214..0a7a3e4 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-left-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-left-expected.png
index 3c19eb25..c403a411 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-left-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-2-left-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-expected.png
index 3a6ac60..f2cf7d94 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-right-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-right-expected.png
index f4ab4ab..d3f5adf 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-right-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-ltr-right-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-expected.png
index 92b7c836..fc379a0 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-left-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-left-expected.png
index 6b1dc74..3014c25 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-left-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-2-left-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-expected.png
index 445c46fc..9966abce 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-right-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-right-expected.png
index 41cc10b2..587934b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-right-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/caret-rtl-right-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/click-start-of-line-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/click-start-of-line-expected.png
index c9db756..fcb9917 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/click-start-of-line-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/click-start-of-line-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/contains-boundaries-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/contains-boundaries-expected.png
index 93c85b2d..183e8c0b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/contains-boundaries-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/contains-boundaries-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/contenteditable-click-inside-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/contenteditable-click-inside-expected.png
index 8a18ef1e..a5a0cb3 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/contenteditable-click-inside-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/contenteditable-click-inside-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/extend-selection-bidi-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/extend-selection-bidi-expected.png
index 9b559f5..3dbe7c0b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/extend-selection-bidi-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/extend-selection-bidi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/leave-requested-block-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/leave-requested-block-expected.png
index e581384..d76ecf3 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/leave-requested-block-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/leave-requested-block-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png
index 41586ffc..84667707a 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/move-by-sentence-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/move-by-sentence-001-expected.png
index 913f96c..9cb1c12 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/move-by-sentence-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/move-by-sentence-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/move-past-trailing-space-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/move-past-trailing-space-expected.png
index 32ec5f75..3cdc718 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/move-past-trailing-space-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/move-past-trailing-space-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/previous-line-position-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/previous-line-position-expected.png
index db6056d..e5734c3e 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/previous-line-position-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/previous-line-position-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-1-expected.png
index 57f20d494..7d7555b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-2-expected.png
index d1cbc1c7..f08795cf 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-3-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-3-expected.png
index 1a329b1b..90c32fd 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/replaced-boundaries-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/select-box-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/select-box-expected.png
index f17de2c..5dd878da 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/select-box-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/select-box-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png
index 751e5a2..d2bca48 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/select-missing-image-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/select-missing-image-expected.png
index 26c76d5..5cc15670 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/select-missing-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/select-missing-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/triple-click-in-pre-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/triple-click-in-pre-expected.png
index 1c9c79a0..92362b0 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/triple-click-in-pre-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/triple-click-in-pre-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png
index 569dad90..b80727b 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png b/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png
index dab7c6c0..b8bbca2 100644
--- a/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/4916887-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/4916887-expected.png
index 4833102..7a57efb 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/4916887-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/4916887-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/5065910-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/5065910-expected.png
index 26da497..33e88b2 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/5065910-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/5065910-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/5084241-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/5084241-expected.png
index 9c3425f..132d435 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/5084241-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/5084241-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/5228141-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/5228141-expected.png
index f2323285..041906d6 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/5228141-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/5228141-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/5279521-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/5279521-expected.png
index 671a7e25..a5713d4 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/5279521-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/5279521-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/block-styles-007-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/block-styles-007-expected.png
index 3bc6c57b..71f83bd 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/block-styles-007-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/block-styles-007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/style/highlight-expected.png b/third_party/blink/web_tests/platform/mac/editing/style/highlight-expected.png
index bf8ca9c2..2ac7bfde 100644
--- a/third_party/blink/web_tests/platform/mac/editing/style/highlight-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/style/highlight-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.png b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.png
index 878990a..f8750ec 100644
--- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-003-expected.png b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-003-expected.png
index 4c2ab54..336395bd 100644
--- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.png b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.png
index 72f5a3c..5008c3ec 100644
--- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.png b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.png
index 37de07a..e13867bd 100644
--- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-after-expected.png b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-after-expected.png
index aa3ab510..9e09173 100644
--- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-after-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-after-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-before-expected.png b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-before-expected.png
index d5db2bb..bb3fdbe 100644
--- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-before-expected.png
+++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/table-type-before-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-expected.png
index e5300eac..26a2d93 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png
index 99a38dcb..f9f429e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
index a066426..7d12fc42 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/block/positioning/child-of-absolute-with-auto-height-expected.png b/third_party/blink/web_tests/platform/mac/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
index be3e232..f7ef66d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-inner-bleed-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-inner-bleed-expected.png
index eca4480..3175285 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-inner-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-inner-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-double-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-double-expected.png
index 8800780..d0cab82 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-double-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-double-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-expected.png
index 42170fb4..14a1db1 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-constraints-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-huge-assert-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-huge-assert-expected.png
index 191276e..1d48345a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-huge-assert-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-huge-assert-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-percent-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-percent-expected.png
index d0297d3c..0d0df85 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-percent-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-radius-percent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png
index d85a03b..0f4a75e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusInvalidColor-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusInvalidColor-expected.png
index 3aa1b49b..84af4dd2 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusInvalidColor-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/borderRadiusInvalidColor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png
index 8db2782..617050db 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/dashed-1px-with-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png
index 2351cf7..97b137d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-block-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-block-expected.png
index 758f927..343efb75 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-block-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/outline-alpha-block-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/outline-rounded-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/outline-rounded-border-expected.png
index 84fadc80..2e43b5b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/outline-rounded-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/outline-rounded-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png b/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png
index 542c06de..1d40248 100644
--- a/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-expected.png b/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-expected.png
index 28e6869..505f2f9f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-subpixel-expected.png b/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-subpixel-expected.png
index 9decaebb..07a0794 100644
--- a/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-subpixel-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/box-shadow/inset-subpixel-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png
index e753ec1..aef4be0 100644
--- a/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-continuations-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-continuations-expected.png
index 8261a8e59..e397bcf 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-continuations-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-continuations-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-multiline-writingmode-vertical-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-multiline-writingmode-vertical-expected.png
index a3b0865..3b94a0d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-multiline-writingmode-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-multiline-writingmode-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-color-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-color-expected.png
index 23fa48b..db787573 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-offset-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-offset-expected.png
index 8806712c..9fa8ce7 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-offset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-offset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-width-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-width-expected.png
index 9b56b35..d0f7f1a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-width-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/focus-ring-outline-width-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/ignore-empty-focus-ring-rects-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/ignore-empty-focus-ring-rects-expected.png
index 2299fbe..db7a5b96 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/ignore-empty-focus-ring-rects-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/ignore-empty-focus-ring-rects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/nested-rounded-corners-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/nested-rounded-corners-expected.png
index 93531bc..1a33c89 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/nested-rounded-corners-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/nested-rounded-corners-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/outline-auto-empty-rects-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/outline-auto-empty-rects-expected.png
index fd3b9fb..5a83d8c 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/outline-auto-empty-rects-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/outline-auto-empty-rects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
index ce28b308..31ae64e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
index 1b2fda58..a1541b25a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
index e0d3d038..107b043a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
index c0d092d..db7b8f7 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/dom/52776-expected.png b/third_party/blink/web_tests/platform/mac/fast/dom/52776-expected.png
index dde4502..88822eb 100644
--- a/third_party/blink/web_tests/platform/mac/fast/dom/52776-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/dom/52776-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/dom/focus-contenteditable-expected.png b/third_party/blink/web_tests/platform/mac/fast/dom/focus-contenteditable-expected.png
index 5eb8583..4ef486b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/dom/focus-contenteditable-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/dom/focus-contenteditable-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/events/reveal-link-when-focused-expected.png b/third_party/blink/web_tests/platform/mac/fast/events/reveal-link-when-focused-expected.png
index 7c0a2ca..d6853f26d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/events/reveal-link-when-focused-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/events/reveal-link-when-focused-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
index 9e6fec0..a8e936a3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-required-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index 942ffc6..eac0d58 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/week-picker-appearance-step-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
index bec89a6..71e1a49d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/calendar-picker/week-picker-appearance-step-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png
index ddb564d..2163382 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/checkbox/checkbox-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-expected.png
index 18f1070..f3317a8 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
index aeabbff..2591345 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
index f67df0b..fd0ec04 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
index 9520e6f1..5a47ae5 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-one-row-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
index 5afe27ba..cc2b04ee 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-two-row-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
index 5315538..0d6271a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/color-suggestion-picker-with-scrollbar-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color/input-appearance-color-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color/input-appearance-color-expected.png
index 53c3f94f..3f28e49 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color/input-appearance-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color/input-appearance-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/control-clip-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/control-clip-expected.png
index 69c947f..9406ca3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/control-clip-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/control-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png
index cdd830d..e87fea8b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/date/date-appearance-basic-expected.png
index 9626b909..d8c8317 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/date/date-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/date/date-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
index cc65b69..965482f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/month/month-appearance-basic-expected.png
index 6bcea52..ded8426 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/month/month-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/month/month-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-datalist-expected.png
index 21e5e6d4..2709ab5 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-datalist-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-datalist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-rtl-expected.png
index b2df6ba..a46ea2b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
index f043528..1d6e0f8e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/plaintext-mode-2-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/plaintext-mode-2-expected.png
index 53eda80f..ce052fb7 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/plaintext-mode-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/plaintext-mode-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/radio/radio-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/radio/radio-appearance-basic-expected.png
index fac0e3c8..f1b58ad 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/radio/radio-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/radio/radio-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/range/input-appearance-range-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/range/input-appearance-range-expected.png
index d00598a61..adb29af 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/range/input-appearance-range-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/range/input-appearance-range-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/range/range-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/range/range-appearance-basic-expected.png
index b9a3e6b..c83ccbbc 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/range/range-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/range/range-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/search/search-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/search/search-appearance-basic-expected.png
index 89c73b4..5cfe99f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/search/search-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/search/search-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/search/search-cancel-button-style-sharing-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/search/search-cancel-button-style-sharing-expected.png
index 64ea9ff..318beb4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/search/search-cancel-button-style-sharing-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/search/search-cancel-button-style-sharing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/search/search-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/search/search-rtl-expected.png
index f1689b0c..6bd1f27 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/search/search-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/search/search-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/select/basic-selects-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/select/basic-selects-expected.png
index e1805ff5..f75e36f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/select/basic-selects-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/select/basic-selects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/select/listbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/select/listbox-appearance-basic-expected.png
index 7a8e320..2b1bce5 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/select/listbox-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/select/listbox-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/select/menulist-appearance-basic-expected.png
index 5e1fafb..476fdea 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/select/menulist-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/select/menulist-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
index 7a6efcbb..d1ffa7e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
index 16117411..215ec4e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
index fbd8d14..579c2df 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
index 93d1479..e27ad4e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/date-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
index da04d41..d7abfdd 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
index 23d58df..3bcb216d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
index 7fa73c9..e1d0139f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
index 011ead7..3f00b55 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
index 26a526d..1b9420c 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
index ea54077..5c0b713 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
index 38aeebf..d78730b3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/month-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
index 322a27c..7bf8e47a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
index b7d3041..6c77b466 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-locale-hebrew-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
index 8c21538..2515642 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
index 3fca4190..be88240 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
index e6949f84..d3609cb 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
index e960dbb..5fc68c27 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
index 41fa29a3..3d9d4d3d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/suggestion-picker/week-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/tabbing-input-iframe-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/tabbing-input-iframe-expected.png
index 4cdd5bf..978dc16 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/tabbing-input-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/tabbing-input-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-focus-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-focus-expected.png
index 7371a1a..7df7321 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-focus-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-focus-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-readonly-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-readonly-expected.png
index 06b552e..efdb844 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-readonly-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-readonly-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-selection-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-selection-expected.png
index 8387605..81142fe 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-appearance-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-double-click-selection-gap-bug-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-double-click-selection-gap-bug-expected.png
index 8207f93..ac811fd1 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-double-click-selection-gap-bug-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-double-click-selection-gap-bug-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png
index 324596f..0166637 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-1-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-1-expected.png
index d1e922e..1572043 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-3-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-3-expected.png
index e4f355b0..20754ca 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-placeholder-visibility-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-readonly-autoscroll-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-readonly-autoscroll-expected.png
index 82b815c..8809362 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-readonly-autoscroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-readonly-autoscroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-tab-shows-caret-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-tab-shows-caret-expected.png
index c0bad69..2d855c9 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-tab-shows-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-tab-shows-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-click-inside-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-click-inside-expected.png
index 19f1755f..39c505ff 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-click-inside-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-click-inside-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-double-click-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-double-click-expected.png
index 825e67ad..59a498e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-double-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-double-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-drag-down-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-drag-down-expected.png
index 20698107..b4f0271 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-drag-down-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-drag-down-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-option-delete-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-option-delete-expected.png
index ab57f903..5c811d8f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-option-delete-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-option-delete-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-scroll-left-on-blur-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-scroll-left-on-blur-expected.png
index 53f03c2..498ebcb 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-scroll-left-on-blur-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-scroll-left-on-blur-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-self-emptying-click-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-self-emptying-click-expected.png
index 7adf609..0a0cfca 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-self-emptying-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/input-text-self-emptying-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/text-appearance-datalist-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/text-appearance-datalist-expected.png
index d1b7f7a..89a5247 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/text-appearance-datalist-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/text-appearance-datalist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-focus-ring-expected.png
index f92df090..d376441 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-outline-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-outline-expected.png
index d52ee58..eccf9a4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-overflow-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-overflow-expected.png
index 0e5e42c..1ee2b5d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-overflow-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/text/textfield-overflow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
index ffe2d5f..a3ac00c 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
index 65c51d0..56dd5dd 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-placeholder-visibility-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrollbar-expected.png
index 61b31cc..eb499b3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrollbar-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
index cd2b99d6..0770c73e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-type-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-type-expected.png
index 23af800..a43b59a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-type-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/textarea/textarea-scrolled-type-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/time/time-appearance-basic-expected.png
index bd4874a..814b2c0a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-edge-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-edge-expected.png
index dd46a70..8dff6ac 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-edge-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-edge-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-iframe-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-iframe-expected.png
index d496573..cc1e98d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-rtl-ui-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
index 5e7a24f..979a887 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/week/week-appearance-basic-expected.png
index 80600a8..229b056 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/week/week-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/week/week-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/inline/25277-2-expected.png b/third_party/blink/web_tests/platform/mac/fast/inline/25277-2-expected.png
index aef8207..acf2f8a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/inline/25277-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/inline/25277-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/inline/25277-expected.png b/third_party/blink/web_tests/platform/mac/fast/inline/25277-expected.png
index aef8207..acf2f8a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/inline/25277-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/inline/25277-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-expected.png b/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-expected.png
index ca8ba3c..0ae30bf 100644
--- a/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png b/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png
index b1b127d..6882dfc 100644
--- a/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/inline/inline-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/fast/inline/inline-focus-ring-expected.png
index dd6cabc1..73c9e475 100644
--- a/third_party/blink/web_tests/platform/mac/fast/inline/inline-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/inline/inline-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/layers/opacity-outline-expected.png b/third_party/blink/web_tests/platform/mac/fast/layers/opacity-outline-expected.png
index 27a0a4a..4708c1d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/layers/opacity-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/layers/opacity-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/blink/web_tests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png
index 4a30b929..cfb140b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png b/third_party/blink/web_tests/platform/mac/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
index 505ca56..1b5e8cd2 100644
--- a/third_party/blink/web_tests/platform/mac/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/multicol/multicol-with-child-renderLayer-for-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
index 4a655ef..e0075c4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png b/third_party/blink/web_tests/platform/mac/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
index 7f91f1e..08510b06 100644
--- a/third_party/blink/web_tests/platform/mac/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
index 8ca6ff8..a1f9da8 100644
--- a/third_party/blink/web_tests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png
index 6d61da73..1dfd1e86 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-expected.png
index f80a0b1..467db5f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png
index cef5225..bd1b716 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png
index 865014f..c2163f27 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-expected.png
index f5979d56..2435c73 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
index 151ce87..42780cb 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-expected.png
index 04de3e73..afc70f3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-expected.png
index bc40773..8f05023a 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
index 3eaebbda..04bf8a4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-expected.png
index 155a4f06..d764536 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png
index c590ac2..c3600c8 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-expected.png
index 2a77afc..16c9ac659 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
index 9077a41..991f74f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-expected.png
index 1cb9678..b65faba 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_border-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png
index 857fde0..f99e4ed 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-expected.png
index 602cdd5..28d30107 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_layers-hide-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png
index 5f7f4dc..58cde9db 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-expected.png
index c899a724..0233e526 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png
index e4716d9..698bef9 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png
index 2e05d0d..27b87aa 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-expected.png
index e1b26f4..15f37294 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
index 11ef78c2..ee8a0fd8 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-expected.png
index 3b32b3a4..db97fa2 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-expected.png
index 89ad511..a376c70 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png
index 878b20e4..a139127 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-expected.png
index b935e71a..50993c2 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
index 96b913a8..ecfb3afa 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-expected.png
index fcfa80d0..332068d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_position-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
index 8b780af..5c7185d0 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-expected.png
index 5549167d6..4b22116 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png
index 729b7e1c..52129c5 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png
index dd4ce3a9..02e62ca 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-expected.png
index 0049f322..2bbba24 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
index bf304d8..c4813ac3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png
index 9e73bd1..81ae8d4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-expected.png
index 0e1d9524..0be3122 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png
index 8f4e816..a1a193b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-expected.png
index a386d42e..de478c97 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
index 6f2eafb..c552e1b 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png
index b2c6639..f977b3aa 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-expected.png
index d13b2ef9..45823dc 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png
index 7cf07de..4596775 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-expected.png
index 02f7b960..630872cf 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-vertical-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-vertical-expected.png
index 0f54b7b8..f1e8b96 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/border-collapsing/002-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/platform/mac/fast/table/table-row-focus-ring-paint-expected.png
index b4fa19d..6dbd2d6 100644
--- a/third_party/blink/web_tests/platform/mac/fast/table/table-row-focus-ring-paint-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/table/table-row-focus-ring-paint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-disabled-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-disabled-expected.png
index 574ee86..dcc2b44 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-disabled-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-disabled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-expected.png
index 45af6d7b..42a9748 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-rtl-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-rtl-expected.png
index fce9cbc..97086ae 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-rtl-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/caps-lock-indicator-enabled-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
index 169b166c5..441e4e4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-ltr-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
index 5ef005e..3a08365 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-ltr-text-in-rtl-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
index 437d813..ce7852e 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-ltr-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
index 2cb5fe3..493d2cd 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/ellipsis-rtl-text-in-rtl-flow-underline-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png
index 696eb4c..b76aa7a5 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png
index 45354db..23e8d330 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/selection/rtl-caret-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/selection/rtl-caret-expected.png
index 56e6537..5a908292 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/selection/rtl-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/selection/rtl-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/selection/select-new-line-with-line-break-normal-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/selection/select-new-line-with-line-break-normal-expected.png
index cc98c5dc..87206b7f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/selection/select-new-line-with-line-break-normal-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/selection/select-new-line-with-line-break-normal-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/text/shadow-translucent-fill-expected.png b/third_party/blink/web_tests/platform/mac/fast/text/shadow-translucent-fill-expected.png
index 073777f..2b49d097 100644
--- a/third_party/blink/web_tests/platform/mac/fast/text/shadow-translucent-fill-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/text/shadow-translucent-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png
index 3b592dc..932bfaa 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png
index db0f18c..a2a9696 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png
index 15f01e8..528a87e 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png
index c9d20e1..c2d97443 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png
index e234144..9fee6ab 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png
index 471c0ef..93837e3d 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png
index db0f18c..a2a9696 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png
index db0f18c..a2a9696 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png
index 2481112..77619ba 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png
index 4a2dad9c..52c65061 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png
index 58d7ff30..a1dc6ea 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png
index 02b83e58..70287d8 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png
index 7af1fee0..10668ac 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png
index 8f2784f6..19f5efef 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png
index 3a109229..8aa5a8b8 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png
index c55cf1d..22327d4 100644
--- a/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/http/tests/media/video-buffered-range-contains-currentTime-expected.png b/third_party/blink/web_tests/platform/mac/http/tests/media/video-buffered-range-contains-currentTime-expected.png
index 55b6de8..3e58dd9 100644
--- a/third_party/blink/web_tests/platform/mac/http/tests/media/video-buffered-range-contains-currentTime-expected.png
+++ b/third_party/blink/web_tests/platform/mac/http/tests/media/video-buffered-range-contains-currentTime-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
index c83c278..a5324ff 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
index e1e0829..a53ae312 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
index d8890a0..baf80279 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
index 23da72b..b4a6f32 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
index 55dd643..1bb6fe6 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
index 7a88494..d7a9d950 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
index 1f53717..bda37a1 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
index 2fbad8c..3a046b4 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
index 2db6cd07..625dc0e 100644
--- a/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-expected.png
index 8424262..3350e4a 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-in-positioned-container-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-in-positioned-container-expected.png
index 917088bf..8213251c 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-in-positioned-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-in-positioned-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-expected.png
index 7a5a6fa..c057593 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
index 6d706fb..2f971df3 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
index 3029ddd..d93d411 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-paint-root-offset-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-paint-root-offset-expected.png
index 92a90adbb..9793e7c 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-paint-root-offset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-paint-root-offset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-scale-transform-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-scale-transform-expected.png
index 8a06f086..f8d61c8a 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-with-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-zoom-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-zoom-expected.png
index c691b74..5513f48b 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-focus-ring-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png
index b918a01..a0f1d640f 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/imagemap-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/images/imagemap-polygon-focus-ring-expected.png
index ead495f..2600fb07 100644
--- a/third_party/blink/web_tests/platform/mac/images/imagemap-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/imagemap-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/audio-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac/media/audio-controls-rendering-expected.png
index a0d277db..38873ad2fe 100644
--- a/third_party/blink/web_tests/platform/mac/media/audio-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/audio-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
index f44ddac..493b6680 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png
index f0b437c..df5f913 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
index 0293e0c7..34f061b 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
index 0f48bff4..dc0ee8df 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
index 738a22d..8d518e0f 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
index 754df1e..ae3a8c1 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png b/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
index ee1d0d6..dc29e00 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png
index 1aa826b..c57b090 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png
index e7693e4..0f35d805 100644
--- a/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png
index 7c251075..f82b9cc 100644
--- a/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/mac/media/media-document-audio-repaint-expected.png
index afa82e4..3609139d 100644
--- a/third_party/blink/web_tests/platform/mac/media/media-document-audio-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
index cad74b0..3995e4d9 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
index ed3931f..cab45aa3 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png
index 13bfab9..b5bb020 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png
index 905f1b7..a7c662e 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/4776765-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/4776765-expected.png
index e2ea361..ba620ef0 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/4776765-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/4776765-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png
index 44f16b65..2de9ffa 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.png
index bac8256..b1ffc46 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/range-focus-by-mouse-then-keydown-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/slider-thumb-float-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/slider-thumb-float-expected.png
index a721445..42e74b8b 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/slider-thumb-float-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/slider-thumb-float-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.png
index e699e96b..215c5c08 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png
index 26b45e1..b0de2cc 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-enable-continuations-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-enable-continuations-expected.png
index 5cb8d97..b6f677c 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-enable-continuations-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-enable-continuations-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-layers-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-layers-expected.png
index 3c24af48..ee3447e6 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-layers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-expected.png
index 8a218f0..2200319 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/layer-child-outline-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/layer-child-outline-expected.png
index f7499c8..9a654e1 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/layer-child-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/outline/layer-child-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png
index c0bad69..2d855c9 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/renderer-destruction-by-invalidateSelection-crash-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
index 52eb251..8fbbd80 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-invalidation-in-overflow-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-with-composited-scroll-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-with-composited-scroll-expected.png
index 0c0638050..cacf24b 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-with-composited-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/caret-with-composited-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
index fc7c2a3d..c6a9738 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
index e5afb97c..80def35 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-in-non-composited-scrolling-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/focus-element-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/focus-element-expected.png
index 8a2b489..989cf79 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/focus-element-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/focus-element-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
index 249966c0..76998325 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/scrolling-embedded-svg-file-image-repaint-problem-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/svg-image-change-content-size-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/svg-image-change-content-size-expected.png
index d95666ca..50c3177 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/svg-image-change-content-size-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/svg-image-change-content-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/use-detach-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/use-detach-expected.png
index 97dced1..f90ee13 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/use-detach-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/use-detach-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
index c1da1d1..e81c5b79 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png
index 4ba1e9f..5674348 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-expected.png
index 1621ecd4..3dcc45f9 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-64px-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-64px-expected.png
index 8a5d9eea..b8c0d35 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-64px-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-64px-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-8px-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-8px-expected.png
index ec91ab7..5938b97f 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-8px-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-font-8px-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-125-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-125-expected.png
index 73f9e8b4..bcab88f1 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-125-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-150-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-150-expected.png
index 4f48401..9d26cf23 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-150-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-150-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-175-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-175-expected.png
index f514452..ecbaccb 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-175-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-175-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-200-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-200-expected.png
index fc0f844..062aec52 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-200-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-250-expected.png b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-250-expected.png
index aa246883..697e173 100644
--- a/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-250-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/markers/document-markers-zoom-250-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
index 730dbde..70613c70 100644
--- a/third_party/blink/web_tests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-with-composition-expected.png b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-with-composition-expected.png
index 6ba0e95..2826085 100644
--- a/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-with-composition-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/selection/text-selection-with-composition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/plugins/webview-plugin-border-radius-expected.png b/third_party/blink/web_tests/platform/mac/plugins/webview-plugin-border-radius-expected.png
index 98e010a..93e66da 100644
--- a/third_party/blink/web_tests/platform/mac/plugins/webview-plugin-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/mac/plugins/webview-plugin-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/scrollbars/border-box-rect-clips-scrollbars-expected.png b/third_party/blink/web_tests/platform/mac/scrollbars/border-box-rect-clips-scrollbars-expected.png
index 4f9b7d2..fa48bc9e 100644
--- a/third_party/blink/web_tests/platform/mac/scrollbars/border-box-rect-clips-scrollbars-expected.png
+++ b/third_party/blink/web_tests/platform/mac/scrollbars/border-box-rect-clips-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
index d4ed447..612adf7 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
index c9e51768..b4b21d8 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
index 9256872..3cc3e6f 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
index 0e18b4a08..5df354f 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
index 987b433f..1fcc0e0 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
index 983d641..9e2a888 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
index f32545b..58057259 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
index bbef268..f5f2fb83 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
index d2a767b0..b4c41bb 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
index 5cf945c2..28cf220 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
index 4e010b90..a5953f9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
new file mode 100644
index 0000000..44b07bb6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
index cf49200c..0b0f448 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
index 46b5ef9..2d09005e 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
index 132216ec..e8f114d 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
index adf84c210..67b2b4e 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
index f98ab39..c0c1a1a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
index 4b2cb47..cb7ddc2 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
index 0f04f887..2362a447 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
index 8b81b3d..294ff687 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
index c1da1d1..e81c5b79 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
index b9d2acf5..fb95304 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
index bee225a..09af8cd 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
index 538f49b..2efd86f 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
index 65bfb4c..a835d35 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
index 9952a06d..3b600eb 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
index c0e1f25f..df28cd8 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
index f6ee5667..588bb98 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
index 2f407e6f..5bc6abe 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
index 31a4bcb1..9fc5fff 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
index c3f48bfb..3cc8bbf 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
index 79a4f52e..7160db2 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
index 0915ffde..52741df 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
index 36b846e..8e87d545e 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
index be362a5..d09e0a9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-render-01-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
index 24977ed..e1b645c 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
index 19fd8c8..92628e9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
index 7e2c8629a..61833c4 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
index fb51b24..387c88dc 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-02-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
index 2a152ef..d78edffd 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
index b0e0e31..88f909c 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
index a16936b..55b27b3 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
index 1212172..ab28376 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
index 819356a..d91d6e7 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
index 9013d75..66e04f7 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
index 37acf074..386129a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
index 8bad0050..48e197ec 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
index 62a700c..48e4724 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
index 6141c4c9..3daf26a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
index b1d55f6..5f29256c71 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
index 36ef8344..7cd41ad 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
index c667504..a0d02fd 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
index be42c8cf..441eeb9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-use-01-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
index 2107e0e..55c6c09 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
index f556b62..b7bc5ca 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
index 03e50a0..f223c4dc 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
index c346fbc..808024b 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png b/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png
index 499244b..95afa31 100644
--- a/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png b/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png
index 80843b2..2f34ffd 100644
--- a/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png b/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png
index 3fb75dd..d331833 100644
--- a/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
index 18af3bca..27a4d44 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-repeat-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-repeat-expected.png
index 1553d10..9a60163a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-repeat-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-background-image/background-repeat-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png
index 7f2170f3..1fdf1c4c 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png
index f1fafbdd..af1ce7d 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png
index 2f0b4db..28f15b9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-1-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-1-expected.png
index 3471c48..0ab4092 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-2-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-2-expected.png
index 5da5eac5..fb55a90 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-image/img-preserveAspectRatio-support-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-object/object-box-sizing-no-width-height-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-object/object-box-sizing-no-width-height-expected.png
index 3e4bca1bf..fdfa1d66 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-object/object-box-sizing-no-width-height-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-object/object-box-sizing-no-width-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/filters/feTile-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/filters/feTile-expected.png
index c373a568..cb260e92 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/filters/feTile-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/filters/feTile-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/filters/filterRegions-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/filters/filterRegions-expected.png
index 0df9e6859..68b134a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/filters/filterRegions-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/filters/filterRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/masking/maskRegions-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/masking/maskRegions-expected.png
index da75d05..7df7a17 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/masking/maskRegions-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/masking/maskRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/paints/gradientLimit-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/paints/gradientLimit-expected.png
index 04559851..4a65068e 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/paints/gradientLimit-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/paints/gradientLimit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png
index 4de340e2..a381d35 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegionA-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegionA-expected.png
index 2f16c40..5758b4fc 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegionA-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegionA-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-expected.png
index 28f7ccc..4f31f835 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png
index 2b247b5..79f8e8cb 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/longTextOnPath-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/longTextOnPath-expected.png
index 70e0c66..5d3ee6d 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/longTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/longTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/smallFonts-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/smallFonts-expected.png
index 625f538..4987c37a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/smallFonts-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/smallFonts-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textAnchor-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textAnchor-expected.png
index 29c62378..db5aa346 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textAnchor-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textAnchor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textDecoration-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textDecoration-expected.png
index b7c3b8f..0e002959 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textDecoration-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textDecoration-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect-expected.png
index 3758fcf..97840d9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect2-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect2-expected.png
index 85d9c523..6a94fc9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect3-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect3-expected.png
index d6e5954..5ba6b39 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect3-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textEffect3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textFeatures-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textFeatures-expected.png
index 1a664f1..d61843d0 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textFeatures-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textFeatures-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout-expected.png
index 9d5f9aa33..64dfc2ae 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout2-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout2-expected.png
index 23c2777..dbe8d25 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textLayout2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textLength-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textLength-expected.png
index 96825f1..44e7174 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textLength-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textLength-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPath-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPath-expected.png
index 4b30169..d3bab790 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png
index 8fe212d1..3d777d9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition-expected.png
index 5df77f83..488931c 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition2-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition2-expected.png
index 9746385a..4042dff 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textPosition2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties-expected.png
index 9e803e02..7f982c5 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties2-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties2-expected.png
index 0949b167..67c0a49 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textProperties2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/textStyles-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/textStyles-expected.png
index c8d9f812..6413939 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/textStyles-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/textStyles-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalText-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalText-expected.png
index 6d53a50a..f66bc22 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalText-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalText-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png b/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png
index af4d60d..31b74746 100644
--- a/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/clone-element-with-animated-svg-properties-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/clone-element-with-animated-svg-properties-expected.png
index f4fc947..600a59437 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/clone-element-with-animated-svg-properties-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/clone-element-with-animated-svg-properties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-expected.png
index 0ef9f5a..78f8c56 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-text-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-text-expected.png
index 2e4fbe3a..702dda5 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/focus-ring-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/invalid-css-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/invalid-css-expected.png
index 12455fe..35596f5 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/invalid-css-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/invalid-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
index 92c7109..d1af1946 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png
index 97d27ab..48a0e66 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png
index 92c7109..d1af1946 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png
index 92c7109..d1af1946 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/marker-orient-auto-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/marker-orient-auto-expected.png
index e795349..7827b95 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/marker-orient-auto-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/marker-orient-auto-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png
index 7656c37..9f8ad5a7 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png
index 4147c93..a0c10d08 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/second-inline-text-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/second-inline-text-expected.png
index d6daa39..30e1eb2 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/second-inline-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/second-inline-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/shapes-supporting-markers-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/shapes-supporting-markers-expected.png
index c556f44..28cb704 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/shapes-supporting-markers-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/shapes-supporting-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/stroked-pattern-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/stroked-pattern-expected.png
index c6f44be..d3c6636 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/stroked-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/stroked-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png
index e9c4a026..5904c27 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/use-transform-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/use-transform-expected.png
index 35997fc57..7d14180 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/use-transform-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/use-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/viewbox-syntax-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/viewbox-syntax-expected.png
index 6214b8bb..d8ce3ea 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/viewbox-syntax-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/viewbox-syntax-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/001-expected.png b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/001-expected.png
index ec02e36..27b18bbe 100644
--- a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/001-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/002-expected.png b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/002-expected.png
index 18390966..41fb6a1 100644
--- a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/002-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/007-expected.png b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/007-expected.png
index ff3d730..0dd3037 100644
--- a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/007-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
index fc178a3..6a04172 100644
--- a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png
index ece50c1..6ab6d2c 100644
--- a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
index 241715ab..7f59d5a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
index 241715ab..7f59d5a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
index 5fa141b..2842558 100644
--- a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
index eb5ccc0..98a4a43 100644
--- a/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/collapsing_borders/bug41262-3-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/collapsing_borders/bug41262-3-expected.png
index f5b3db5..17624e0 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/collapsing_borders/bug41262-3-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/collapsing_borders/bug41262-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/marvin/tables_style-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/marvin/tables_style-expected.png
index 6393592..d45bf2b 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/marvin/tables_style-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/marvin/tables_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index fb0578f..abb60bc 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/transforms/2d/zoom-menulist-expected.png b/third_party/blink/web_tests/platform/mac/transforms/2d/zoom-menulist-expected.png
index 208f3e3..eb594713 100644
--- a/third_party/blink/web_tests/platform/mac/transforms/2d/zoom-menulist-expected.png
+++ b/third_party/blink/web_tests/platform/mac/transforms/2d/zoom-menulist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/transforms/transformed-focused-text-input-expected.png b/third_party/blink/web_tests/platform/mac/transforms/transformed-focused-text-input-expected.png
index dc014a3..38e6870 100644
--- a/third_party/blink/web_tests/platform/mac/transforms/transformed-focused-text-input-expected.png
+++ b/third_party/blink/web_tests/platform/mac/transforms/transformed-focused-text-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-expected.png
index 70c7b2c9..1ff122a 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-in-positioned-container-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-in-positioned-container-expected.png
index f5f7960..03884e6 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-in-positioned-container-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-in-positioned-container-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-expected.png
index efcc8723..7e7ff5b7 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
index 88db8a08..96e8a35 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
index 09fdcd3..0c6a756 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-paint-root-offset-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-paint-root-offset-expected.png
index cad41f20..7a4bdb74 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-paint-root-offset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-paint-root-offset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
index 58ca0b81..47a71898 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png
index ad0d2b1..281176ed 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png
index a9edd7f0..1495b74 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-polygon-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-polygon-focus-ring-expected.png
index 3704675c7..9b79ee5 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-polygon-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/imagemap-polygon-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng/fast/inline/25277-2-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng/fast/inline/25277-2-expected.png
new file mode 100644
index 0000000..acf2f8a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng/fast/inline/25277-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
new file mode 100644
index 0000000..c57b090
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/new-remote-playback-pipeline/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png b/third_party/blink/web_tests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
index fe84b7e8..e83464152 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index 8418d14c..f0830d1 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-force-focusring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-force-focusring-expected.png
index 138f3c2c..a702d67 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-force-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-force-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
index 7a6efcbb..d1ffa7e 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/spatial-navigation-force-outline/fast/spatial-navigation/snav-multiple-select-focusring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png b/third_party/blink/web_tests/platform/mac/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
new file mode 100644
index 0000000..67d4647
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/user-activation-v2/fast/events/context-no-deselect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/user-activation-v2/fast/events/reveal-link-when-focused-expected.png b/third_party/blink/web_tests/platform/mac/virtual/user-activation-v2/fast/events/reveal-link-when-focused-expected.png
new file mode 100644
index 0000000..d6853f26d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/user-activation-v2/fast/events/reveal-link-when-focused-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/controls-strict-expected.png
new file mode 100644
index 0000000..34f061b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
new file mode 100644
index 0000000..3609139d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/video-display-toggle-expected.png
new file mode 100644
index 0000000..cab45aa3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/video-surface-layer/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/mask-with-small-content-rect-expected.png b/third_party/blink/web_tests/platform/win/compositing/overflow/mask-with-small-content-rect-expected.png
index a793f8c..c298ba1 100644
--- a/third_party/blink/web_tests/platform/win/compositing/overflow/mask-with-small-content-rect-expected.png
+++ b/third_party/blink/web_tests/platform/win/compositing/overflow/mask-with-small-content-rect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/scaled-mask-expected.png b/third_party/blink/web_tests/platform/win/compositing/overflow/scaled-mask-expected.png
index 6caaca55..20c80a59 100644
--- a/third_party/blink/web_tests/platform/win/compositing/overflow/scaled-mask-expected.png
+++ b/third_party/blink/web_tests/platform/win/compositing/overflow/scaled-mask-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css1/box_properties/border_style-expected.png b/third_party/blink/web_tests/platform/win/css1/box_properties/border_style-expected.png
index 0cab5db0..2a49743 100644
--- a/third_party/blink/web_tests/platform/win/css1/box_properties/border_style-expected.png
+++ b/third_party/blink/web_tests/platform/win/css1/box_properties/border_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png
index 2783352f..db093e1 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png
index 777ca17..6bfa575 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-13-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-13-d-expected.png
index 29fae26..c5a5c31b 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-13-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-13-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png
index a08e130..afe911c 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-23-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-23-d-expected.png
index 839a101c..6ed6e94 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-23-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-23-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png
index c6fc138..4db40eb 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-33-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-33-d-expected.png
index a8e7e20..5f9fffb 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-33-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-33-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png
index f9dd47e..61bad33 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png
index bcd25be..65799309 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png
index ce66f85..bde78b5 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png
index d5b32057..7240a739 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png
index d9d2b5a..5edc8453 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png
index 27b5f7e..ccd50834 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png
index 10284d2..2a92b7b2 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png
index 8851a5e18..da02b23 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png
index 1b95ade..6e2829446 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png
index 5c6eb1a..b9a8015 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-53-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-53-d-expected.png
index 160f49e..872ca875 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-53-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-53-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png
index f373fd4..ce49b94 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-63-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-63-d-expected.png
index 04acc3f..df240e8 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-63-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-63-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png
index aa970a9..be9b678 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-73-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-73-d-expected.png
index cb1c01a4..943b643 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-73-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-73-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png
index 8cbe099..e9d93f0 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-83-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-83-d-expected.png
index 22554842..b919796 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-83-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-83-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png
index 0d64e5e..8c62a6e 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png
index 13b80d08..58d436c8 100644
--- a/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png
+++ b/third_party/blink/web_tests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-expected.png
index a868918..c74cd408 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png
index 02a17ce..bb23833 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
index d6bf12b..27e2fa2e 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/repeat/negative-offset-repeat-transformed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/block/positioning/child-of-absolute-with-auto-height-expected.png b/third_party/blink/web_tests/platform/win/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
index 3181a77..a85aebf 100644
--- a/third_party/blink/web_tests/platform/win/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/block/positioning/child-of-absolute-with-auto-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-inner-bleed-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-inner-bleed-expected.png
index 2273ec1..155de08 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-inner-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-inner-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-double-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-double-expected.png
index 776b35b..b32a2de 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-double-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-double-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-expected.png
index 0c110d0..a9101dcc 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-constraints-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-huge-assert-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-huge-assert-expected.png
index b23332b..0c3dcfe 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-huge-assert-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-huge-assert-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-percent-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-percent-expected.png
index 16f58da..6d746ccb 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-radius-percent-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-radius-percent-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png
index ddf1f793..f66fd15 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusInvalidColor-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusInvalidColor-expected.png
index 0dc0b87..e84e39d 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusInvalidColor-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/borderRadiusInvalidColor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png
index e5f57956..62dc2bd18 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/dashed-1px-with-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/mixed-border-styles-radius-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/mixed-border-styles-radius-expected.png
index 2297e8cc..f126d79 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/mixed-border-styles-radius-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/mixed-border-styles-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-block-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-block-expected.png
index 679c826..fe956f6 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-block-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/outline-alpha-block-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/outline-rounded-border-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/outline-rounded-border-expected.png
new file mode 100644
index 0000000..80369102
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/fast/borders/outline-rounded-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-box-shadows-expected.png b/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-box-shadows-expected.png
index 3018749..9ed8a94d 100644
--- a/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-box-shadows-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-box-shadows-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-expected.png b/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-expected.png
index edca436..c8de0c6 100644
--- a/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-subpixel-expected.png b/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-subpixel-expected.png
index 5fcb889..82b4c6f 100644
--- a/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-subpixel-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/box-shadow/inset-subpixel-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png
index ce96862..c958f2f 100644
--- a/third_party/blink/web_tests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/nested-rounded-corners-expected.png b/third_party/blink/web_tests/platform/win/fast/css/nested-rounded-corners-expected.png
index d3c7989..10150984 100644
--- a/third_party/blink/web_tests/platform/win/fast/css/nested-rounded-corners-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/css/nested-rounded-corners-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
index f5b561e7..7762821 100644
--- a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
index 00135b68..24a33eb 100644
--- a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-links-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
index a3498af..18cb8cf 100644
--- a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-not-propagated-by-out-of-flow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
index 3b8574a..ce09245 100644
--- a/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/css3-text/css3-text-decoration/text-decoration-style-inherit-simple-underlines-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index b216f77..366652ec 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
index ddc1bf6..e599b9c1 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png
index bd1cc9c..f60574b 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/checkbox/checkbox-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
index 48cf6775..5ad6f70 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/color/color-suggestion-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/control-clip-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/control-clip-expected.png
index d9059eb..1ee77dc 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/control-clip-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/control-clip-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/radio/radio-appearance-basic-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/radio/radio-appearance-basic-expected.png
index 47474be7..10b8d37 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/radio/radio-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/radio/radio-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png
index 2fb1f7b..06dace0 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
index 41154f5..ba7e282e 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
index f634592..30378997 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/layers/opacity-outline-expected.png b/third_party/blink/web_tests/platform/win/fast/layers/opacity-outline-expected.png
index 5e477cca..6ed1d13 100644
--- a/third_party/blink/web_tests/platform/win/fast/layers/opacity-outline-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/layers/opacity-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/blink/web_tests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png
index 22f5cf9d..b69cea0 100644
--- a/third_party/blink/web_tests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
index 317786b..f007085 100644
--- a/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png b/third_party/blink/web_tests/platform/win/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
index 9c1974e2..25f39f0 100644
--- a/third_party/blink/web_tests/platform/win/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/replaced/replaced-child-of-absolute-with-auto-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png
index c0ffac2..6f12a70 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-expected.png
index ef6dfa60..9bd2f4c 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png
index 72e3fd8..047c66a 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png
index 061e1b4a..42779fb 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-expected.png
index 2da3cb40..c08dd4f4 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
index 5a8d40b..d4ecbbf8e 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-expected.png
index df79d9a..440ee22a 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-expected.png
index 1e5b73c2..c4678fb 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
index 2a1c3c27..5c8401e 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-expected.png
index 914f30e..3c65a4c6 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png
index 3137985..ccbfbb3 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-expected.png
index 8e8ef785..6dc0963 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
index 02d38bf1..dc96bc59d2 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-expected.png
index 27319380..1da3839 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_border-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png
index 2eba4f4..1d9cfa3 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-expected.png
index c11bedad..87995c2 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_layers-hide-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png
index ea7c8a5..ee874343 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-expected.png
index 90be337..860061b 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png
index ae15658..572f1e1 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png
index 0d22e8e8..1f8eb99 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-expected.png
index f4ace1d0..7cde2be8 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
index 7b3f927..b31724f 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-expected.png
index b27d98d..bc4d5ac 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-expected.png
index 9f059dd..a4c16475 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png
index 3619d19c0..f78dac0 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-expected.png
index 12f254b2..ba6bd418 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
index cff5a0a..a5704ce9 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-expected.png
index 9f4b2a9..722f3e2 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_position-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
index 8dac279c..b022a0a5 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-expected.png
index 2fe83ff..5f7c845 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png
index 92488df2..11ce0b0 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png
index d8071beb..9c5fcd9 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-expected.png
index 0de0cde..162c700 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
index f68b45a..8911b5b 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-expected.png
index 06bd3c0..187c4a3c 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-expected.png
index 6c6a84a..294db1c 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png
index a0e3ceb..b61a139 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-expected.png
index 12996d400a..5a906b1 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
index 66407706..30d5dd2 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-expected.png
index 840fe6e6..5840f237 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/backgr_simple-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-expected.png
index 75bf2ad9..869fe38 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-vertical-expected.png
index 023b258..059986fd 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/001-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-expected.png b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-expected.png
index ff233e5..1dffd3e 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-vertical-expected.png b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-vertical-expected.png
index 37bf4dbf..492bfae 100644
--- a/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-vertical-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/table/border-collapsing/002-vertical-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/text/color-emoji-expected.png b/third_party/blink/web_tests/platform/win/fast/text/color-emoji-expected.png
index 4c593fa..b3ac576 100644
--- a/third_party/blink/web_tests/platform/win/fast/text/color-emoji-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/text/color-emoji-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/text/emoticons-expected.png b/third_party/blink/web_tests/platform/win/fast/text/emoticons-expected.png
index 485e352..041e745 100644
--- a/third_party/blink/web_tests/platform/win/fast/text/emoticons-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/text/emoticons-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/text/fallback-traits-fixup-expected.png b/third_party/blink/web_tests/platform/win/fast/text/fallback-traits-fixup-expected.png
index 18f947c..157d69bc 100644
--- a/third_party/blink/web_tests/platform/win/fast/text/fallback-traits-fixup-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/text/fallback-traits-fixup-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/text/shadow-translucent-fill-expected.png b/third_party/blink/web_tests/platform/win/fast/text/shadow-translucent-fill-expected.png
index e1555b0..2c61ea4d 100644
--- a/third_party/blink/web_tests/platform/win/fast/text/shadow-translucent-fill-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/text/shadow-translucent-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/http/tests/media/video-buffered-range-contains-currentTime-expected.png b/third_party/blink/web_tests/platform/win/http/tests/media/video-buffered-range-contains-currentTime-expected.png
index 3c4ab59..be94a81 100644
--- a/third_party/blink/web_tests/platform/win/http/tests/media/video-buffered-range-contains-currentTime-expected.png
+++ b/third_party/blink/web_tests/platform/win/http/tests/media/video-buffered-range-contains-currentTime-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
index 2ccb2a3..9097a2d 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-003-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-005-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-006-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
index 0e256fb..797b85c 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-008-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
index a4dc1cd7..d97e9e2 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
index e29645de..b9bc875 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-applies-to-017-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
index 390bad0..46f2540 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
index 8aba68c..95dd84ec 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-clip-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
index a650458..cf3c760 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
index 57339e1..17eef3e 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
index 52ebcee3..81ad263 100644
--- a/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
+++ b/third_party/blink/web_tests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/imagemap-focus-ring-with-scale-transform-expected.png b/third_party/blink/web_tests/platform/win/images/imagemap-focus-ring-with-scale-transform-expected.png
index ad8b599..704dbe4 100644
--- a/third_party/blink/web_tests/platform/win/images/imagemap-focus-ring-with-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/images/imagemap-focus-ring-with-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/audio-controls-rendering-expected.png b/third_party/blink/web_tests/platform/win/media/audio-controls-rendering-expected.png
index 2f5c88f..41f79ae 100644
--- a/third_party/blink/web_tests/platform/win/media/audio-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/audio-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png
index b586e0b17a..f969f59 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png
index 6be687e..84c3d674 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png
index 1010dec..b0573bd 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png
index 1968a6f..a470bf1 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png
index 65632c78..9ea6fa02 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png
index 08acf1c..cc7ca53 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png b/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
index 7ad34ea..802ec5b 100644
--- a/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-custom-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png
index aacdb6c..4d4dd0ba 100644
--- a/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png
index 74fa058..e5d2057 100644
--- a/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png
index bad7e5c..173624f 100644
--- a/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/media-document-audio-repaint-expected.png b/third_party/blink/web_tests/platform/win/media/media-document-audio-repaint-expected.png
index ced8aec..58ae598 100644
--- a/third_party/blink/web_tests/platform/win/media/media-document-audio-repaint-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/media-document-audio-repaint-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png
index e7e2630..35562faa 100644
--- a/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png
index cf9b1226..e3feb82 100644
--- a/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png
index fde2ceab..616113e4 100644
--- a/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png
index af32434..2b1f840 100644
--- a/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/outline/layer-child-outline-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/outline/layer-child-outline-expected.png
index 5ade4bb..14873e7 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/outline/layer-child-outline-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/outline/layer-child-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/svg-image-change-content-size-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/svg-image-change-content-size-expected.png
index f7b4185..7843ecf54c 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/svg-image-change-content-size-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/svg-image-change-content-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/use-detach-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/use-detach-expected.png
index 4aacfbaa..4ba5f45 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/use-detach-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/use-detach-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
index a79157a..40e41e24 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-125-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-125-expected.png
index 098bc27..054eecc 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-125-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-150-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-150-expected.png
index 36cea61..cfd8a90 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-150-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-150-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-175-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-175-expected.png
index 5c4ca5d..4e6f4d8e 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-175-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-175-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-200-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-200-expected.png
index bb3712a..a003811 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-200-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-250-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-250-expected.png
index 6b3b8d9..769404f41 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-250-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/document-markers-zoom-250-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/grammar-markers-hidpi-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/grammar-markers-hidpi-expected.png
index 74435588..9bfa75d8 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/grammar-markers-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/grammar-markers-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-composited-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
index e06732d6..ce05a9f1 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-composited-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-expected.png
index e06732d6..ce05a9f1 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/inline-spelling-markers-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/markers/markers-zoomed-expected.png b/third_party/blink/web_tests/platform/win/paint/markers/markers-zoomed-expected.png
index 7e07069..049414b 100644
--- a/third_party/blink/web_tests/platform/win/paint/markers/markers-zoomed-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/markers/markers-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
index a7bf498..93d7532 100644
--- a/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/plugins/webview-plugin-border-radius-expected.png b/third_party/blink/web_tests/platform/win/plugins/webview-plugin-border-radius-expected.png
index b91e062..0d0144ce 100644
--- a/third_party/blink/web_tests/platform/win/plugins/webview-plugin-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/win/plugins/webview-plugin-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/scrollbars/border-box-rect-clips-scrollbars-expected.png b/third_party/blink/web_tests/platform/win/scrollbars/border-box-rect-clips-scrollbars-expected.png
index fab9f14..c314a2d 100644
--- a/third_party/blink/web_tests/platform/win/scrollbars/border-box-rect-clips-scrollbars-expected.png
+++ b/third_party/blink/web_tests/platform/win/scrollbars/border-box-rect-clips-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
index 798d7e2..b868b362 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
index f8a68c0a..a8a40c8 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
index 70688d88..3976f8b9 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
index 2e75b4b..bcf129e 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
index eedb5d8..7d7415e 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
index 5747ee2..cb00a78 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
index 1e139bb4..98386611 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
index b5a9696..b9cbabb8 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-33-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
index 7c6204fe..0caa050 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
index e25cde2..62d882ba 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-36-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
index 8e266358..b665ed6 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
index fa899251..7a3617ad 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
index 8a65ea62..abe93e7 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
index c565f8bd..eaf3f5d6 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
index 291d72f..3f6f056 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-52-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
index 639fd1d..54254be3 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
index 95f873ff..71a8f858 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
index 7c2b91d..6241ff4 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
index 1fe47d5e..3aeff98 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
index 8877b122..52591be 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
index a79157a..40e41e24 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
index 9c2ed05..a3529fc 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
index 835cae3..d6de2c5 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
index 8240b8f5..2e3d016 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-morph-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
index 6ea50bf..c349e1a 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
index af1ee9a..27d31ca 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
index 8bda5cb..8a381b32 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
index 8685afbb..027aab9 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
index 26ad3b0..d1efdb4 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
index 012cc2b0..7bdf42e 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
index 7ebfe59..3c7f6e5 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
index 860b0cc..7fa470b 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
index 7480867c..e1a3072 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
index c5d9e06..64e2a48 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
index 20a2d97..b060ed0 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-render-01-b-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
index a61ea9d..23c49418 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
index 911ba2dd..a417679 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
index 03d6601..36630298 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
index 69ae353..4e4a6a1a 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-02-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
index 4b0f32a..7552b88 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
index 13773ab9..cb60a76 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
index 3556c96..4c99563 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
index 00677d99..27a5d39 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
index a5e3e855..fbee046 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
index 21fc6ed..ce6bcec 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
index 0b8fe78..9854a7e 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
index d7c1a92..10a9e9b1 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
index 6bf73677..44794435 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
index f1329cb..54c13af 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
index 1a14e8a6..f176e94 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
index c738a7a..44ae72c 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
index 490bd45..878d910 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-frag-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
index c72b5ee..02d0bcb 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-use-01-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
index 56ad87e..c53a413 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/struct-use-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
index f511f28..70978e5f 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
index e789fbb..b6aceec5 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
index ed4f527a..08060e49 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png b/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png
index fdb6e85..d45863e 100644
--- a/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png b/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png
index 02e8d43b..320e773 100644
--- a/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png b/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png
index ddbe31d7..62b52ec3 100644
--- a/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png b/third_party/blink/web_tests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
index 09656eb6..20f4d88d 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-background-image/background-repeat-expected.png b/third_party/blink/web_tests/platform/win/svg/as-background-image/background-repeat-expected.png
index 64cd384..3f3362c4 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-background-image/background-repeat-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-background-image/background-repeat-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-1-expected.png b/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-1-expected.png
index dcc8070..157e396 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-1-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-5-expected.png b/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-5-expected.png
index cbbccfd..741bdad 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-5-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-5-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-6-expected.png b/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-6-expected.png
index 0e84bc31..4ae0f19 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-6-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-background-image/svg-as-background-6-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-image/img-preserveAspectRatio-support-2-expected.png b/third_party/blink/web_tests/platform/win/svg/as-image/img-preserveAspectRatio-support-2-expected.png
index 4e59fd8..0c46a70 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-image/img-preserveAspectRatio-support-2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-image/img-preserveAspectRatio-support-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-object/object-box-sizing-no-width-height-expected.png b/third_party/blink/web_tests/platform/win/svg/as-object/object-box-sizing-no-width-height-expected.png
index 77cd9d4..403188f 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-object/object-box-sizing-no-width-height-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-object/object-box-sizing-no-width-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/filters/feTile-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/filters/feTile-expected.png
index f2b6f15..e13a2faa 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/filters/feTile-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/filters/feTile-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/filters/filterRegions-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/filters/filterRegions-expected.png
index 3d0df92..129a83e7 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/filters/filterRegions-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/filters/filterRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/masking/maskRegions-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/masking/maskRegions-expected.png
index 68ce66cd..e77c1056 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/masking/maskRegions-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/masking/maskRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/paints/gradientLimit-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/paints/gradientLimit-expected.png
index 47bb6966..91dbbe3d 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/paints/gradientLimit-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/paints/gradientLimit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternPreserveAspectRatioA-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternPreserveAspectRatioA-expected.png
index dc391d2..66a09643 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternPreserveAspectRatioA-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternPreserveAspectRatioA-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegionA-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegionA-expected.png
index a784766..ade790b 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegionA-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegionA-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-expected.png
index f690477..81abfa4a 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-positioned-objects-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-positioned-objects-expected.png
index e11074c..95182ff 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-positioned-objects-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/paints/patternRegions-positioned-objects-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/longTextOnPath-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/longTextOnPath-expected.png
index ad480688..9917461c 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/longTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/longTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/smallFonts-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/smallFonts-expected.png
index df6a90b5..b978d4c 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/smallFonts-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/smallFonts-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textAnchor-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textAnchor-expected.png
index 7d853e1..b59653eb 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textAnchor-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textAnchor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textDecoration-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textDecoration-expected.png
index 9038879..7393674 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textDecoration-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textDecoration-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect-expected.png
index 4285767..98294d0b 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect2-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect2-expected.png
index fe1b4f6..c2e41972 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect3-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect3-expected.png
index 4f52b6e..f34b6df5 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect3-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textEffect3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textFeatures-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textFeatures-expected.png
index 3b91b6b5..55cd74e 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textFeatures-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textFeatures-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout-expected.png
index 0222d427..cd71e36d 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout2-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout2-expected.png
index 30f8abfe..424c20f 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textLayout2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textLength-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textLength-expected.png
index 8473d4f..3355928 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textLength-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textLength-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPath-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPath-expected.png
index 01e173c..93c4594 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPathSpaces-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPathSpaces-expected.png
index 4c87207..f09b85e 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPathSpaces-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textOnPathSpaces-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition-expected.png
index 446fc1bf..aa94fe8 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition2-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition2-expected.png
index 0392550..7a2ed83a 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textPosition2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties-expected.png
index 8e3bb37c..b2b21705 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties2-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties2-expected.png
index 2f66883..3e8a79c 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textProperties2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/textStyles-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/textStyles-expected.png
index 71e0076..42072fc 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/textStyles-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/textStyles-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/verticalText-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/verticalText-expected.png
index 7563f91..fa79ddb 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/verticalText-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/verticalText-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/batik/text/verticalTextOnPath-expected.png b/third_party/blink/web_tests/platform/win/svg/batik/text/verticalTextOnPath-expected.png
index 312ee0d..b32f368f 100644
--- a/third_party/blink/web_tests/platform/win/svg/batik/text/verticalTextOnPath-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/batik/text/verticalTextOnPath-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/clone-element-with-animated-svg-properties-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/clone-element-with-animated-svg-properties-expected.png
index 4035a01..09b542a9 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/clone-element-with-animated-svg-properties-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/clone-element-with-animated-svg-properties-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/focus-ring-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/focus-ring-expected.png
index ceaca59c..1f578d0 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/invalid-css-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/invalid-css-expected.png
index 48589de1..0ca643f7 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/invalid-css-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/invalid-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
index 3364e6a4..58a5442c 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-transform-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-transform-expected.png
index d733098..c82bf188 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png
index 3364e6a4..58a5442c 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png
index 3364e6a4..58a5442c 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/marker-orient-auto-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/marker-orient-auto-expected.png
index 9f18820e..80a5c4d 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/marker-orient-auto-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/marker-orient-auto-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png
index 09ebed0..16df9ee 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png
index 1cde9dc4..7423be83 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/second-inline-text-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/second-inline-text-expected.png
index 5790766f..3742ef9 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/second-inline-text-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/second-inline-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/shapes-supporting-markers-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/shapes-supporting-markers-expected.png
index d9bb278..7908abdb 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/shapes-supporting-markers-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/shapes-supporting-markers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/stroked-pattern-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/stroked-pattern-expected.png
index bb6c38b..3c50518b 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/stroked-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/stroked-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png
index e069fb577..8ebaef25 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/use-transform-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/use-transform-expected.png
index 39605159..c07b5335 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/use-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/use-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/viewbox-syntax-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/viewbox-syntax-expected.png
index 7d27777f..c8f8b87 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/viewbox-syntax-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/viewbox-syntax-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/hixie/perf/001-expected.png b/third_party/blink/web_tests/platform/win/svg/hixie/perf/001-expected.png
index 1c90bcb..d3ee0c0 100644
--- a/third_party/blink/web_tests/platform/win/svg/hixie/perf/001-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/hixie/perf/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/hixie/perf/002-expected.png b/third_party/blink/web_tests/platform/win/svg/hixie/perf/002-expected.png
index 00ce03f..e79551a 100644
--- a/third_party/blink/web_tests/platform/win/svg/hixie/perf/002-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/hixie/perf/002-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/hixie/perf/007-expected.png b/third_party/blink/web_tests/platform/win/svg/hixie/perf/007-expected.png
index e7630ed..03c1c7c6 100644
--- a/third_party/blink/web_tests/platform/win/svg/hixie/perf/007-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/hixie/perf/007-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
index bd09c602..f664c6f8 100644
--- a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
index 80941650..9dc1252f 100644
--- a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
index 80941650..9dc1252f 100644
--- a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-absolute-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
index 578baa2d..af18fbe 100644
--- a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
index 9aa8d65..ee3c611 100644
--- a/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/zoom/page/zoom-svg-through-object-with-percentage-size-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-3-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-3-expected.png
index d60ebafb7..b34a700 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-3-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/collapsing_borders/bug41262-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/marvin/tables_style-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/marvin/tables_style-expected.png
index bd5bc40..b9845afb 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/marvin/tables_style-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/marvin/tables_style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index 598d1fe..5bab376 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png b/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png
index 7537b55..d7e5347 100644
--- a/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png
+++ b/third_party/blink/web_tests/platform/win/transforms/transformed-focused-text-input-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
index 41b2820..4c4385c 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-with-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png b/third_party/blink/web_tests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
index e4f9afb..7decaea9 100644
--- a/third_party/blink/web_tests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/border-box-rect-clips-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
index fc4a2458..987e23506 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
index 77c873e3..5a0a96e 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index d0a3843..3bba785a 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
index 62e8096..b0c025c 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
index ccab658..9a68677 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index c54b4fc..c1ec3b5 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
index 62e8096..b0c025c 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png
index ccab658..9a68677 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/popup-menu-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index c54b4fc..c1ec3b5 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
index 76ae44b6..dbdb216a 100644
--- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
index 320bc0a..3e469ce 100644
--- a/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png b/third_party/blink/web_tests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
index d4708b1..472e028 100644
--- a/third_party/blink/web_tests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom110-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png
index 2b03999..ccefde3 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-expected.png
index 5fd681f..d6ea6ec 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png
index 443404a..7d202f1 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png
index 57004b4..29005c5 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-expected.png
index fc3d69e..76e6f19 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
index 5e303389..d4bb2bc 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-expected.png
index 2a3c98db..b7e84f0 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-expected.png
index b2e35f3..c28dee9 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
index a170c16..276ed2b9 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-expected.png
index 19008de..c2e5f5d 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png
index db37d5cd..e94d7eb 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-expected.png
index 725a0c6..833280b 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
index a4ba142d..1e59505 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-expected.png
index cd7a107..e6a6a9f 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_border-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png
index 2e9a764..b66061b2 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-expected.png
index 2767901..2a22412 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_layers-hide-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png
index 8058e03f..9bea8ea 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-expected.png
index 5387e6ec..7e7b03db 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png
index be1b89f7..3ea63246 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png
index 5db70f3..527b5c07 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-expected.png
index 258593fb..0d06149 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
index 29b30be..509fd47 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-expected.png
index 6958ea4..49c522943 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-expected.png
index 6c37c72..3f1db2c 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png
index dd8e253f..77d215f 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-expected.png
index ecb70ee..7628590b 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
index d0b023e2..b4a71b98 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-expected.png
index 532d7c8..ee728b0 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_position-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
index bd81922..5b4e4618 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-expected.png
index 8ed9fee..691490a2 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-cell-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png
index 3574a0d..a8514ac 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png
index 4889a75a..dce2245a 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-expected.png
index 6d5b8cbe..9162769 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
index a84fd5f..b85c290 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png
index bc35aa8..0807fc7 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-expected.png
index 1b59ce2b..c1c5ed6 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png
index af35c4b9..0f352a6 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-expected.png
index 1b57024..a05b5ac 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
index 91ae3a4..f0a10ec8 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png
index da005dc..3b1c291 100644
--- a/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/fast/text/shadow-translucent-fill-expected.png b/third_party/blink/web_tests/platform/win7/fast/text/shadow-translucent-fill-expected.png
index 79fea6da..79f3e13 100644
--- a/third_party/blink/web_tests/platform/win7/fast/text/shadow-translucent-fill-expected.png
+++ b/third_party/blink/web_tests/platform/win7/fast/text/shadow-translucent-fill-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/svg/W3C-SVG-1.1/painting-render-01-b-expected.png b/third_party/blink/web_tests/platform/win7/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
index bc26cab..93ae413 100644
--- a/third_party/blink/web_tests/platform/win7/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
+++ b/third_party/blink/web_tests/platform/win7/svg/W3C-SVG-1.1/painting-render-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png b/third_party/blink/web_tests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png
index ca5d116..963300c2 100644
--- a/third_party/blink/web_tests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png
+++ b/third_party/blink/web_tests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/svg/batik/text/verticalText-expected.png b/third_party/blink/web_tests/platform/win7/svg/batik/text/verticalText-expected.png
index bd26fce..07cce28 100644
--- a/third_party/blink/web_tests/platform/win7/svg/batik/text/verticalText-expected.png
+++ b/third_party/blink/web_tests/platform/win7/svg/batik/text/verticalText-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/blink/web_tests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index 549d584c..b515ba7 100644
--- a/third_party/blink/web_tests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/blink/web_tests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
index 4f890e9..6935994 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
index 4f5fb27..8d50476 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
index 4f5fb27..8d50476 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/scrollbars/custom-scrollbar-display-expected.png b/third_party/blink/web_tests/scrollbars/custom-scrollbar-display-expected.png
index 0371ae6..232992a 100644
--- a/third_party/blink/web_tests/scrollbars/custom-scrollbar-display-expected.png
+++ b/third_party/blink/web_tests/scrollbars/custom-scrollbar-display-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png b/third_party/blink/web_tests/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
deleted file mode 100644
index 3cc6e81..0000000
--- a/third_party/blink/web_tests/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2a-expected.png b/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2a-expected.png
index 6df4525..fb8d45e1 100644
--- a/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2a-expected.png
+++ b/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2a-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2b-expected.png b/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2b-expected.png
index 8985141..879babb 100644
--- a/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2b-expected.png
+++ b/third_party/blink/web_tests/svg/animations/animateMotion-accumulate-2b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/as-background-image/same-image-two-instances-background-image-expected.png b/third_party/blink/web_tests/svg/as-background-image/same-image-two-instances-background-image-expected.png
index ccda916..6ba88cc 100644
--- a/third_party/blink/web_tests/svg/as-background-image/same-image-two-instances-background-image-expected.png
+++ b/third_party/blink/web_tests/svg/as-background-image/same-image-two-instances-background-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/as-image/same-image-two-instances-expected.png b/third_party/blink/web_tests/svg/as-image/same-image-two-instances-expected.png
index 07ba2ff..e1f364f2 100644
--- a/third_party/blink/web_tests/svg/as-image/same-image-two-instances-expected.png
+++ b/third_party/blink/web_tests/svg/as-image/same-image-two-instances-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/circular-marker-reference-2-expected.png b/third_party/blink/web_tests/svg/custom/circular-marker-reference-2-expected.png
index 1dd1a4d..da975b0f 100644
--- a/third_party/blink/web_tests/svg/custom/circular-marker-reference-2-expected.png
+++ b/third_party/blink/web_tests/svg/custom/circular-marker-reference-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/dasharrayOrigin-expected.png b/third_party/blink/web_tests/svg/custom/dasharrayOrigin-expected.png
index d4696b03..e6f6f53 100644
--- a/third_party/blink/web_tests/svg/custom/dasharrayOrigin-expected.png
+++ b/third_party/blink/web_tests/svg/custom/dasharrayOrigin-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/gradient-stroke-width-expected.png b/third_party/blink/web_tests/svg/custom/gradient-stroke-width-expected.png
index 9ce3e64..23512e0e 100644
--- a/third_party/blink/web_tests/svg/custom/gradient-stroke-width-expected.png
+++ b/third_party/blink/web_tests/svg/custom/gradient-stroke-width-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/marker-opacity-expected.png b/third_party/blink/web_tests/svg/custom/marker-opacity-expected.png
index 3d613be..29aad87 100644
--- a/third_party/blink/web_tests/svg/custom/marker-opacity-expected.png
+++ b/third_party/blink/web_tests/svg/custom/marker-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/non-circular-marker-reference-expected.png b/third_party/blink/web_tests/svg/custom/non-circular-marker-reference-expected.png
index 53ca8cd..70124e156 100644
--- a/third_party/blink/web_tests/svg/custom/non-circular-marker-reference-expected.png
+++ b/third_party/blink/web_tests/svg/custom/non-circular-marker-reference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/non-scaling-stroke-expected.png b/third_party/blink/web_tests/svg/custom/non-scaling-stroke-expected.png
index d05ba61..319ef97 100644
--- a/third_party/blink/web_tests/svg/custom/non-scaling-stroke-expected.png
+++ b/third_party/blink/web_tests/svg/custom/non-scaling-stroke-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/pattern-referencing-preserve-aspect-ratio-expected.png b/third_party/blink/web_tests/svg/custom/pattern-referencing-preserve-aspect-ratio-expected.png
index 25a5f40d..1adc3f4 100644
--- a/third_party/blink/web_tests/svg/custom/pattern-referencing-preserve-aspect-ratio-expected.png
+++ b/third_party/blink/web_tests/svg/custom/pattern-referencing-preserve-aspect-ratio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/use-css-no-effect-on-shadow-tree-expected.png b/third_party/blink/web_tests/svg/custom/use-css-no-effect-on-shadow-tree-expected.png
index f11ae5f..2dfefc0 100644
--- a/third_party/blink/web_tests/svg/custom/use-css-no-effect-on-shadow-tree-expected.png
+++ b/third_party/blink/web_tests/svg/custom/use-css-no-effect-on-shadow-tree-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-invalidation-expected.png b/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-invalidation-expected.png
index 40e51f7..212a5e11 100644
--- a/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-invalidation-expected.png
+++ b/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-invalidation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-overflow-position-expected.png b/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-overflow-position-expected.png
index 7333dc7..56e2aeeb 100644
--- a/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-overflow-position-expected.png
+++ b/third_party/blink/web_tests/virtual/exotic-color-space/images/cross-fade-overflow-position-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/http/tests/navigation/README.txt b/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/http/tests/navigation/README.txt
new file mode 100644
index 0000000..2ff197f5
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/http/tests/navigation/README.txt
@@ -0,0 +1,2 @@
+This directory is for running navigation tests with the FeaturePolicyForSandbox
+runtime flag.
diff --git a/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/http/tests/security/README.txt b/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/http/tests/security/README.txt
new file mode 100644
index 0000000..b71a013
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/http/tests/security/README.txt
@@ -0,0 +1,2 @@
+This directory is for running tests with the FeaturePolicyForSandbox
+runtime flag.
diff --git a/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/mhtml/README.txt b/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/mhtml/README.txt
new file mode 100644
index 0000000..b71a013
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/feature-policy-for-sandbox/mhtml/README.txt
@@ -0,0 +1,2 @@
+This directory is for running tests with the FeaturePolicyForSandbox
+runtime flag.
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
index 76b3144d..370651a 100644
--- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -4865,14 +4865,22 @@
     method constructor
 interface RTCIceCandidate
     attribute @@toStringTag
+    getter address
     getter candidate
+    getter component
+    getter foundation
+    getter port
+    getter priority
+    getter protocol
+    getter relatedAddress
+    getter relatedPort
     getter sdpMLineIndex
     getter sdpMid
+    getter tcpType
+    getter type
+    getter usernameFragment
     method constructor
     method toJSON
-    setter candidate
-    setter sdpMLineIndex
-    setter sdpMid
 interface RTCPeerConnection : EventTarget
     static method generateCertificate
     attribute @@toStringTag
diff --git a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
index 7416e921..18fd974 100644
--- a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
+++ b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 494 tests; 303 PASS, 191 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 494 tests; 335 PASS, 159 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS Test driver for asyncInitCertificate
 FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: ReferenceError: RTCSctpTransport is not defined Reached unreachable code
@@ -147,39 +147,39 @@
 PASS RTCIceCandidate interface: existence and properties of interface prototype object
 PASS RTCIceCandidate interface: existence and properties of interface prototype object's "constructor" property
 PASS RTCIceCandidate interface: existence and properties of interface prototype object's @@unscopables property
-FAIL RTCIceCandidate interface: attribute candidate assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set candidate() { [native code] }"
-FAIL RTCIceCandidate interface: attribute sdpMid assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdpMid() { [native code] }"
-FAIL RTCIceCandidate interface: attribute sdpMLineIndex assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdpMLineIndex() { [native code] }"
-FAIL RTCIceCandidate interface: attribute foundation assert_true: The prototype object must have a property "foundation" expected true got false
-FAIL RTCIceCandidate interface: attribute component assert_true: The prototype object must have a property "component" expected true got false
-FAIL RTCIceCandidate interface: attribute priority assert_true: The prototype object must have a property "priority" expected true got false
-FAIL RTCIceCandidate interface: attribute address assert_true: The prototype object must have a property "address" expected true got false
-FAIL RTCIceCandidate interface: attribute protocol assert_true: The prototype object must have a property "protocol" expected true got false
-FAIL RTCIceCandidate interface: attribute port assert_true: The prototype object must have a property "port" expected true got false
-FAIL RTCIceCandidate interface: attribute type assert_true: The prototype object must have a property "type" expected true got false
-FAIL RTCIceCandidate interface: attribute tcpType assert_true: The prototype object must have a property "tcpType" expected true got false
-FAIL RTCIceCandidate interface: attribute relatedAddress assert_true: The prototype object must have a property "relatedAddress" expected true got false
-FAIL RTCIceCandidate interface: attribute relatedPort assert_true: The prototype object must have a property "relatedPort" expected true got false
-FAIL RTCIceCandidate interface: attribute usernameFragment assert_true: The prototype object must have a property "usernameFragment" expected true got false
+PASS RTCIceCandidate interface: attribute candidate
+PASS RTCIceCandidate interface: attribute sdpMid
+PASS RTCIceCandidate interface: attribute sdpMLineIndex
+PASS RTCIceCandidate interface: attribute foundation
+PASS RTCIceCandidate interface: attribute component
+PASS RTCIceCandidate interface: attribute priority
+PASS RTCIceCandidate interface: attribute address
+PASS RTCIceCandidate interface: attribute protocol
+PASS RTCIceCandidate interface: attribute port
+PASS RTCIceCandidate interface: attribute type
+PASS RTCIceCandidate interface: attribute tcpType
+PASS RTCIceCandidate interface: attribute relatedAddress
+PASS RTCIceCandidate interface: attribute relatedPort
+PASS RTCIceCandidate interface: attribute usernameFragment
 PASS RTCIceCandidate interface: operation toJSON()
-FAIL RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 }) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL Stringification of new RTCIceCandidate({ sdpMid: 1 }) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeMismatchError: Failed to construct 'RTCIceCandidate': The 'candidate' property is not a string, or is empty."
-FAIL RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 }) Cannot read property 'toJSON' of undefined
+PASS RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 })
+PASS Stringification of new RTCIceCandidate({ sdpMid: 1 })
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type
+PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type
+PASS RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 })
 PASS RTCPeerConnectionIceEvent interface: existence and properties of interface object
 PASS RTCPeerConnectionIceEvent interface object length
 PASS RTCPeerConnectionIceEvent interface object name
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 443981b..0b40f4b 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -5620,14 +5620,22 @@
     setter onstatechange
 interface RTCIceCandidate
     attribute @@toStringTag
+    getter address
     getter candidate
+    getter component
+    getter foundation
+    getter port
+    getter priority
+    getter protocol
+    getter relatedAddress
+    getter relatedPort
     getter sdpMLineIndex
     getter sdpMid
+    getter tcpType
+    getter type
+    getter usernameFragment
     method constructor
     method toJSON
-    setter candidate
-    setter sdpMLineIndex
-    setter sdpMid
 interface RTCIceTransport : EventTarget
     attribute @@toStringTag
     getter gatheringState
diff --git a/third_party/closure_compiler/externs/accessibility_private.js b/third_party/closure_compiler/externs/accessibility_private.js
index 6fbc364..7bf7732 100644
--- a/third_party/closure_compiler/externs/accessibility_private.js
+++ b/third_party/closure_compiler/externs/accessibility_private.js
@@ -265,3 +265,11 @@
  * @type {!ChromeEvent}
  */
 chrome.accessibilityPrivate.onSelectToSpeakStateChangeRequested;
+
+/**
+ * Called when an internal component within accessibility wants to force speech
+ * output for an accessibility extension. Do not use without approval from
+ * accessibility owners.
+ * @type {!ChromeEvent}
+ */
+chrome.accessibilityPrivate.onAnnounceForAccessibility;
diff --git a/third_party/webxr_test_pages/webxr-samples/js/cottontail/src/nodes/cube-sea.js b/third_party/webxr_test_pages/webxr-samples/js/cottontail/src/nodes/cube-sea.js
index cade3c2..0586b42 100644
--- a/third_party/webxr_test_pages/webxr-samples/js/cottontail/src/nodes/cube-sea.js
+++ b/third_party/webxr_test_pages/webxr-samples/js/cottontail/src/nodes/cube-sea.js
@@ -170,7 +170,7 @@
     // not recommended for viewing in a headset.
     this.autoRotate = !!options.autoRotate;
 
-    this._texture = new UrlTexture(options.imageUrl || 'media/textures/cube-sea.png');
+    this._texture = new UrlTexture(options.imageUrl || 'test-media/cube-sea.webp');
 
     this._material = new CubeSeaMaterial(this.heavyGpu);
     this._material.baseColor.texture = this._texture;
diff --git a/third_party/webxr_test_pages/webxr-samples/test-media/cube-sea.webp b/third_party/webxr_test_pages/webxr-samples/test-media/cube-sea.webp
new file mode 100644
index 0000000..1d57c536
--- /dev/null
+++ b/third_party/webxr_test_pages/webxr-samples/test-media/cube-sea.webp
Binary files differ
diff --git a/third_party/webxr_test_pages/webxr-samples/tests/cube-sea.html b/third_party/webxr_test_pages/webxr-samples/tests/cube-sea.html
index c047eefe..8cb2856 100644
--- a/third_party/webxr_test_pages/webxr-samples/tests/cube-sea.html
+++ b/third_party/webxr_test_pages/webxr-samples/tests/cube-sea.html
@@ -134,7 +134,7 @@
       }
 
       let cubeSea = new CubeSeaNode({
-        imageUrl: '../media/textures/cube-sea.png',
+        imageUrl: '../test-media/cube-sea.webp',
 
         // Number and size of the static cubes. Use the larger
         // cube count from heavyGpu to avoid inconsistent defaults.
diff --git a/tools/json_schema_compiler/cc_generator.py b/tools/json_schema_compiler/cc_generator.py
index 52df07f..cc8d6fe8 100644
--- a/tools/json_schema_compiler/cc_generator.py
+++ b/tools/json_schema_compiler/cc_generator.py
@@ -670,7 +670,7 @@
           ' || %(var)s.GetSize() > %(total)d) {')
     (c.Concat(self._GenerateError(
         '"expected %%(total)d arguments, got " '
-        '+ base::IntToString(%%(var)s.GetSize())'))
+        '+ base::NumberToString(%%(var)s.GetSize())'))
       .Append('return nullptr;')
       .Eblock('}')
       .Substitute({
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index f74ce0c..03dbfb3b 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -16449,6 +16449,7 @@
   <int value="432" label="STORAGE_MANAGED_ON_CHANGE"/>
   <int value="433" label="AUTOFILL_PRIVATE_ON_LOCAL_CREDIT_CARD_LIST_CHANGED"/>
   <int value="434" label="AUTOFILL_PRIVATE_ON_SERVER_CREDIT_CARD_LIST_CHANGED"/>
+  <int value="435" label="ACCESSIBILITY_PRIVATE_ON_ANNOUNCE_FOR_ACCESSIBILITY"/>
 </enum>
 
 <enum name="ExtensionFileWriteResult">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 2d67d05..02ff22be 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -1303,6 +1303,9 @@
 </histogram>
 
 <histogram name="Android.ArmFpu" enum="AndroidArmFpu">
+  <obsolete>
+    Removed 2019-01: New releases of Chrome+Android+ARM rely on NEON support.
+  </obsolete>
   <owner>fdegans@chromium.org</owner>
   <summary>
     Reports the FPU capabilities of the Android ARM device. This is recorded
@@ -13049,6 +13052,36 @@
   </summary>
 </histogram>
 
+<histogram name="BrowserSwitcher.CacheFile.MkDirSuccess" enum="BooleanSuccess">
+  <owner>nicolaso@chromium.org</owner>
+  <owner>pastarmovj@chromium.org</owner>
+  <summary>
+    Records whether the &quot;AppData/Local/Google/BrowserSwitcher&quot;
+    directory was successfully created. Windows only.
+  </summary>
+</histogram>
+
+<histogram name="BrowserSwitcher.CacheFile.MkTempSuccess" enum="BooleanSuccess">
+  <owner>nicolaso@chromium.org</owner>
+  <owner>pastarmovj@chromium.org</owner>
+  <summary>
+    Records whether a temp file in
+    &quot;AppData/Local/Google/BrowserSwitcher&quot; the directory was
+    successfully created. Windows only.
+  </summary>
+</histogram>
+
+<histogram name="BrowserSwitcher.CacheFile.MoveSuccess" enum="BooleanSuccess">
+  <owner>nicolaso@chromium.org</owner>
+  <owner>pastarmovj@chromium.org</owner>
+  <summary>
+    Records whether the temp file in
+    &quot;AppData/Local/Google/BrowserSwitcher&quot; directory was successfully
+    moved to its final destination (&quot;cache.dat&quot;) after writing its
+    contents. Windows only.
+  </summary>
+</histogram>
+
 <histogram name="BrowserSwitcher.Decision" enum="BooleanBrowserSwitch">
   <owner>nicolaso@chromium.org</owner>
   <owner>pastarmovj@chromium.org</owner>
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index a85661fa..2f12d267 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -259,6 +259,7 @@
 crbug.com/923106 [ Win ] system_health.common_desktop/browse:media:tumblr [ Skip ]
 crbug.com/927409 [ Win ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
 crbug.com/927409 [ Linux ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/927758 [ Desktop ] system_health.common_desktop/load:games:alphabetty [ Skip ]
 
 # Benchmark: system_health.common_mobile
 crbug.com/914390 [ Nexus_5 ] system_health.common_mobile/browse:chrome:newtab [ Skip ]
@@ -297,6 +298,7 @@
 crbug.com/799734 [ Win ] system_health.memory_desktop/browse:media:tumblr [ Skip ]
 crbug.com/899887 [ Linux ] system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018 [ Skip ]
 crbug.com/924330 [ Linux ] system_health.memory_desktop/browse:media:pinterest:2018 [ Skip ]
+crbug.com/927758 [ Desktop ] system_health.memory_desktop/load:games:alphabetty [ Skip ]
 
 # Benchmark: system_health.memory_mobile
 crbug.com/787001 [ Android_Webview ] system_health.memory_mobile/load:media:soundcloud [ Skip ]
@@ -438,6 +440,8 @@
 crbug.com/853835 [ Linux ] loading.desktop.network_service/Taobao_warm [ Skip ]
 crbug.com/879833 [ Linux ] loading.desktop.network_service/Walgreens_cold [ Skip ]
 crbug.com/879833 [ Linux ] loading.desktop.network_service/Walgreens_warm [ Skip ]
+crbug.com/927758 [ Desktop ] loading.desktop.network_service/TheOnion_cold [ Skip ]
+crbug.com/927758 [ Desktop ] loading.desktop.network_service/TheOnion_warm [ Skip ]
 
 # Benchmark: loading.desktop_layout_ng
 crbug.com/879833 [ Linux ] loading.desktop_layout_ng/Walgreens_cold [ Skip ]
diff --git a/ui/aura/env.cc b/ui/aura/env.cc
index c6775642..fd82e8f 100644
--- a/ui/aura/env.cc
+++ b/ui/aura/env.cc
@@ -343,8 +343,8 @@
   if (connector) {
     // Supplying a connector implies this process is hosting Viz.
     params.connector = connector;
-    // Hosting viz is currently single-process only.
-    params.single_process = true;
+    if (!features::IsMashOopVizEnabled())
+      params.single_process = true;
     params.using_mojo = true;
   }
 
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 61a64075..2f70fa5 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -528,17 +528,13 @@
 }
 
 MouseEvent::MouseEvent(EventType type,
-                       const gfx::Point& location,
-                       const gfx::Point& root_location,
+                       const gfx::PointF& location,
+                       const gfx::PointF& root_location,
                        base::TimeTicks time_stamp,
                        int flags,
                        int changed_button_flags,
                        const PointerDetails& pointer_details)
-    : LocatedEvent(type,
-                   gfx::PointF(location),
-                   gfx::PointF(root_location),
-                   time_stamp,
-                   flags),
+    : LocatedEvent(type, location, root_location, time_stamp, flags),
       changed_button_flags_(changed_button_flags),
       pointer_details_(pointer_details) {
   DCHECK_NE(ET_MOUSEWHEEL, type);
@@ -550,6 +546,21 @@
     SetType(ET_MOUSE_DRAGGED);
 }
 
+MouseEvent::MouseEvent(EventType type,
+                       const gfx::Point& location,
+                       const gfx::Point& root_location,
+                       base::TimeTicks time_stamp,
+                       int flags,
+                       int changed_button_flags,
+                       const PointerDetails& pointer_details)
+    : MouseEvent(type,
+                 gfx::PointF(location),
+                 gfx::PointF(root_location),
+                 time_stamp,
+                 flags,
+                 changed_button_flags,
+                 pointer_details) {}
+
 MouseEvent::MouseEvent(const MouseEvent& other) = default;
 
 MouseEvent::~MouseEvent() = default;
@@ -695,8 +706,8 @@
 }
 
 MouseWheelEvent::MouseWheelEvent(const gfx::Vector2d& offset,
-                                 const gfx::Point& location,
-                                 const gfx::Point& root_location,
+                                 const gfx::PointF& location,
+                                 const gfx::PointF& root_location,
                                  base::TimeTicks time_stamp,
                                  int flags,
                                  int changed_button_flags)
@@ -713,6 +724,19 @@
   SetType(ui::ET_MOUSEWHEEL);
 }
 
+MouseWheelEvent::MouseWheelEvent(const gfx::Vector2d& offset,
+                                 const gfx::Point& location,
+                                 const gfx::Point& root_location,
+                                 base::TimeTicks time_stamp,
+                                 int flags,
+                                 int changed_button_flags)
+    : MouseWheelEvent(offset,
+                      gfx::PointF(location),
+                      gfx::PointF(root_location),
+                      time_stamp,
+                      flags,
+                      changed_button_flags) {}
+
 MouseWheelEvent::~MouseWheelEvent() = default;
 
 #if defined(OS_WIN)
@@ -743,15 +767,12 @@
 }
 
 TouchEvent::TouchEvent(EventType type,
-                       const gfx::Point& location,
+                       const gfx::PointF& location,
+                       const gfx::PointF& root_location,
                        base::TimeTicks time_stamp,
                        const PointerDetails& pointer_details,
                        int flags)
-    : LocatedEvent(type,
-                   gfx::PointF(location),
-                   gfx::PointF(location),
-                   time_stamp,
-                   flags),
+    : LocatedEvent(type, location, root_location, time_stamp, flags),
       unique_event_id_(ui::GetNextTouchEventId()),
       may_cause_scrolling_(false),
       should_remove_native_touch_id_mapping_(false),
@@ -760,6 +781,18 @@
   latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT);
 }
 
+TouchEvent::TouchEvent(EventType type,
+                       const gfx::Point& location,
+                       base::TimeTicks time_stamp,
+                       const PointerDetails& pointer_details,
+                       int flags)
+    : TouchEvent(type,
+                 gfx::PointF(location),
+                 gfx::PointF(location),
+                 time_stamp,
+                 pointer_details,
+                 flags) {}
+
 TouchEvent::TouchEvent(const TouchEvent& copy)
     : LocatedEvent(copy),
       unique_event_id_(copy.unique_event_id_),
@@ -1168,7 +1201,8 @@
 }
 
 ScrollEvent::ScrollEvent(EventType type,
-                         const gfx::Point& location,
+                         const gfx::PointF& location,
+                         const gfx::PointF& root_location,
                          base::TimeTicks time_stamp,
                          int flags,
                          float x_offset,
@@ -1178,7 +1212,7 @@
                          int finger_count,
                          EventMomentumPhase momentum_phase,
                          ScrollEventPhase scroll_event_phase)
-    : MouseEvent(type, location, location, time_stamp, flags, 0),
+    : MouseEvent(type, location, root_location, time_stamp, flags, 0),
       x_offset_(x_offset),
       y_offset_(y_offset),
       x_offset_ordinal_(x_offset_ordinal),
@@ -1190,6 +1224,30 @@
   latency()->set_source_event_type(ui::SourceEventType::WHEEL);
 }
 
+ScrollEvent::ScrollEvent(EventType type,
+                         const gfx::Point& location,
+                         base::TimeTicks time_stamp,
+                         int flags,
+                         float x_offset,
+                         float y_offset,
+                         float x_offset_ordinal,
+                         float y_offset_ordinal,
+                         int finger_count,
+                         EventMomentumPhase momentum_phase,
+                         ScrollEventPhase scroll_event_phase)
+    : ScrollEvent(type,
+                  gfx::PointF(location),
+                  gfx::PointF(location),
+                  time_stamp,
+                  flags,
+                  x_offset,
+                  y_offset,
+                  x_offset_ordinal,
+                  y_offset_ordinal,
+                  finger_count,
+                  momentum_phase,
+                  scroll_event_phase) {}
+
 ScrollEvent::ScrollEvent(const ScrollEvent& other) = default;
 
 ScrollEvent::~ScrollEvent() = default;
diff --git a/ui/events/event.h b/ui/events/event.h
index fbb842f..43f66d1f9 100644
--- a/ui/events/event.h
+++ b/ui/events/event.h
@@ -420,13 +420,15 @@
 
   // Location of the event relative to the target window and in the target
   // window's coordinate space. If there is no target this is the same as
-  // |root_location_|.
+  // |root_location_|. Native events may generate float values with sub-pixel
+  // precision.
   gfx::PointF location_;
 
   // Location of the event. What coordinate system this is in depends upon the
   // phase of event dispatch. For client code (meaning EventHanalders) it is
   // generally in screen coordinates, but early on it may be in pixels and
-  // relative to a display.
+  // relative to a display. Native events may generate float values with
+  // sub-pixel precision.
   gfx::PointF root_location_;
 };
 
@@ -538,6 +540,17 @@
 
   // Note: Use the ctor for MouseWheelEvent if type is ET_MOUSEWHEEL.
   MouseEvent(EventType type,
+             const gfx::PointF& location,
+             const gfx::PointF& root_location,
+             base::TimeTicks time_stamp,
+             int flags,
+             int changed_button_flags,
+             const PointerDetails& pointer_details =
+                 PointerDetails(EventPointerType::POINTER_TYPE_MOUSE,
+                                kMousePointerId));
+
+  // DEPRECATED: Prefer constructor that takes gfx::PointF.
+  MouseEvent(EventType type,
              const gfx::Point& location,
              const gfx::Point& root_location,
              base::TimeTicks time_stamp,
@@ -654,6 +667,14 @@
 
   // Used for synthetic events in testing and by the gesture recognizer.
   MouseWheelEvent(const gfx::Vector2d& offset,
+                  const gfx::PointF& location,
+                  const gfx::PointF& root_location,
+                  base::TimeTicks time_stamp,
+                  int flags,
+                  int changed_button_flags);
+
+  // DEPRECATED: Prefer the constructor that takes gfx::PointF.
+  MouseWheelEvent(const gfx::Vector2d& offset,
                   const gfx::Point& location,
                   const gfx::Point& root_location,
                   base::TimeTicks time_stamp,
@@ -690,6 +711,14 @@
         pointer_details_(model.pointer_details_) {}
 
   TouchEvent(EventType type,
+             const gfx::PointF& location,
+             const gfx::PointF& root_location,
+             base::TimeTicks time_stamp,
+             const PointerDetails& pointer_details,
+             int flags = 0);
+
+  // DEPRECATED: Prefer the constructor that takes gfx::PointF.
+  TouchEvent(EventType type,
              const gfx::Point& location,
              base::TimeTicks time_stamp,
              const PointerDetails& pointer_details,
@@ -977,6 +1006,7 @@
 class EVENTS_EXPORT ScrollEvent : public MouseEvent {
  public:
   explicit ScrollEvent(const PlatformEvent& native_event);
+
   template <class T>
   ScrollEvent(const ScrollEvent& model, T* source, T* target)
       : MouseEvent(model, source, target),
@@ -989,6 +1019,20 @@
         scroll_event_phase_(model.scroll_event_phase_) {}
 
   ScrollEvent(EventType type,
+              const gfx::PointF& location,
+              const gfx::PointF& root_location,
+              base::TimeTicks time_stamp,
+              int flags,
+              float x_offset,
+              float y_offset,
+              float x_offset_ordinal,
+              float y_offset_ordinal,
+              int finger_count,
+              EventMomentumPhase momentum_phase = EventMomentumPhase::NONE,
+              ScrollEventPhase phase = ScrollEventPhase::kNone);
+
+  // DEPRECATED: Prefer the constructor that takes gfx::PointF.
+  ScrollEvent(EventType type,
               const gfx::Point& location,
               base::TimeTicks time_stamp,
               int flags,
diff --git a/ui/events/mojo/event_struct_traits.cc b/ui/events/mojo/event_struct_traits.cc
index a624bac..0febde7 100644
--- a/ui/events/mojo/event_struct_traits.cc
+++ b/ui/events/mojo/event_struct_traits.cc
@@ -33,9 +33,9 @@
 
   *out = std::make_unique<ui::ScrollEvent>(
       mojo::ConvertTo<ui::EventType>(event->action()),
-      gfx::Point(scroll_data->location->relative_location.x(),
-                 scroll_data->location->relative_location.y()),
-      time_stamp, event->flags(), scroll_data->x_offset, scroll_data->y_offset,
+      scroll_data->location->relative_location,
+      scroll_data->location->root_location, time_stamp, event->flags(),
+      scroll_data->x_offset, scroll_data->y_offset,
       scroll_data->x_offset_ordinal, scroll_data->y_offset_ordinal,
       scroll_data->finger_count, scroll_data->momentum_phase);
   return true;
@@ -432,20 +432,16 @@
       std::unique_ptr<ui::MouseEvent> mouse_event;
       if (event.action() == ui::mojom::EventType::MOUSE_WHEEL_EVENT) {
         mouse_event = std::make_unique<ui::MouseWheelEvent>(
-            mouse_data->wheel_offset,
-            gfx::Point(),  // Real location set below.
-            gfx::Point(),  // Real location set below.
-            time_stamp, event.flags(), mouse_data->changed_button_flags);
+            mouse_data->wheel_offset, mouse_data->location->relative_location,
+            mouse_data->location->root_location, time_stamp, event.flags(),
+            mouse_data->changed_button_flags);
       } else {
         mouse_event = std::make_unique<ui::MouseEvent>(
             mojo::ConvertTo<ui::EventType>(event.action()),
-            gfx::Point(),  // Real location set below.
-            gfx::Point(),  // Real location set below.
-            time_stamp, event.flags(), mouse_data->changed_button_flags,
-            mouse_data->pointer_details);
+            mouse_data->location->relative_location,
+            mouse_data->location->root_location, time_stamp, event.flags(),
+            mouse_data->changed_button_flags, mouse_data->pointer_details);
       }
-      mouse_event->set_location_f(mouse_data->location->relative_location);
-      mouse_event->set_root_location_f(mouse_data->location->root_location);
       *out = std::move(mouse_event);
       break;
     }
@@ -459,10 +455,9 @@
       std::unique_ptr<ui::TouchEvent> touch_event =
           std::make_unique<ui::TouchEvent>(
               mojo::ConvertTo<ui::EventType>(event.action()),
-              gfx::Point(),  // Real location set below.
-              time_stamp, touch_data->pointer_details, event.flags());
-      touch_event->set_location_f(touch_data->location->relative_location);
-      touch_event->set_root_location_f(touch_data->location->root_location);
+              touch_data->location->relative_location,
+              touch_data->location->root_location, time_stamp,
+              touch_data->pointer_details, event.flags());
       touch_event->set_may_cause_scrolling(touch_data->may_cause_scrolling);
       touch_event->set_hovering(touch_data->hovering);
       *out = std::move(touch_event);
diff --git a/ui/events/mojo/struct_traits_unittest.cc b/ui/events/mojo/struct_traits_unittest.cc
index 004a3b0..acc3f21 100644
--- a/ui/events/mojo/struct_traits_unittest.cc
+++ b/ui/events/mojo/struct_traits_unittest.cc
@@ -194,22 +194,30 @@
 }
 
 TEST(StructTraitsTest, FloatingPointLocations) {
-  MouseEvent input_event(
-      ET_MOUSE_PRESSED, gfx::Point(10, 10), gfx::Point(20, 30),
-      base::TimeTicks() + base::TimeDelta::FromMicroseconds(201), EF_NONE, 0,
-      PointerDetails(EventPointerType::POINTER_TYPE_MOUSE,
-                     MouseEvent::kMousePointerId));
+  // Create some events with non-integer locations.
+  const gfx::PointF location(11.1, 22.2);
+  const gfx::PointF root_location(33.3, 44.4);
+  const base::TimeTicks time_stamp = base::TimeTicks::Now();
+  MouseEvent mouse_event(ET_MOUSE_PRESSED, location, root_location, time_stamp,
+                         EF_NONE, EF_NONE);
+  MouseWheelEvent wheel_event(gfx::Vector2d(1, 0), location, root_location,
+                              time_stamp, EF_NONE, EF_NONE);
+  ScrollEvent scroll_event(ET_SCROLL, location, root_location, time_stamp,
+                           EF_NONE, 1, 2, 3, 4, 5);
+  TouchEvent touch_event(ET_TOUCH_PRESSED, location, root_location, time_stamp,
+                         {}, EF_NONE);
+  Event* test_data[] = {&mouse_event, &wheel_event, &scroll_event,
+                        &touch_event};
 
-  input_event.set_location_f(gfx::PointF(10.1, 10.2));
-  input_event.set_root_location_f(gfx::PointF(20.2, 30.3));
-
-  std::unique_ptr<Event> expected_copy = Event::Clone(input_event);
-  std::unique_ptr<Event> output;
-  ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(&expected_copy,
-                                                                &output));
-  ASSERT_TRUE(output->IsMouseEvent());
-
-  ExpectEventsEqual(input_event, *output->AsMouseEvent());
+  // Serialize and deserialize does not round or truncate the locations.
+  for (Event* event : test_data) {
+    std::unique_ptr<Event> event_copy = Event::Clone(*event);
+    std::unique_ptr<Event> output;
+    ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(&event_copy,
+                                                                  &output));
+    EXPECT_EQ(location, output->AsLocatedEvent()->location_f());
+    EXPECT_EQ(root_location, output->AsLocatedEvent()->root_location_f());
+  }
 }
 
 TEST(StructTraitsTest, KeyEventPropertiesSerialized) {
diff --git a/ui/gfx/animation/animation.cc b/ui/gfx/animation/animation.cc
index c651217..6adb7d8 100644
--- a/ui/gfx/animation/animation.cc
+++ b/ui/gfx/animation/animation.cc
@@ -4,6 +4,7 @@
 
 #include "ui/gfx/animation/animation.h"
 
+#include "base/message_loop/message_loop.h"
 #include "build/build_config.h"
 #include "ui/gfx/animation/animation_container.h"
 #include "ui/gfx/animation/animation_delegate.h"
@@ -16,6 +17,9 @@
 Animation::RichAnimationRenderMode Animation::rich_animation_rendering_mode_ =
     RichAnimationRenderMode::PLATFORM;
 
+// static
+base::Optional<bool> Animation::prefers_reduced_motion_;
+
 Animation::Animation(base::TimeDelta timer_interval)
     : timer_interval_(timer_interval),
       is_animating_(false),
@@ -107,20 +111,31 @@
 }
 #endif
 
-#if !defined(OS_WIN) && !defined(OS_MACOSX)
+#if !defined(OS_WIN) && (!defined(OS_MACOSX) || defined(OS_IOS))
 // static
 bool Animation::ScrollAnimationsEnabledBySystem() {
   // Defined in platform specific files for Windows and OSX.
   return true;
 }
 
-bool Animation::PrefersReducedMotion() {
+// static
+void Animation::UpdatePrefersReducedMotion() {
+  // prefers_reduced_motion_ should only be modified on the UI thread.
+  // TODO(crbug.com/927163): DCHECK this assertion once tests are well-behaved.
+
   // By default, we assume that animations are enabled, to avoid impacting the
   // experience for users on systems that don't have APIs for reduced motion.
-  return false;
+  prefers_reduced_motion_ = false;
 }
 #endif
 
+// static
+bool Animation::PrefersReducedMotion() {
+  if (!prefers_reduced_motion_)
+    UpdatePrefersReducedMotion();
+  return *prefers_reduced_motion_;
+}
+
 bool Animation::ShouldSendCanceledFromStop() {
   return false;
 }
diff --git a/ui/gfx/animation/animation.h b/ui/gfx/animation/animation.h
index c2062a1..cc57f1f 100644
--- a/ui/gfx/animation/animation.h
+++ b/ui/gfx/animation/animation.h
@@ -8,6 +8,7 @@
 #include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/optional.h"
 #include "base/time/time.h"
 #include "ui/gfx/animation/animation_container_element.h"
 #include "ui/gfx/animation/animation_export.h"
@@ -80,8 +81,9 @@
   static bool ScrollAnimationsEnabledBySystem();
 
   // Determines whether the user desires reduced motion based on platform APIs.
-  // Should only be called from the browser process.
+  // Should only be called from the browser process, on the UI thread.
   static bool PrefersReducedMotion();
+  static void UpdatePrefersReducedMotion();
 
  protected:
   // Invoked from Start to allow subclasses to prepare for the animation.
@@ -128,6 +130,10 @@
   // Time we started at.
   base::TimeTicks start_time_;
 
+  // Obtaining the PrefersReducedMotion system setting can be expensive, so it
+  // is cached in this boolean.
+  static base::Optional<bool> prefers_reduced_motion_;
+
   DISALLOW_COPY_AND_ASSIGN(Animation);
 };
 
diff --git a/ui/gfx/animation/animation_mac.mm b/ui/gfx/animation/animation_mac.mm
index 814c406..21a5672 100644
--- a/ui/gfx/animation/animation_mac.mm
+++ b/ui/gfx/animation/animation_mac.mm
@@ -33,21 +33,18 @@
 }
 
 // static
-bool Animation::PrefersReducedMotion() {
-  // Because of sandboxing, OS settings should only be queried from the browser
-  // process.
-  DCHECK(base::MessageLoopCurrentForUI::IsSet() ||
-         base::MessageLoopCurrentForIO::IsSet());
+void Animation::UpdatePrefersReducedMotion() {
+  // prefers_reduced_motion_ should only be modified on the UI thread.
+  // TODO(crbug.com/927163): DCHECK this assertion once tests are well-behaved.
 
   // We default to assuming that animations are enabled, to avoid impacting the
   // experience for users on pre-10.12 systems.
-  bool prefers_reduced_motion = false;
+  prefers_reduced_motion_ = false;
   SEL sel = @selector(accessibilityDisplayShouldReduceMotion);
   if ([[NSWorkspace sharedWorkspace] respondsToSelector:sel]) {
-    prefers_reduced_motion =
+    prefers_reduced_motion_ =
         [[NSWorkspace sharedWorkspace] accessibilityDisplayShouldReduceMotion];
   }
-  return prefers_reduced_motion;
 }
 
 } // namespace gfx
diff --git a/ui/gfx/animation/animation_win.cc b/ui/gfx/animation/animation_win.cc
index d7627ad..e5f23159 100644
--- a/ui/gfx/animation/animation_win.cc
+++ b/ui/gfx/animation/animation_win.cc
@@ -6,6 +6,8 @@
 
 #include <windows.h>
 
+#include "base/message_loop/message_loop.h"
+
 namespace gfx {
 
 // static
@@ -24,12 +26,15 @@
 }
 
 // static
-bool Animation::PrefersReducedMotion() {
+void Animation::UpdatePrefersReducedMotion() {
+  // prefers_reduced_motion_ should only be modified on the UI thread.
+  // TODO(crbug.com/927163): DCHECK this assertion once tests are well-behaved.
+
   // We default to assuming that animations are enabled, to avoid impacting the
   // experience for users on systems that don't have SPI_GETCLIENTAREAANIMATION.
   BOOL win_anim_enabled = true;
   SystemParametersInfo(SPI_GETCLIENTAREAANIMATION, 0, &win_anim_enabled, 0);
-  return !win_anim_enabled;
+  prefers_reduced_motion_ = !win_anim_enabled;
 }
 
 } // namespace gfx
diff --git a/ui/gfx/color_space.cc b/ui/gfx/color_space.cc
index 93bc130..4e040de2 100644
--- a/ui/gfx/color_space.cc
+++ b/ui/gfx/color_space.cc
@@ -53,7 +53,7 @@
       range_(RangeID::FULL) {}
 
 ColorSpace::ColorSpace(PrimaryID primaries,
-                       const SkColorSpaceTransferFn& fn,
+                       const skcms_TransferFunction& fn,
                        MatrixID matrix,
                        RangeID range)
     : primaries_(primaries), matrix_(matrix), range_(range) {
@@ -65,7 +65,7 @@
                  TransferID::INVALID,
                  MatrixID::RGB,
                  RangeID::FULL) {
-  SkColorSpaceTransferFn fn;
+  skcms_TransferFunction fn;
   skcms_Matrix3x3 to_XYZD50;
   if (!sk_color_space.isNumericalTransferFn(&fn) ||
       !sk_color_space.toXYZD50(&to_XYZD50)) {
@@ -83,7 +83,7 @@
 
 // static
 ColorSpace ColorSpace::CreateCustom(const skcms_Matrix3x3& to_XYZD50,
-                                    const SkColorSpaceTransferFn& fn) {
+                                    const skcms_TransferFunction& fn) {
   ColorSpace result(ColorSpace::PrimaryID::CUSTOM,
                     ColorSpace::TransferID::CUSTOM, ColorSpace::MatrixID::RGB,
                     ColorSpace::RangeID::FULL);
@@ -123,7 +123,7 @@
   primaries_ = PrimaryID::CUSTOM;
 }
 
-void ColorSpace::SetCustomTransferFunction(const SkColorSpaceTransferFn& fn) {
+void ColorSpace::SetCustomTransferFunction(const skcms_TransferFunction& fn) {
   // These are all TransferIDs that will return a transfer function from
   // GetTransferFunction. When multiple ids map to the same function, this list
   // prioritizes the most common name (eg IEC61966_2_1).
@@ -135,21 +135,21 @@
       TransferID::SMPTEST428_1,
   };
   for (TransferID id : kIDsToCheck) {
-    SkColorSpaceTransferFn id_fn;
+    skcms_TransferFunction id_fn;
     GetTransferFunction(id, &id_fn);
-    if (FloatsEqualWithinTolerance(&fn.fG, &id_fn.fG, 7, 0.001f)) {
+    if (FloatsEqualWithinTolerance(&fn.g, &id_fn.g, 7, 0.001f)) {
       transfer_ = id;
       return;
     }
   }
 
-  custom_transfer_params_[0] = fn.fA;
-  custom_transfer_params_[1] = fn.fB;
-  custom_transfer_params_[2] = fn.fC;
-  custom_transfer_params_[3] = fn.fD;
-  custom_transfer_params_[4] = fn.fE;
-  custom_transfer_params_[5] = fn.fF;
-  custom_transfer_params_[6] = fn.fG;
+  custom_transfer_params_[0] = fn.a;
+  custom_transfer_params_[1] = fn.b;
+  custom_transfer_params_[2] = fn.c;
+  custom_transfer_params_[3] = fn.d;
+  custom_transfer_params_[4] = fn.e;
+  custom_transfer_params_[5] = fn.f;
+  custom_transfer_params_[6] = fn.g;
   transfer_ = TransferID::CUSTOM;
 }
 
@@ -340,10 +340,10 @@
     PRINT_ENUM_CASE(TransferID, IEC61966_2_1_HDR)
     PRINT_ENUM_CASE(TransferID, LINEAR_HDR)
     case TransferID::CUSTOM: {
-      SkColorSpaceTransferFn fn;
+      skcms_TransferFunction fn;
       GetTransferFunction(&fn);
-      ss << fn.fC << "*x + " << fn.fF << " if x < " << fn.fD << " else (";
-      ss << fn.fA << "*x + " << fn.fB << ")**" << fn.fG << " + " << fn.fE;
+      ss << fn.c << "*x + " << fn.f << " if x < " << fn.d << " else (";
+      ss << fn.a << "*x + " << fn.b << ")**" << fn.g << " + " << fn.e;
       break;
     }
   }
@@ -474,7 +474,7 @@
       transfer_fn = SkNamedTransferFn::kLinear;
       break;
     default:
-      if (!GetTransferFunction((SkColorSpaceTransferFn*)&transfer_fn)) {
+      if (!GetTransferFunction(&transfer_fn)) {
         DLOG(ERROR) << "Failed to transfer function for SkColorSpace";
         return nullptr;
       }
@@ -683,38 +683,38 @@
 
 // static
 bool ColorSpace::GetTransferFunction(TransferID transfer,
-                                     SkColorSpaceTransferFn* fn) {
+                                     skcms_TransferFunction* fn) {
   // Default to F(x) = pow(x, 1)
-  fn->fA = 1;
-  fn->fB = 0;
-  fn->fC = 0;
-  fn->fD = 0;
-  fn->fE = 0;
-  fn->fF = 0;
-  fn->fG = 1;
+  fn->a = 1;
+  fn->b = 0;
+  fn->c = 0;
+  fn->d = 0;
+  fn->e = 0;
+  fn->f = 0;
+  fn->g = 1;
 
   switch (transfer) {
     case ColorSpace::TransferID::LINEAR:
     case ColorSpace::TransferID::LINEAR_HDR:
       return true;
     case ColorSpace::TransferID::GAMMA18:
-      fn->fG = 1.801f;
+      fn->g = 1.801f;
       return true;
     case ColorSpace::TransferID::GAMMA22:
-      fn->fG = 2.2f;
+      fn->g = 2.2f;
       return true;
     case ColorSpace::TransferID::GAMMA24:
-      fn->fG = 2.4f;
+      fn->g = 2.4f;
       return true;
     case ColorSpace::TransferID::GAMMA28:
-      fn->fG = 2.8f;
+      fn->g = 2.8f;
       return true;
     case ColorSpace::TransferID::SMPTE240M:
-      fn->fA = 0.899626676224f;
-      fn->fB = 0.100373323776f;
-      fn->fC = 0.250000000000f;
-      fn->fD = 0.091286342118f;
-      fn->fG = 2.222222222222f;
+      fn->a = 0.899626676224f;
+      fn->b = 0.100373323776f;
+      fn->c = 0.250000000000f;
+      fn->d = 0.091286342118f;
+      fn->g = 2.222222222222f;
       return true;
     case ColorSpace::TransferID::BT709:
     case ColorSpace::TransferID::SMPTE170M:
@@ -731,19 +731,19 @@
     // media players.
     case ColorSpace::TransferID::IEC61966_2_1:
     case ColorSpace::TransferID::IEC61966_2_1_HDR:
-      fn->fA = 0.947867345704f;
-      fn->fB = 0.052132654296f;
-      fn->fC = 0.077399380805f;
-      fn->fD = 0.040449937172f;
-      fn->fG = 2.400000000000f;
+      fn->a = 0.947867345704f;
+      fn->b = 0.052132654296f;
+      fn->c = 0.077399380805f;
+      fn->d = 0.040449937172f;
+      fn->g = 2.400000000000f;
       return true;
     case ColorSpace::TransferID::BT709_APPLE:
-      fn->fG = 1.961000000000f;
+      fn->g = 1.961000000000f;
       return true;
     case ColorSpace::TransferID::SMPTEST428_1:
-      fn->fA = 0.225615407568f;
-      fn->fE = -1.091041666667f;
-      fn->fG = 2.600000000000f;
+      fn->a = 0.225615407568f;
+      fn->e = -1.091041666667f;
+      fn->g = 2.600000000000f;
       return true;
     case ColorSpace::TransferID::IEC61966_2_4:
       // This could potentially be represented the same as IEC61966_2_1, but
@@ -763,22 +763,22 @@
   return false;
 }
 
-bool ColorSpace::GetTransferFunction(SkColorSpaceTransferFn* fn) const {
+bool ColorSpace::GetTransferFunction(skcms_TransferFunction* fn) const {
   if (transfer_ == TransferID::CUSTOM) {
-    fn->fA = custom_transfer_params_[0];
-    fn->fB = custom_transfer_params_[1];
-    fn->fC = custom_transfer_params_[2];
-    fn->fD = custom_transfer_params_[3];
-    fn->fE = custom_transfer_params_[4];
-    fn->fF = custom_transfer_params_[5];
-    fn->fG = custom_transfer_params_[6];
+    fn->a = custom_transfer_params_[0];
+    fn->b = custom_transfer_params_[1];
+    fn->c = custom_transfer_params_[2];
+    fn->d = custom_transfer_params_[3];
+    fn->e = custom_transfer_params_[4];
+    fn->f = custom_transfer_params_[5];
+    fn->g = custom_transfer_params_[6];
     return true;
   } else {
     return GetTransferFunction(transfer_, fn);
   }
 }
 
-bool ColorSpace::GetInverseTransferFunction(SkColorSpaceTransferFn* fn) const {
+bool ColorSpace::GetInverseTransferFunction(skcms_TransferFunction* fn) const {
   if (!GetTransferFunction(fn))
     return false;
   *fn = SkTransferFnInverse(*fn);
diff --git a/ui/gfx/color_space.h b/ui/gfx/color_space.h
index e3028d7b..caddff7 100644
--- a/ui/gfx/color_space.h
+++ b/ui/gfx/color_space.h
@@ -132,7 +132,7 @@
         range_(full_range) {}
 
   ColorSpace(PrimaryID primaries,
-             const SkColorSpaceTransferFn& fn,
+             const skcms_TransferFunction& fn,
              MatrixID matrix,
              RangeID full_range);
   explicit ColorSpace(const SkColorSpace& sk_color_space);
@@ -150,7 +150,7 @@
                       MatrixID::RGB, RangeID::FULL);
   }
   static ColorSpace CreateCustom(const skcms_Matrix3x3& to_XYZD50,
-                                 const SkColorSpaceTransferFn& fn);
+                                 const skcms_TransferFunction& fn);
   static constexpr ColorSpace CreateXYZD50() {
     return ColorSpace(PrimaryID::XYZ_D50, TransferID::LINEAR, MatrixID::RGB,
                       RangeID::FULL);
@@ -240,8 +240,8 @@
 
   void GetPrimaryMatrix(skcms_Matrix3x3* to_XYZD50) const;
   void GetPrimaryMatrix(SkMatrix44* to_XYZD50) const;
-  bool GetTransferFunction(SkColorSpaceTransferFn* fn) const;
-  bool GetInverseTransferFunction(SkColorSpaceTransferFn* fn) const;
+  bool GetTransferFunction(skcms_TransferFunction* fn) const;
+  bool GetInverseTransferFunction(skcms_TransferFunction* fn) const;
 
   // For most formats, this is the RGB to YUV matrix.
   void GetTransferMatrix(SkMatrix44* matrix) const;
@@ -249,13 +249,13 @@
 
  private:
   static void GetPrimaryMatrix(PrimaryID, skcms_Matrix3x3* to_XYZD50);
-  static bool GetTransferFunction(TransferID, SkColorSpaceTransferFn* fn);
+  static bool GetTransferFunction(TransferID, skcms_TransferFunction* fn);
 
-  void SetCustomTransferFunction(const SkColorSpaceTransferFn& fn);
+  void SetCustomTransferFunction(const skcms_TransferFunction& fn);
   void SetCustomPrimaries(const skcms_Matrix3x3& to_XYZD50);
 
   // Returns true if the transfer function is defined by an
-  // SkColorSpaceTransferFn which is extended to all real values.
+  // skcms_TransferFunction which is extended to all real values.
   bool HasExtendedSkTransferFn() const;
 
   PrimaryID primaries_ = PrimaryID::INVALID;
@@ -267,7 +267,7 @@
   float custom_primary_matrix_[9] = {0, 0, 0, 0, 0, 0, 0, 0};
 
   // Only used if transfer_ is TransferID::CUSTOM. This array consists of the A
-  // through G entries of the SkColorSpaceTransferFn structure in alphabetical
+  // through G entries of the skcms_TransferFunction structure in alphabetical
   // order.
   float custom_transfer_params_[7] = {0, 0, 0, 0, 0, 0, 0};
 
diff --git a/ui/gfx/color_space_unittest.cc b/ui/gfx/color_space_unittest.cc
index b2cf51e..fc2483a 100644
--- a/ui/gfx/color_space_unittest.cc
+++ b/ui/gfx/color_space_unittest.cc
@@ -108,9 +108,6 @@
   }};
   skcms_TransferFunction transfer_fn = {2.1f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f};
 
-  SkColorSpaceTransferFn sk_transfer_fn;
-  memcpy(&sk_transfer_fn, &transfer_fn, sizeof(sk_transfer_fn));
-
   ColorSpace color_spaces[kNumTests] = {
       ColorSpace(ColorSpace::PrimaryID::BT709,
                  ColorSpace::TransferID::IEC61966_2_1),
@@ -120,7 +117,7 @@
                  ColorSpace::TransferID::LINEAR),
       ColorSpace(ColorSpace::PrimaryID::BT2020,
                  ColorSpace::TransferID::IEC61966_2_1),
-      ColorSpace::CreateCustom(primary_matrix, sk_transfer_fn),
+      ColorSpace::CreateCustom(primary_matrix, transfer_fn),
   };
   sk_sp<SkColorSpace> sk_color_spaces[kNumTests] = {
       SkColorSpace::MakeSRGB(),
diff --git a/ui/gfx/color_transform.cc b/ui/gfx/color_transform.cc
index b5c1b74f..7cf67c3 100644
--- a/ui/gfx/color_transform.cc
+++ b/ui/gfx/color_transform.cc
@@ -117,7 +117,7 @@
     }
 
     default:
-      // Handled by SkColorSpaceTransferFn.
+      // Handled by skcms_TransferFunction.
       break;
   }
   NOTREACHED();
@@ -194,7 +194,7 @@
     }
 
     default:
-      // Handled by SkColorSpaceTransferFn.
+      // Handled by skcms_TransferFunction.
       break;
   }
   NOTREACHED();
@@ -415,7 +415,7 @@
 
 class ColorTransformSkTransferFn : public ColorTransformPerChannelTransferFn {
  public:
-  explicit ColorTransformSkTransferFn(const SkColorSpaceTransferFn& fn,
+  explicit ColorTransformSkTransferFn(const skcms_TransferFunction& fn,
                                       bool extended)
       : ColorTransformPerChannelTransferFn(extended), fn_(fn) {}
   // ColorTransformStep implementation.
@@ -427,13 +427,13 @@
     if (!extended_ && !next->extended_ &&
         SkTransferFnsApproximatelyCancel(fn_, next->fn_)) {
       // Set to be the identity.
-      fn_.fA = 1;
-      fn_.fB = 0;
-      fn_.fC = 1;
-      fn_.fD = 0;
-      fn_.fE = 0;
-      fn_.fF = 0;
-      fn_.fG = 1;
+      fn_.a = 1;
+      fn_.b = 0;
+      fn_.c = 1;
+      fn_.d = 0;
+      fn_.e = 0;
+      fn_.f = 0;
+      fn_.g = 1;
       return true;
     }
     return false;
@@ -453,32 +453,32 @@
     //   linear = C * x + F
     // Elide operations that will be close to the identity.
     std::string linear = "v";
-    if (std::abs(fn_.fC - 1.f) > kEpsilon)
-      linear = Str(fn_.fC) + " * " + linear;
-    if (std::abs(fn_.fF) > kEpsilon)
-      linear = linear + " + " + Str(fn_.fF);
+    if (std::abs(fn_.c - 1.f) > kEpsilon)
+      linear = Str(fn_.c) + " * " + linear;
+    if (std::abs(fn_.f) > kEpsilon)
+      linear = linear + " + " + Str(fn_.f);
 
     // Construct the nonlinear segment.
     //   nonlinear = pow(A * x + B, G) + E
     // Elide operations (especially the pow) that will be close to the
     // identity.
     std::string nonlinear = "v";
-    if (std::abs(fn_.fA - 1.f) > kEpsilon)
-      nonlinear = Str(fn_.fA) + " * " + nonlinear;
-    if (std::abs(fn_.fB) > kEpsilon)
-      nonlinear = nonlinear + " + " + Str(fn_.fB);
-    if (std::abs(fn_.fG - 1.f) > kEpsilon)
-      nonlinear = "pow(" + nonlinear + ", " + Str(fn_.fG) + ")";
-    if (std::abs(fn_.fE) > kEpsilon)
-      nonlinear = nonlinear + " + " + Str(fn_.fE);
+    if (std::abs(fn_.a - 1.f) > kEpsilon)
+      nonlinear = Str(fn_.a) + " * " + nonlinear;
+    if (std::abs(fn_.b) > kEpsilon)
+      nonlinear = nonlinear + " + " + Str(fn_.b);
+    if (std::abs(fn_.g - 1.f) > kEpsilon)
+      nonlinear = "pow(" + nonlinear + ", " + Str(fn_.g) + ")";
+    if (std::abs(fn_.e) > kEpsilon)
+      nonlinear = nonlinear + " + " + Str(fn_.e);
 
-    *result << "  if (v < " << Str(fn_.fD) << ")" << endl;
+    *result << "  if (v < " << Str(fn_.d) << ")" << endl;
     *result << "    return " << linear << ";" << endl;
     *result << "  return " << nonlinear << ";" << endl;
   }
 
  private:
-  SkColorSpaceTransferFn fn_;
+  skcms_TransferFunction fn_;
 };
 
 class ColorTransformFromLinear : public ColorTransformPerChannelTransferFn {
@@ -851,7 +851,7 @@
   if (!dst.IsValid())
     return;
 
-  SkColorSpaceTransferFn src_to_linear_fn;
+  skcms_TransferFunction src_to_linear_fn;
   if (src.GetTransferFunction(&src_to_linear_fn)) {
     steps_.push_back(std::make_unique<ColorTransformSkTransferFn>(
         src_to_linear_fn, src.HasExtendedSkTransferFn()));
@@ -878,7 +878,7 @@
         std::make_unique<ColorTransformMatrix>(GetTransferMatrix(dst)));
   }
 
-  SkColorSpaceTransferFn dst_from_linear_fn;
+  skcms_TransferFunction dst_from_linear_fn;
   if (dst.GetInverseTransferFunction(&dst_from_linear_fn)) {
     steps_.push_back(std::make_unique<ColorTransformSkTransferFn>(
         dst_from_linear_fn, dst.HasExtendedSkTransferFn()));
diff --git a/ui/gfx/color_transform_unittest.cc b/ui/gfx/color_transform_unittest.cc
index 8a1c396..76a1d97 100644
--- a/ui/gfx/color_transform_unittest.cc
+++ b/ui/gfx/color_transform_unittest.cc
@@ -431,10 +431,10 @@
   skcms_Matrix3x3 primaries;
   gfx::ColorSpace::CreateSRGB().GetPrimaryMatrix(&primaries);
 
-  SkColorSpaceTransferFn fn_no_pow = {
+  skcms_TransferFunction fn_no_pow = {
       1.f, 2.f, 0.f, 1.f, 0.f, 0.f, 0.f,
   };
-  SkColorSpaceTransferFn fn_yes_pow = {
+  skcms_TransferFunction fn_yes_pow = {
       2.f, 2.f, 0.f, 1.f, 0.f, 0.f, 0.f,
   };
   gfx::ColorSpace src;
diff --git a/ui/gfx/icc_profile.cc b/ui/gfx/icc_profile.cc
index 6d9f7c5..7e11616 100644
--- a/ui/gfx/icc_profile.cc
+++ b/ui/gfx/icc_profile.cc
@@ -98,7 +98,7 @@
 
   // Extract the primary matrix and transfer function
   to_XYZD50_ = profile.toXYZD50;
-  memcpy(&transfer_fn_, &profile.trc[0].parametric, sizeof(transfer_fn_));
+  transfer_fn_ = profile.trc[0].parametric;
 
   // We assume that if we accurately approximated the profile, then the
   // single-curve version (which may have higher error) is also okay. If we
@@ -206,14 +206,14 @@
     return ICCProfile();
   }
 
-  SkMatrix44 to_XYZD50_matrix;
+  skcms_Matrix3x3 to_XYZD50_matrix;
   color_space.GetPrimaryMatrix(&to_XYZD50_matrix);
-  SkColorSpaceTransferFn fn;
+  skcms_TransferFunction fn;
   if (!color_space.GetTransferFunction(&fn)) {
     DLOG(ERROR) << "Failed to get ColorSpace transfer function for ICCProfile.";
     return ICCProfile();
   }
-  sk_sp<SkData> data = SkICC::WriteToICC(fn, to_XYZD50_matrix);
+  sk_sp<SkData> data = SkWriteICCProfile(fn, to_XYZD50_matrix);
   if (!data) {
     DLOG(ERROR) << "Failed to create SkICC.";
     return ICCProfile();
diff --git a/ui/gfx/icc_profile.h b/ui/gfx/icc_profile.h
index 027c8f2e..cd97401 100644
--- a/ui/gfx/icc_profile.h
+++ b/ui/gfx/icc_profile.h
@@ -104,7 +104,7 @@
 
     // The best-fit parametric primaries and transfer function.
     skcms_Matrix3x3 to_XYZD50_;
-    SkColorSpaceTransferFn transfer_fn_;
+    skcms_TransferFunction transfer_fn_;
 
     // The set of display ids which have have caused this ICC profile to be
     // recorded in UMA histograms. Only record an ICC profile once per display
diff --git a/ui/gfx/skia_color_space_util.cc b/ui/gfx/skia_color_space_util.cc
index 8f7b6f1d..a415c031 100644
--- a/ui/gfx/skia_color_space_util.cc
+++ b/ui/gfx/skia_color_space_util.cc
@@ -12,36 +12,36 @@
 
 namespace gfx {
 
-float SkTransferFnEvalUnclamped(const SkColorSpaceTransferFn& fn, float x) {
-  if (x < fn.fD)
-    return fn.fC * x + fn.fF;
-  return std::pow(fn.fA * x + fn.fB, fn.fG) + fn.fE;
+float SkTransferFnEvalUnclamped(const skcms_TransferFunction& fn, float x) {
+  if (x < fn.d)
+    return fn.c * x + fn.f;
+  return std::pow(fn.a * x + fn.b, fn.g) + fn.e;
 }
 
-float SkTransferFnEval(const SkColorSpaceTransferFn& fn, float x) {
+float SkTransferFnEval(const skcms_TransferFunction& fn, float x) {
   float fn_at_x_unclamped = SkTransferFnEvalUnclamped(fn, x);
   return std::min(std::max(fn_at_x_unclamped, 0.f), 1.f);
 }
 
-SkColorSpaceTransferFn SkTransferFnInverse(const SkColorSpaceTransferFn& fn) {
-  SkColorSpaceTransferFn fn_inv = {0};
-  if (fn.fA > 0 && fn.fG > 0) {
-    double a_to_the_g = std::pow(fn.fA, fn.fG);
-    fn_inv.fA = 1.f / a_to_the_g;
-    fn_inv.fB = -fn.fE / a_to_the_g;
-    fn_inv.fG = 1.f / fn.fG;
+skcms_TransferFunction SkTransferFnInverse(const skcms_TransferFunction& fn) {
+  skcms_TransferFunction fn_inv = {0};
+  if (fn.a > 0 && fn.g > 0) {
+    double a_to_the_g = std::pow(fn.a, fn.g);
+    fn_inv.a = 1.f / a_to_the_g;
+    fn_inv.b = -fn.e / a_to_the_g;
+    fn_inv.g = 1.f / fn.g;
   }
-  fn_inv.fD = fn.fC * fn.fD + fn.fF;
-  fn_inv.fE = -fn.fB / fn.fA;
-  if (fn.fC != 0) {
-    fn_inv.fC = 1.f / fn.fC;
-    fn_inv.fF = -fn.fF / fn.fC;
+  fn_inv.d = fn.c * fn.d + fn.f;
+  fn_inv.e = -fn.b / fn.a;
+  if (fn.c != 0) {
+    fn_inv.c = 1.f / fn.c;
+    fn_inv.f = -fn.f / fn.c;
   }
   return fn_inv;
 }
 
-bool SkTransferFnsApproximatelyCancel(const SkColorSpaceTransferFn& a,
-                                      const SkColorSpaceTransferFn& b) {
+bool SkTransferFnsApproximatelyCancel(const skcms_TransferFunction& a,
+                                      const skcms_TransferFunction& b) {
   const float kStep = 1.f / 8.f;
   const float kEpsilon = 2.5f / 256.f;
   for (float x = 0; x <= 1.f; x += kStep) {
@@ -53,7 +53,7 @@
   return true;
 }
 
-bool SkTransferFnIsApproximatelyIdentity(const SkColorSpaceTransferFn& a) {
+bool SkTransferFnIsApproximatelyIdentity(const skcms_TransferFunction& a) {
   const float kStep = 1.f / 8.f;
   const float kEpsilon = 2.5f / 256.f;
   for (float x = 0; x <= 1.f; x += kStep) {
diff --git a/ui/gfx/skia_color_space_util.h b/ui/gfx/skia_color_space_util.h
index bec9a2f..77fed89 100644
--- a/ui/gfx/skia_color_space_util.h
+++ b/ui/gfx/skia_color_space_util.h
@@ -13,23 +13,23 @@
 
 // Return the parameterized function in |fn|, evaluated at |x|. Note that this
 // will clamp output values to the range [0, 1].
-float COLOR_SPACE_EXPORT SkTransferFnEval(const SkColorSpaceTransferFn& fn,
+float COLOR_SPACE_EXPORT SkTransferFnEval(const skcms_TransferFunction& fn,
                                           float x);
 
 // Return the parameterized function in |fn|, evaluated at |x|. This will not
 // clamp output values.
 float COLOR_SPACE_EXPORT
-SkTransferFnEvalUnclamped(const SkColorSpaceTransferFn& fn, float x);
+SkTransferFnEvalUnclamped(const skcms_TransferFunction& fn, float x);
 
-SkColorSpaceTransferFn COLOR_SPACE_EXPORT
-SkTransferFnInverse(const SkColorSpaceTransferFn& fn);
+skcms_TransferFunction COLOR_SPACE_EXPORT
+SkTransferFnInverse(const skcms_TransferFunction& fn);
 
 bool COLOR_SPACE_EXPORT
-SkTransferFnsApproximatelyCancel(const SkColorSpaceTransferFn& a,
-                                 const SkColorSpaceTransferFn& b);
+SkTransferFnsApproximatelyCancel(const skcms_TransferFunction& a,
+                                 const skcms_TransferFunction& b);
 
 bool COLOR_SPACE_EXPORT
-SkTransferFnIsApproximatelyIdentity(const SkColorSpaceTransferFn& fn);
+SkTransferFnIsApproximatelyIdentity(const skcms_TransferFunction& fn);
 
 bool COLOR_SPACE_EXPORT SkMatrixIsApproximatelyIdentity(const SkMatrix44& m);
 
diff --git a/ui/gl/gl_context.cc b/ui/gl/gl_context.cc
index af8acbff..2035ad0 100644
--- a/ui/gl/gl_context.cc
+++ b/ui/gl/gl_context.cc
@@ -63,7 +63,6 @@
   share_group_->RemoveContext(this);
   if (GetCurrent() == this) {
     SetCurrent(nullptr);
-    SetCurrentGL(nullptr);
   }
   base::subtle::Atomic32 after_value =
       base::subtle::NoBarrier_AtomicIncrement(&total_gl_contexts_, -1);
@@ -192,6 +191,22 @@
   current_virtual_context_ = nullptr;
 }
 
+void GLContext::AddVirtualOwner(GLContext* owner) {
+  DCHECK(virtual_owners_.find(owner) == virtual_owners_.end());
+  virtual_owners_.insert(owner);
+}
+
+void GLContext::RemoveVirtualOwner(GLContext* owner) {
+  auto found = virtual_owners_.find(owner);
+  DCHECK(found != virtual_owners_.end());
+  virtual_owners_.erase(found);
+
+  // Also remove the owner from |current_virtual_context_|, to avoid leaving a
+  // bad pointer.
+  if (current_virtual_context_ == owner)
+    current_virtual_context_ = nullptr;
+}
+
 #if defined(OS_MACOSX)
 uint64_t GLContext::BackpressureFenceCreate() {
   return 0;
@@ -248,6 +263,11 @@
   return current_real_context_.Pointer()->Get();
 }
 
+bool GLContext::IsLastVirtualOwner(GLContext* context) {
+  DCHECK(virtual_owners_.find(context) != virtual_owners_.end());
+  return virtual_owners_.size() == 1;
+}
+
 std::unique_ptr<gl::GLVersionInfo> GLContext::GenerateGLVersionInfo() {
   return std::make_unique<GLVersionInfo>(
       GetGLVersion().c_str(), GetGLRenderer().c_str(), GetExtensions());
@@ -308,6 +328,7 @@
 
 bool GLContext::MakeVirtuallyCurrent(
     GLContext* virtual_context, GLSurface* surface) {
+  DCHECK(virtual_owners_.find(virtual_context) != virtual_owners_.end());
   if (!ForceGpuSwitchIfNeeded())
     return false;
   bool switched_real_contexts = GLContext::GetRealCurrent() != this;
@@ -365,8 +386,15 @@
 }
 
 void GLContext::OnReleaseVirtuallyCurrent(GLContext* virtual_context) {
+  DCHECK(virtual_owners_.find(virtual_context) != virtual_owners_.end());
   if (current_virtual_context_ == virtual_context)
     current_virtual_context_ = nullptr;
+
+  if (GetCurrent() == virtual_context) {
+    // The virtual context is being released, and should no longer be current.
+    // Transfer ownership to the real context (this).
+    current_context_.Pointer()->Set(this);
+  }
 }
 
 void GLContext::BindGLApi() {
diff --git a/ui/gl/gl_context.h b/ui/gl/gl_context.h
index e166824..6c046bd5 100644
--- a/ui/gl/gl_context.h
+++ b/ui/gl/gl_context.h
@@ -199,6 +199,11 @@
   // context is made current.
   void DirtyVirtualContextState();
 
+  // Notifies this class of a new virtual GLContext owner.
+  void AddVirtualOwner(GLContext* owner);
+  // Removes a virtual GLContext owner.
+  void RemoveVirtualOwner(GLContext* owner);
+
 #if defined(OS_MACOSX)
   // Create a fence for all work submitted to this context so far, and return a
   // monotonically increasing handle to it. This returned handle never needs to
@@ -247,6 +252,10 @@
 
   GLApi* gl_api() { return gl_api_.get(); }
 
+  // Returns true if the provided |context| is the only remaining virtual owner
+  // of this context.
+  bool IsLastVirtualOwner(GLContext* context);
+
  private:
   friend class base::RefCounted<GLContext>;
 
@@ -281,6 +290,8 @@
   std::unique_ptr<GLStateRestorer> state_restorer_;
   std::unique_ptr<GLVersionInfo> version_info_;
 
+  base::flat_set<GLContext*> virtual_owners_;
+
   DISALLOW_COPY_AND_ASSIGN(GLContext);
 };
 
diff --git a/ui/gl/gl_context_stub.cc b/ui/gl/gl_context_stub.cc
index d4646ca..22981c3e 100644
--- a/ui/gl/gl_context_stub.cc
+++ b/ui/gl/gl_context_stub.cc
@@ -30,6 +30,9 @@
 }
 
 void GLContextStub::ReleaseCurrent(GLSurface* surface) {
+  if (!IsCurrent(surface))
+    return;
+
   SetCurrent(nullptr);
 }
 
diff --git a/ui/ozone/platform/drm/BUILD.gn b/ui/ozone/platform/drm/BUILD.gn
index 5af8744..82bb136 100644
--- a/ui/ozone/platform/drm/BUILD.gn
+++ b/ui/ozone/platform/drm/BUILD.gn
@@ -125,6 +125,7 @@
     "//ipc",
     "//mojo/public/cpp/system",
     "//services/service_manager/public/cpp",
+    "//services/viz/public/interfaces:constants",
     "//services/ws/public/mojom:constants",
     "//skia",
     "//third_party/libsync",
diff --git a/ui/ozone/platform/drm/DEPS b/ui/ozone/platform/drm/DEPS
index 1a3b330..6eafbc9 100644
--- a/ui/ozone/platform/drm/DEPS
+++ b/ui/ozone/platform/drm/DEPS
@@ -1,7 +1,8 @@
 include_rules = [
   "+mojo/public",
   "+services/service_manager",
-  "+services/ws",
+  "+services/viz/public/interfaces",
+  "+services/ws/public/mojom",
   "+ui/base/buildflags.h",  # Doesn't bring in all of ui/base.
   "+ui/base/ui_base_features.h",
   "+ui/base/ui_base_switches.h",
diff --git a/ui/ozone/platform/drm/common/drm_util.cc b/ui/ozone/platform/drm/common/drm_util.cc
index 7af691f..76a6caf 100644
--- a/ui/ozone/platform/drm/common/drm_util.cc
+++ b/ui/ozone/platform/drm/common/drm_util.cc
@@ -680,7 +680,7 @@
     return gfx::ColorSpace();
   }
 
-  SkColorSpaceTransferFn transfer = {gamma, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f};
+  skcms_TransferFunction transfer = {gamma, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f};
   EmitEdidColorSpaceChecksOutcomeUma(EdidColorSpaceChecksOutcome::kSuccess);
   return gfx::ColorSpace::CreateCustom(color_space_as_matrix, transfer);
 }
diff --git a/ui/ozone/platform/drm/common/drm_util_unittest.cc b/ui/ozone/platform/drm/common/drm_util_unittest.cc
index 43c4b3b..dd46b9f 100644
--- a/ui/ozone/platform/drm/common/drm_util_unittest.cc
+++ b/ui/ozone/platform/drm/common/drm_util_unittest.cc
@@ -329,7 +329,7 @@
   const gfx::ColorSpace expected_hpz32x_color_space =
       gfx::ColorSpace::CreateCustom(
           expected_hpz32x_toXYZ50_matrix,
-          SkColorSpaceTransferFn({2.2, 1, 0, 0, 0, 0, 0}));
+          skcms_TransferFunction({2.2, 1, 0, 0, 0, 0, 0}));
   EXPECT_EQ(expected_hpz32x_color_space.ToString(),
             GetColorSpaceFromEdid(display::EdidParser(hpz32x_edid)).ToString());
   histogram_tester.ExpectBucketCount(
@@ -354,7 +354,7 @@
   const gfx::ColorSpace expected_samus_color_space =
       gfx::ColorSpace::CreateCustom(
           expected_samus_toXYZ50_matrix,
-          SkColorSpaceTransferFn({2.5, 1, 0, 0, 0, 0, 0}));
+          skcms_TransferFunction({2.5, 1, 0, 0, 0, 0, 0}));
   EXPECT_EQ(expected_samus_color_space.ToString(),
             GetColorSpaceFromEdid(display::EdidParser(samus_edid)).ToString());
   histogram_tester.ExpectBucketCount(
@@ -378,7 +378,7 @@
   const gfx::ColorSpace expected_eve_color_space =
       gfx::ColorSpace::CreateCustom(
           expected_eve_toXYZ50_matrix,
-          SkColorSpaceTransferFn({2.2, 1, 0, 0, 0, 0, 0}));
+          skcms_TransferFunction({2.2, 1, 0, 0, 0, 0, 0}));
   EXPECT_EQ(expected_eve_color_space.ToString(),
             GetColorSpaceFromEdid(display::EdidParser(eve_edid)).ToString());
   histogram_tester.ExpectBucketCount(
diff --git a/ui/ozone/platform/drm/host/drm_device_connector.cc b/ui/ozone/platform/drm/host/drm_device_connector.cc
index dc8d183..2da65e7 100644
--- a/ui/ozone/platform/drm/host/drm_device_connector.cc
+++ b/ui/ozone/platform/drm/host/drm_device_connector.cc
@@ -8,8 +8,6 @@
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "mojo/public/cpp/system/message_pipe.h"
 #include "services/service_manager/public/cpp/connector.h"
-#include "services/ws/public/mojom/constants.mojom.h"
-#include "ui/base/ui_base_features.h"
 #include "ui/ozone/platform/drm/host/host_drm_device.h"
 #include "ui/ozone/public/gpu_platform_support_host.h"
 
@@ -37,15 +35,16 @@
 
 DrmDeviceConnector::DrmDeviceConnector(
     service_manager::Connector* connector,
-    scoped_refptr<HostDrmDevice> host_drm_device_)
+    const std::string& service_name,
+    scoped_refptr<HostDrmDevice> host_drm_device)
     : connector_(connector),
-      host_drm_device_(host_drm_device_),
+      service_name_(service_name),
+      host_drm_device_(host_drm_device),
       ws_runner_(base::ThreadTaskRunnerHandle::IsSet()
                      ? base::ThreadTaskRunnerHandle::Get()
-                     : nullptr) {
-}
+                     : nullptr) {}
 
-DrmDeviceConnector::~DrmDeviceConnector() {}
+DrmDeviceConnector::~DrmDeviceConnector() = default;
 
 void DrmDeviceConnector::OnGpuProcessLaunched(
     int host_id,
@@ -115,7 +114,7 @@
 void DrmDeviceConnector::BindInterfaceDrmDevice(
     ui::ozone::mojom::DrmDevicePtr* drm_device_ptr) const {
   if (connector_) {
-    connector_->BindInterface(ws::mojom::kServiceName, drm_device_ptr);
+    connector_->BindInterface(service_name_, drm_device_ptr);
   } else {
     auto request = mojo::MakeRequest(drm_device_ptr);
     BindInterfaceInGpuProcess(std::move(request), binder_callback_);
@@ -125,7 +124,7 @@
 void DrmDeviceConnector::BindInterfaceDeviceCursor(
     ui::ozone::mojom::DeviceCursorPtr* cursor_ptr) const {
   if (connector_) {
-    connector_->BindInterface(ws::mojom::kServiceName, cursor_ptr);
+    connector_->BindInterface(service_name_, cursor_ptr);
   } else {
     auto request = mojo::MakeRequest(cursor_ptr);
     BindInterfaceInGpuProcess(std::move(request), binder_callback_);
diff --git a/ui/ozone/platform/drm/host/drm_device_connector.h b/ui/ozone/platform/drm/host/drm_device_connector.h
index 9c2f5d9..2c9efb3 100644
--- a/ui/ozone/platform/drm/host/drm_device_connector.h
+++ b/ui/ozone/platform/drm/host/drm_device_connector.h
@@ -5,6 +5,8 @@
 #ifndef UI_OZONE_PLATFORM_DRM_HOST_DRM_DEVICE_CONNECTOR_H_
 #define UI_OZONE_PLATFORM_DRM_HOST_DRM_DEVICE_CONNECTOR_H_
 
+#include <string>
+
 #include "base/single_thread_task_runner.h"
 #include "ui/ozone/public/gpu_platform_support_host.h"
 #include "ui/ozone/public/interfaces/device_cursor.mojom.h"
@@ -24,7 +26,8 @@
 class DrmDeviceConnector : public GpuPlatformSupportHost {
  public:
   DrmDeviceConnector(service_manager::Connector* connector,
-                     scoped_refptr<HostDrmDevice> host_drm_device_);
+                     const std::string& service_name,
+                     scoped_refptr<HostDrmDevice> host_drm_device);
   ~DrmDeviceConnector() override;
 
   // GpuPlatformSupportHost:
@@ -60,6 +63,9 @@
   // This will be present if the Viz host has a service manager.
   service_manager::Connector* const connector_;
 
+  // Name of the service that provides DRM mojo interfaces.
+  const std::string service_name_;
+
   // This will be used if we are operating under content/gpu without a service
   // manager.
   GpuHostBindInterfaceCallback binder_callback_;
diff --git a/ui/ozone/platform/drm/ozone_platform_gbm.cc b/ui/ozone/platform/drm/ozone_platform_gbm.cc
index e0e2c30e..339aef4 100644
--- a/ui/ozone/platform/drm/ozone_platform_gbm.cc
+++ b/ui/ozone/platform/drm/ozone_platform_gbm.cc
@@ -18,6 +18,8 @@
 #include "base/threading/platform_thread.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "services/service_manager/public/cpp/binder_registry.h"
+#include "services/viz/public/interfaces/constants.mojom.h"
+#include "services/ws/public/mojom/constants.mojom.h"
 #include "ui/base/buildflags.h"
 #include "ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h"
 #include "ui/events/ozone/device/device_manager.h"
@@ -222,9 +224,12 @@
     GpuThreadAdapter* adapter;
 
     if (using_mojo_) {
+      const std::string& service_name = single_process_
+                                            ? ws::mojom::kServiceName
+                                            : viz::mojom::kVizServiceName;
       host_drm_device_ = base::MakeRefCounted<HostDrmDevice>(cursor_.get());
       drm_device_connector_ = std::make_unique<DrmDeviceConnector>(
-          args.connector, host_drm_device_);
+          args.connector, service_name, host_drm_device_);
       adapter = host_drm_device_.get();
     } else {
       gpu_platform_support_host_.reset(