diff --git a/DEPS b/DEPS
index b380285..fcca274 100644
--- a/DEPS
+++ b/DEPS
@@ -105,11 +105,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': '3655e4059e1f5be18db3fed65d1b885b697a948b',
+  'skia_revision': '681692726fc0735131226caeab9de2cd8e8b1af4',
   # 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': 'f70aaa8ab2e8815505a6145c745e50d8328cd28c',
+  'v8_revision': 'e99cee81c58a61c4ecfee4033af99f78fa371145',
   # 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.
@@ -129,7 +129,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '29b708e7af32de30d946b4bb609b390187987cb5',
+  'pdfium_revision': '4f5ccaaecd7e524e98b79af6823a9ab6a8753d7f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
@@ -165,7 +165,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': '1de6f5099019078c22b5d7c679a49abe18adb509',
+  'catapult_revision': '5aac72d05c7ed1238c420660d0786d98da9d73da',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -323,7 +323,7 @@
   },
 
   'src/ios/third_party/material_components_ios/src': {
-      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '2ccd8f24cd0218f6ef55f10f3d18d9b1fb74d31b',
+      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '3544e402994d4fe5100e0ae2cdb6a13fb6b4c514',
       'condition': 'checkout_ios',
   },
 
@@ -605,7 +605,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '71d77c0e68d4a1b27143079a0913172dec3134e8',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'a56b72d4cdcbd432c2516e07ea62677d49b772a0',
       'condition': 'checkout_linux',
   },
 
@@ -630,7 +630,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '94faf3281c6a09958f685322a8c5e67daeb90fcf',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'dd78844442fef7e3613f6896dbe325cffb495a66',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -1142,7 +1142,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@2f0e716fa7b9154293b50c5efbe50caf666f6967',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@2b20c6f0282df2716734db58cce2eee7febfc6d6',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/SplitApkWorkaround.java b/android_webview/glue/java/src/com/android/webview/chromium/SplitApkWorkaround.java
index 3444463..11cf6fab 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/SplitApkWorkaround.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/SplitApkWorkaround.java
@@ -29,12 +29,12 @@
      * This function runs in the WebView zygote, which cannot make any binder calls to the framework
      * and is a very restricted environment.
      *
-     * @param dryRun If true, don't actually change any state in the framework; just verify that
+     * @param realRun If false, don't actually change any state in the framework; just verify that
      *               the reflection succeeds.
      * @return a value from Result describing what happened.
      */
     @SuppressWarnings("unchecked")
-    public static @SplitApkWorkaroundResult int apply(boolean dryRun) {
+    public static @SplitApkWorkaroundResult int apply(boolean realRun) {
         int matchingEntries = 0;
         int exceptionEntries = 0;
         try {
@@ -97,7 +97,7 @@
                             }
 
                             matchingEntries++;
-                            if (!dryRun) {
+                            if (realRun) {
                                 // Add a new entry to the cache which maps the new, correct key to
                                 // the same classloader object. We do not remove the previous entry
                                 // from the cache, in case something attempts to look it up by the
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
index 20dd634..3168066 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -37,6 +37,7 @@
 import org.chromium.android_webview.WebViewChromiumRunQueue;
 import org.chromium.android_webview.command_line.CommandLineUtil;
 import org.chromium.base.BuildInfo;
+import org.chromium.base.BundleUtils;
 import org.chromium.base.CommandLine;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
@@ -367,11 +368,12 @@
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
                 && Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
             // If we're on O, where the split APK handling bug exists, then go through the motions
-            // of applying the workaround - don't actually change anything, but do the reflection
-            // to check for compatibility issues. The result will be logged to UMA later, because
-            // we can't do very much in the restricted environment of the WebView zygote process.
+            // of applying the workaround - don't actually change anything if Chrome is an APK (as
+            // opposed to an app bundle), but do the reflection to check for compatibility issues.
+            // The result will be logged to UMA later, because we can't do very much in the
+            // restricted environment of the WebView zygote process.
             ChildProcessService.setSplitApkWorkaroundResult(
-                    SplitApkWorkaround.apply(/* dryRun */ true));
+                    SplitApkWorkaround.apply(/* realRun */ BundleUtils.isBundle()));
         }
 
         for (String library : NativeLibraries.LIBRARIES) {
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 460a626..30f9d825 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1965,6 +1965,7 @@
     "wm/overlay_event_filter_unittest.cc",
     "wm/overlay_layout_manager_unittest.cc",
     "wm/overview/cleanup_animation_observer_unittest.cc",
+    "wm/overview/window_selector_controller_unittest.cc",
     "wm/overview/window_selector_unittest.cc",
     "wm/pip/pip_window_resizer_unittest.cc",
     "wm/resize_shadow_and_cursor_unittest.cc",
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc
index cdd00bb..cea6ddd4 100644
--- a/ash/app_list/app_list_controller_impl.cc
+++ b/ash/app_list/app_list_controller_impl.cc
@@ -715,18 +715,19 @@
 }
 
 bool AppListControllerImpl::ProcessHomeLauncherGesture(
-    ui::EventType type,
+    ui::GestureEvent* event,
     const gfx::Point& screen_location) {
   if (!home_launcher_gesture_handler_)
     return false;
 
-  switch (type) {
+  switch (event->type()) {
     case ui::ET_SCROLL_FLING_START:
     case ui::ET_GESTURE_SCROLL_BEGIN:
       return home_launcher_gesture_handler_->OnPressEvent(
           HomeLauncherGestureHandler::Mode::kSlideDownToHide, screen_location);
     case ui::ET_GESTURE_SCROLL_UPDATE:
-      return home_launcher_gesture_handler_->OnScrollEvent(screen_location);
+      return home_launcher_gesture_handler_->OnScrollEvent(
+          screen_location, event->details().scroll_y());
     case ui::ET_GESTURE_END:
       return home_launcher_gesture_handler_->OnReleaseEvent(screen_location);
     default:
diff --git a/ash/app_list/app_list_controller_impl.h b/ash/app_list/app_list_controller_impl.h
index 69cd4f2..5dea874f 100644
--- a/ash/app_list/app_list_controller_impl.h
+++ b/ash/app_list/app_list_controller_impl.h
@@ -175,7 +175,7 @@
                                int event_flags) override;
   void ShowWallpaperContextMenu(const gfx::Point& onscreen_location,
                                 ui::MenuSourceType source_type) override;
-  bool ProcessHomeLauncherGesture(ui::EventType type,
+  bool ProcessHomeLauncherGesture(ui::GestureEvent* event,
                                   const gfx::Point& screen_location) override;
   bool CanProcessEventsOnApplistViews() override;
   ws::WindowService* GetWindowService() override;
diff --git a/ash/app_list/app_list_view_delegate.h b/ash/app_list/app_list_view_delegate.h
index 6f9a248..f4d99a9 100644
--- a/ash/app_list/app_list_view_delegate.h
+++ b/ash/app_list/app_list_view_delegate.h
@@ -17,6 +17,10 @@
 #include "ui/events/event_constants.h"
 #include "ui/gfx/geometry/point.h"
 
+namespace ui {
+class GestureEvent;
+}  // namespace ui
+
 namespace ws {
 class WindowService;
 }  // namespace ws
@@ -113,7 +117,7 @@
   // Forwards events to the home launcher gesture handler and returns true if
   // they have been processed.
   virtual bool ProcessHomeLauncherGesture(
-      ui::EventType type,
+      ui::GestureEvent* event,
       const gfx::Point& screen_location) = 0;
 
   // Checks if we are allowed to process events on the app list main view and
diff --git a/ash/app_list/home_launcher_gesture_handler.cc b/ash/app_list/home_launcher_gesture_handler.cc
index f759f6d..d0f6bad 100644
--- a/ash/app_list/home_launcher_gesture_handler.cc
+++ b/ash/app_list/home_launcher_gesture_handler.cc
@@ -39,6 +39,15 @@
 constexpr base::TimeDelta kAnimationDurationMs =
     base::TimeDelta::FromMilliseconds(250);
 
+// The animation speed at which the window moves when a window is acitvated from
+// the shelf, or deacitvated via home launcher button minimize.
+constexpr base::TimeDelta kActivationChangedAnimationDurationMs =
+    base::TimeDelta::FromMilliseconds(600);
+
+// The velocity the app list or shelf must be dragged in order to transition to
+// the next state regardless of where the gesture ends, measured in DIPs/event.
+constexpr int kScrollVelocityThreshold = 6;
+
 // The width of the target of screen bounds will be the work area width times
 // this ratio.
 constexpr float kWidthRatio = 0.8f;
@@ -195,7 +204,7 @@
   if (!display_.is_valid())
     return false;
 
-  if (!SetUpWindows(mode, nullptr /* window */))
+  if (!SetUpWindows(mode, /*window=*/nullptr))
     return false;
 
   mode_ = mode;
@@ -205,11 +214,13 @@
   return true;
 }
 
-bool HomeLauncherGestureHandler::OnScrollEvent(const gfx::Point& location) {
+bool HomeLauncherGestureHandler::OnScrollEvent(const gfx::Point& location,
+                                               float scroll_y) {
   if (!IsDragInProgress())
     return false;
 
   last_event_location_ = base::make_optional(location);
+  last_scroll_y_ = scroll_y;
   DCHECK(display_.is_valid());
   UpdateWindows(GetHeightInWorkAreaAsRatio(location, display_.work_area()),
                 /*animate=*/false);
@@ -241,7 +252,7 @@
   if (!display.is_valid())
     return false;
 
-  if (!SetUpWindows(Mode::kSlideUpToShow, nullptr /* window */))
+  if (!SetUpWindows(Mode::kSlideUpToShow, /*window=*/nullptr))
     return false;
 
   display_ = display;
@@ -421,9 +432,9 @@
 void HomeLauncherGestureHandler::UpdateSettings(
     ui::ScopedLayerAnimationSettings* settings,
     bool observe) {
-  // TODO(sammiequon): The animation should change based on the distance to the
-  // end.
-  settings->SetTransitionDuration(kAnimationDurationMs);
+  settings->SetTransitionDuration(IsDragInProgress()
+                                      ? kAnimationDurationMs
+                                      : kActivationChangedAnimationDurationMs);
   settings->SetTweenType(gfx::Tween::LINEAR);
   settings->SetPreemptionStrategy(
       ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
@@ -520,6 +531,7 @@
   backdrop_values_ = base::nullopt;
   divider_values_ = base::nullopt;
   last_event_location_ = base::nullopt;
+  last_scroll_y_ = 0.f;
   mode_ = Mode::kNone;
 
   for (auto* window : hidden_windows_)
@@ -569,6 +581,13 @@
 bool HomeLauncherGestureHandler::IsFinalStateShow() {
   DCHECK_NE(Mode::kNone, mode_);
   DCHECK(display_.is_valid());
+
+  // If fling velocity is greater than the threshold, show the launcher if
+  // sliding up, or hide the launcher if sliding down, irregardless of
+  // |last_event_location_|.
+  if (std::fabs(last_scroll_y_) > kScrollVelocityThreshold)
+    return mode_ == Mode::kSlideUpToShow;
+
   return last_event_location_
              ? IsLastEventInTopHalf(*last_event_location_, display_.work_area())
              : mode_ == Mode::kSlideUpToShow;
diff --git a/ash/app_list/home_launcher_gesture_handler.h b/ash/app_list/home_launcher_gesture_handler.h
index 44cf8c47..52a99058 100644
--- a/ash/app_list/home_launcher_gesture_handler.h
+++ b/ash/app_list/home_launcher_gesture_handler.h
@@ -52,7 +52,7 @@
   // should be in screen coordinates. Returns false if the the gesture event
   // was not processed.
   bool OnPressEvent(Mode mode, const gfx::Point& location);
-  bool OnScrollEvent(const gfx::Point& location);
+  bool OnScrollEvent(const gfx::Point& location, float scroll_y);
   bool OnReleaseEvent(const gfx::Point& location);
 
   // Cancel a current drag and animates the items to their final state based on
@@ -159,6 +159,11 @@
   // if there is currently no window being processed.
   base::Optional<gfx::Point> last_event_location_;
 
+  // Tracks the last y scroll amount. On gesture end, animates to end state if
+  // |last_scroll_y_| is greater than a certain threshold, even if
+  // |last_event_location_| is in a different half.
+  float last_scroll_y_ = 0.f;
+
   ScopedObserver<TabletModeController, TabletModeObserver>
       tablet_mode_observer_{this};
 
diff --git a/ash/app_list/home_launcher_gesture_handler_unittest.cc b/ash/app_list/home_launcher_gesture_handler_unittest.cc
index e8f2e58..f9d1be3 100644
--- a/ash/app_list/home_launcher_gesture_handler_unittest.cc
+++ b/ash/app_list/home_launcher_gesture_handler_unittest.cc
@@ -96,8 +96,8 @@
   EXPECT_FALSE(window3->IsVisible());
 }
 
-TEST_F(HomeLauncherGestureHandlerTest, CancellingSwipeUp) {
-  UpdateDisplay("400x448");
+TEST_F(HomeLauncherGestureHandlerTest, CancellingSlideUp) {
+  UpdateDisplay("400x456");
 
   auto window = CreateWindowForTesting();
   ASSERT_TRUE(window->IsVisible());
@@ -105,21 +105,50 @@
   // Tests that when cancelling a scroll that was on the bottom half, the window
   // is still visible.
   GetGestureHandler()->OnPressEvent(Mode::kSlideUpToShow, gfx::Point());
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), 1.f);
   GetGestureHandler()->Cancel();
   EXPECT_TRUE(window->IsVisible());
 
   // Tests that when cancelling a scroll that was on the top half, the window is
   // now invisible.
   GetGestureHandler()->OnPressEvent(Mode::kSlideUpToShow, gfx::Point());
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 100));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 100), 1.f);
   GetGestureHandler()->Cancel();
   EXPECT_FALSE(window->IsVisible());
 }
 
+// Tests that if we fling with enough velocity while sliding up, the launcher
+// becomes visible even if the event is released below the halfway mark.
+TEST_F(HomeLauncherGestureHandlerTest, FlingingSlideUp) {
+  UpdateDisplay("400x456");
+
+  auto window = CreateWindowForTesting();
+  ASSERT_TRUE(window->IsVisible());
+
+  GetGestureHandler()->OnPressEvent(Mode::kSlideUpToShow, gfx::Point());
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), -10.f);
+  GetGestureHandler()->OnReleaseEvent(gfx::Point(0, 300));
+  EXPECT_FALSE(window->IsVisible());
+}
+
+// Tests that if we fling with enough velocity while sliding up, the launcher
+// becomes visible even if the event is released below the halfway mark.
+TEST_F(HomeLauncherGestureHandlerTest, FlingingSlideDown) {
+  UpdateDisplay("400x456");
+
+  auto window = CreateWindowForTesting();
+  wm::GetWindowState(window.get())->Minimize();
+  ASSERT_FALSE(window->IsVisible());
+
+  GetGestureHandler()->OnPressEvent(Mode::kSlideDownToHide, gfx::Point());
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 100), 10.f);
+  GetGestureHandler()->OnReleaseEvent(gfx::Point(0, 100));
+  EXPECT_TRUE(window->IsVisible());
+}
+
 // Tests that the home launcher gestures work with overview mode as expected.
 TEST_F(HomeLauncherGestureHandlerTest, OverviewMode) {
-  UpdateDisplay("400x448");
+  UpdateDisplay("400x456");
 
   auto window1 = CreateWindowForTesting();
   auto window2 = CreateWindowForTesting();
@@ -137,7 +166,7 @@
   EXPECT_FALSE(GetGestureHandler()->window());
 
   // Tests that while scrolling the window transform changes.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), 1.f);
   EXPECT_NE(window1_initial_translation,
             window1->transform().To2dTranslation().y());
   EXPECT_NE(window2_initial_translation,
@@ -164,7 +193,7 @@
 // Tests that HomeLauncherGestureHandler works as expected when one window is
 // snapped, and overview mode is active on the other side.
 TEST_F(HomeLauncherGestureHandlerTest, SplitviewOneSnappedWindow) {
-  UpdateDisplay("400x448");
+  UpdateDisplay("400x456");
 
   auto window1 = CreateWindowForTesting();
   auto window2 = CreateWindowForTesting();
@@ -185,7 +214,7 @@
   EXPECT_EQ(window1.get(), GetGestureHandler()->window());
 
   // Tests that while scrolling the window transforms change.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), 1.f);
   EXPECT_NE(window1->transform(), gfx::Transform());
   EXPECT_NE(window2_initial_translation,
             window2->transform().To2dTranslation().y());
@@ -212,7 +241,7 @@
 // Tests that swipe to close works as expected when there are two snapped
 // windows.
 TEST_F(HomeLauncherGestureHandlerTest, SplitviewTwoSnappedWindows) {
-  UpdateDisplay("400x448");
+  UpdateDisplay("400x456");
 
   auto window1 = CreateWindowForTesting();
   auto window2 = CreateWindowForTesting();
@@ -232,7 +261,7 @@
   EXPECT_EQ(window2.get(), GetGestureHandler()->window2());
 
   // Tests that while scrolling the window transforms change.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), 1.f);
   EXPECT_NE(window1->transform(), gfx::Transform());
   EXPECT_NE(window2->transform(), gfx::Transform());
 
@@ -289,7 +318,7 @@
 
   // Test that on scrolling to a point on the top half of the work area, the
   // window's opacity is between 0 and 0.5 and its transform has changed.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 100));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 100), 1.f);
   const gfx::Transform top_half_transform = window->transform();
   EXPECT_NE(gfx::Transform(), top_half_transform);
   EXPECT_GT(window->layer()->opacity(), 0.f);
@@ -297,7 +326,7 @@
 
   // Test that on scrolling to a point on the bottom half of the work area, the
   // window's opacity is between 0.5 and 1 and its transform has changed.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), 1.f);
   EXPECT_NE(gfx::Transform(), window->transform());
   EXPECT_NE(gfx::Transform(), top_half_transform);
   EXPECT_GT(window->layer()->opacity(), 0.5f);
@@ -318,7 +347,7 @@
   ASSERT_FALSE(window3->IsVisible());
 
   // After a scroll the transform and opacity are no longer the identity and 1.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 300), 1.f);
   EXPECT_NE(gfx::Transform(), window1->transform());
   EXPECT_NE(1.f, window1->layer()->opacity());
 
@@ -361,7 +390,7 @@
 // Tests on swipe up, the transient child of a window which is getting hidden
 // will have its opacity and transform altered as well.
 TEST_P(HomeLauncherModeGestureHandlerTest, WindowWithTransientChild) {
-  UpdateDisplay("400x448");
+  UpdateDisplay("400x456");
 
   // Create a window with a transient child.
   auto parent = CreateWindowForTesting();
@@ -377,7 +406,7 @@
 
   // Tests that after scrolling to the halfway point, the transient child's
   // opacity and transform are halfway to their final values.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 200));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 200), 1.f);
   EXPECT_LE(0.45f, child->layer()->opacity());
   EXPECT_GE(0.55f, child->layer()->opacity());
   EXPECT_NE(gfx::Transform(), child->transform());
@@ -398,7 +427,7 @@
   ASSERT_TRUE(GetGestureHandler()->window());
 
   // Scroll to a point above the halfway mark of the work area.
-  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 50));
+  GetGestureHandler()->OnScrollEvent(gfx::Point(0, 50), 1.f);
   EXPECT_TRUE(GetGestureHandler()->window());
   EXPECT_FALSE(wm::GetWindowState(window.get())->IsMinimized());
 
diff --git a/ash/app_list/test/app_list_test_view_delegate.cc b/ash/app_list/test/app_list_test_view_delegate.cc
index 8d9d4de9..ec9b38e 100644
--- a/ash/app_list/test/app_list_test_view_delegate.cc
+++ b/ash/app_list/test/app_list_test_view_delegate.cc
@@ -89,7 +89,7 @@
 }
 
 bool AppListTestViewDelegate::ProcessHomeLauncherGesture(
-    ui::EventType type,
+    ui::GestureEvent* event,
     const gfx::Point& screen_location) {
   return false;
 }
diff --git a/ash/app_list/test/app_list_test_view_delegate.h b/ash/app_list/test/app_list_test_view_delegate.h
index a2faac8..95227ff5 100644
--- a/ash/app_list/test/app_list_test_view_delegate.h
+++ b/ash/app_list/test/app_list_test_view_delegate.h
@@ -76,7 +76,7 @@
                                int event_flags) override {}
   void ShowWallpaperContextMenu(const gfx::Point& onscreen_location,
                                 ui::MenuSourceType source_type) override;
-  bool ProcessHomeLauncherGesture(ui::EventType type,
+  bool ProcessHomeLauncherGesture(ui::GestureEvent* event,
                                   const gfx::Point& screen_location) override;
   bool CanProcessEventsOnApplistViews() override;
   ws::WindowService* GetWindowService() override;
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc
index 63b6fd1e..fe8395f 100644
--- a/ash/app_list/views/app_list_view.cc
+++ b/ash/app_list/views/app_list_view.cc
@@ -1094,8 +1094,7 @@
         search_box_view_->NotifyGestureEvent();
 
       if (event->location().y() < kAppListHomeLaucherGesturesThreshold) {
-        if (delegate_->ProcessHomeLauncherGesture(event->type(),
-                                                  gfx::Point())) {
+        if (delegate_->ProcessHomeLauncherGesture(event, gfx::Point())) {
           SetIsInDrag(false);
           event->SetHandled();
           HandleClickOrTap(event);
@@ -1119,8 +1118,7 @@
     case ui::ET_GESTURE_SCROLL_UPDATE: {
       gfx::Point location_in_screen = event->location();
       views::View::ConvertPointToScreen(this, &location_in_screen);
-      if (delegate_->ProcessHomeLauncherGesture(event->type(),
-                                                location_in_screen)) {
+      if (delegate_->ProcessHomeLauncherGesture(event, location_in_screen)) {
         SetIsInDrag(true);
         event->SetHandled();
         return;
@@ -1138,8 +1136,7 @@
     case ui::ET_GESTURE_END: {
       gfx::Point location_in_screen = event->location();
       views::View::ConvertPointToScreen(this, &location_in_screen);
-      if (delegate_->ProcessHomeLauncherGesture(event->type(),
-                                                location_in_screen)) {
+      if (delegate_->ProcessHomeLauncherGesture(event, location_in_screen)) {
         SetIsInDrag(false);
         event->SetHandled();
         return;
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 59eef685..c6779bda 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -1238,7 +1238,9 @@
   HomeLauncherGestureHandler* home_launcher_handler =
       Shell::Get()->app_list_controller()->home_launcher_gesture_handler();
   if (home_launcher_handler && visibility_state() == SHELF_VISIBLE &&
-      home_launcher_handler->OnScrollEvent(gesture_in_screen.location())) {
+      home_launcher_handler->OnScrollEvent(
+          gesture_in_screen.location(),
+          gesture_in_screen.details().scroll_y())) {
     return;
   }
 
diff --git a/ash/shell/app_list.cc b/ash/shell/app_list.cc
index 7dfe1d84..1462275 100644
--- a/ash/shell/app_list.cc
+++ b/ash/shell/app_list.cc
@@ -314,7 +314,7 @@
     NOTIMPLEMENTED();
   }
 
-  bool ProcessHomeLauncherGesture(ui::EventType type,
+  bool ProcessHomeLauncherGesture(ui::GestureEvent* event,
                                   const gfx::Point& screen_location) override {
     NOTIMPLEMENTED();
     return false;
diff --git a/ash/wm/overview/window_selector_controller.cc b/ash/wm/overview/window_selector_controller.cc
index 273c76a..7c7db20 100644
--- a/ash/wm/overview/window_selector_controller.cc
+++ b/ash/wm/overview/window_selector_controller.cc
@@ -264,6 +264,9 @@
 
 bool WindowSelectorController::ToggleOverview(
     WindowSelector::EnterExitOverviewType type) {
+  // Hide the virtual keyboard as it obstructs the overview mode.
+  keyboard::KeyboardController::Get()->HideKeyboardImplicitlyBySystem();
+
   auto windows = Shell::Get()->mru_window_tracker()->BuildMruWindowList();
 
   // Hidden windows will be removed by ShouldExcludeWindowFromOverview so we
diff --git a/ash/wm/overview/window_selector_controller_unittest.cc b/ash/wm/overview/window_selector_controller_unittest.cc
new file mode 100644
index 0000000..a9234f5c
--- /dev/null
+++ b/ash/wm/overview/window_selector_controller_unittest.cc
@@ -0,0 +1,64 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/wm/overview/window_selector_controller.h"
+
+#include "ash/shell.h"
+#include "ash/test/ash_test_base.h"
+#include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h"
+#include "services/ws/public/cpp/input_devices/input_device_client_test_api.h"
+#include "ui/events/devices/touchscreen_device.h"
+#include "ui/keyboard/keyboard_controller.h"
+#include "ui/keyboard/keyboard_util.h"
+#include "ui/keyboard/test/keyboard_test_util.h"
+
+namespace ash {
+
+class WindowSelectorControllerTest : public AshTestBase {
+ protected:
+  void SetUp() override {
+    AshTestBase::SetUp();
+
+    ws::InputDeviceClientTestApi().SetKeyboardDevices({});
+    ws::InputDeviceClientTestApi().SetTouchscreenDevices(
+        {ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL,
+                               "Touchscreen", gfx::Size(1024, 768), 0)});
+
+    TabletModeControllerTestApi().EnterTabletMode();
+    ASSERT_TRUE(keyboard::IsKeyboardEnabled());
+
+    // TODO(https://crbug.com/849995): Change |TestKeyboardUI| so that
+    // it automatically notifies KeyboardController.
+    keyboard_controller()->LoadKeyboardWindowInBackground();
+    keyboard_controller()->GetKeyboardWindow()->SetBounds(
+        keyboard::KeyboardBoundsFromRootBounds(
+            Shell::GetPrimaryRootWindow()->bounds(), 100));
+    keyboard_controller()->NotifyKeyboardWindowLoaded();
+  }
+
+  keyboard::KeyboardController* keyboard_controller() {
+    return keyboard::KeyboardController::Get();
+  }
+};
+
+TEST_F(WindowSelectorControllerTest, ToggleOverviewModeHidesVirtualKeyboard) {
+  keyboard_controller()->ShowKeyboard(false /* locked */);
+  keyboard::WaitUntilShown();
+
+  Shell::Get()->window_selector_controller()->ToggleOverview();
+
+  // Timeout failure here if the keyboard does not hide.
+  keyboard::WaitUntilHidden();
+}
+
+TEST_F(WindowSelectorControllerTest,
+       ToggleOverviewModeDoesNotHideLockedVirtualKeyboard) {
+  keyboard_controller()->ShowKeyboard(true /* locked */);
+  keyboard::WaitUntilShown();
+
+  Shell::Get()->window_selector_controller()->ToggleOverview();
+  EXPECT_FALSE(keyboard::IsKeyboardHiding());
+}
+
+}  // namespace ash
diff --git a/base/BUILD.gn b/base/BUILD.gn
index b838736..05799b7 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -2902,6 +2902,7 @@
       "android/java/src/org/chromium/base/ApplicationStatus.java",
       "android/java/src/org/chromium/base/BaseSwitches.java",
       "android/java/src/org/chromium/base/BuildInfo.java",
+      "android/java/src/org/chromium/base/BundleUtils.java",
       "android/java/src/org/chromium/base/Callback.java",
       "android/java/src/org/chromium/base/CollectionUtil.java",
       "android/java/src/org/chromium/base/CommandLine.java",
diff --git a/base/android/java/src/org/chromium/base/BundleCanary.java b/base/android/java/src/org/chromium/base/BundleCanary.java
new file mode 100644
index 0000000..a1d3f38
--- /dev/null
+++ b/base/android/java/src/org/chromium/base/BundleCanary.java
@@ -0,0 +1,14 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.base;
+
+import org.chromium.base.annotations.UsedByReflection;
+
+/**
+ * Class only compiled into android app bundles but not into APKs. Used to determine whether a build
+ * is a bundle.
+ */
+@UsedByReflection("BundleUtils.java")
+/* package */ class BundleCanary {}
diff --git a/base/android/java/src/org/chromium/base/BundleUtils.java b/base/android/java/src/org/chromium/base/BundleUtils.java
new file mode 100644
index 0000000..d053c30
--- /dev/null
+++ b/base/android/java/src/org/chromium/base/BundleUtils.java
@@ -0,0 +1,26 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.base;
+
+/** Utils to help working with android app bundles. */
+public class BundleUtils {
+    private static final boolean sIsBundle;
+
+    static {
+        boolean isBundle;
+        try {
+            Class.forName("org.chromium.base.BundleCanary");
+            isBundle = true;
+        } catch (ClassNotFoundException e) {
+            isBundle = false;
+        }
+        sIsBundle = isBundle;
+    }
+
+    /* Returns true if the current build is a bundle. */
+    public static boolean isBundle() {
+        return sIsBundle;
+    }
+}
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 3edff3f..f9a58c7 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-70f5fe6a9162ad58e8688abc704ef58cc6458b1a
\ No newline at end of file
+4bf2a52878039839e95b0a4a12ea004a4858d3d4
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 4739966b..44b16c9 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-514ca7db27b2028a00b81571552cf51b8ff8a67c
\ No newline at end of file
+3e65df1b77360a6e98a09b0366c84c2031fac9a6
\ No newline at end of file
diff --git a/chrome/VERSION b/chrome/VERSION
index 02a7b13..321941e 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=72
 MINOR=0
-BUILD=3579
+BUILD=3582
 PATCH=0
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
index ce88a322..6fb17936d 100644
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -170,6 +170,9 @@
     }
     if (_target_type == "android_apk") {
       command_line_flags_file = "chrome-command-line"
+    } else {
+      java_files =
+          [ "//base/android/java/src/org/chromium/base/BundleCanary.java" ]
     }
     product_version_resources_dep = "//chrome/android:product_version_resources"
 
diff --git a/chrome/android/java/res/values-v17/styles.xml b/chrome/android/java/res/values-v17/styles.xml
index 6a2d6146..077aeee 100644
--- a/chrome/android/java/res/values-v17/styles.xml
+++ b/chrome/android/java/res/values-v17/styles.xml
@@ -476,6 +476,9 @@
         <item name="windowActionBar">false</item>
     </style>
     <style name="DialogWhenLarge" parent="DialogWhenLargeBase" />
+    <style name="DimmingDialog" parent="DialogWhenLargeBase">
+        <item name="android:windowLightNavigationBar" tools:targetApi="28">false</item>
+    </style>
 
     <style name="SigninAlertDialogTheme" parent="AlertDialogTheme">
         <item name="buttonBarButtonStyle">@style/SigninDialogButtonStyle</item>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesTileView.java b/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesTileView.java
index 3017685..bbc1774e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesTileView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesTileView.java
@@ -48,6 +48,7 @@
             return new BitmapDrawable(getResources(), mIconGenerator.generateIconForText(text));
         }
         return ViewUtils.createRoundedBitmapDrawable(
-                image, ViewUtils.DEFAULT_FAVICON_CORNER_RADIUS);
+                Bitmap.createScaledBitmap(image, mIconSizePx, mIconSizePx, false),
+                ViewUtils.DEFAULT_FAVICON_CORNER_RADIUS);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java
index c310973d..85af88c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java
@@ -67,7 +67,7 @@
         mFullContainer = new FrameLayout(activity);
         mFullContainer.setBackgroundColor(ApiCompatibilityUtils.getColor(
                 activity.getResources(), R.color.modal_dialog_scrim_color));
-        mDialog = new AlwaysDismissedDialog(activity, R.style.DialogWhenLarge);
+        mDialog = new AlwaysDismissedDialog(activity, R.style.DimmingDialog);
         mDialog.setOnDismissListener(dismissListener);
         mDialog.addContentView(mFullContainer,
                 new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/ContentSettingException.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/ContentSettingException.java
index 19f7048..5671839 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/ContentSettingException.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/ContentSettingException.java
@@ -22,8 +22,9 @@
              Type.SOUND})
     @Retention(RetentionPolicy.SOURCE)
     public @interface Type {
-        // Values used to address array index below, inside Website and SingleWebsitePreferences.
-        // Should be enumerated from 0 and can't have gaps.
+        // Values used to address array index - should be enumerated from 0 and can't have gaps.
+        // All updates here must also be reflected in {@link #getContentSettingsType(int)
+        // getContentSettingsType} and {@link SingleWebsitePreferences.PERMISSION_PREFERENCE_KEYS}.
         int ADS = 0;
         int AUTOPLAY = 1;
         int BACKGROUND_SYNC = 2;
@@ -38,19 +39,6 @@
         int NUM_ENTRIES = 8;
     }
 
-    // Mapping from {@link Type} to ContentSettingType.
-    // TODO(https://crbug.com/616321) Add a unit test to verify that Type and
-    // CONTENT_TYPES are in sync.
-    final static int[] CONTENT_TYPES = {
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_POPUPS,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_SOUND,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS};
-
     private final int mContentSettingType;
     private final String mPattern;
     private final ContentSetting mContentSetting;
@@ -90,4 +78,28 @@
         PrefServiceBridge.getInstance().nativeSetContentSettingForPattern(mContentSettingType,
                 mPattern, value.toInt());
     }
+
+    public static @ContentSettingsType int getContentSettingsType(@Type int type) {
+        switch (type) {
+            case Type.ADS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS;
+            case Type.AUTOMATIC_DOWNLOADS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS;
+            case Type.AUTOPLAY:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY;
+            case Type.BACKGROUND_SYNC:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;
+            case Type.COOKIE:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES;
+            case Type.JAVASCRIPT:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT;
+            case Type.POPUP:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_POPUPS;
+            case Type.SOUND:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_SOUND;
+            default:
+                assert false;
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_DEFAULT;
+        }
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/PermissionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/PermissionInfo.java
index f0f95da..d157068e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/PermissionInfo.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/PermissionInfo.java
@@ -20,8 +20,9 @@
             Type.NOTIFICATION, Type.PROTECTED_MEDIA_IDENTIFIER, Type.SENSORS})
     @Retention(RetentionPolicy.SOURCE)
     public @interface Type {
-        // Values used below, in Website, SingleWebsitePreferences and other places to address
-        // array index. Should be enumerated from 0 and can't have gaps.
+        // Values used to address index - should be enumerated from 0 and can't have gaps.
+        // All updates here must also be reflected in {@link #getContentSettingsType(int)
+        // getContentSettingsType} and {@link SingleWebsitePreferences.PERMISSION_PREFERENCE_KEYS}.
         int CAMERA = 0;
         int CLIPBOARD = 1;
         int GEOLOCATION = 2;
@@ -36,18 +37,6 @@
         int NUM_ENTRIES = 8;
     }
 
-    // Mapping from {@link Type} to ContentSettingType.
-    final static int[] CONTENT_TYPES = {
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_CLIPBOARD_READ,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_MIDI_SYSEX,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_SENSORS,
-    };
-
     private final boolean mIsIncognito;
     private final String mEmbedder;
     private final String mOrigin;
@@ -163,4 +152,28 @@
                 assert false;
         }
     }
+
+    public static @ContentSettingsType int getContentSettingsType(@Type int type) {
+        switch (type) {
+            case Type.CAMERA:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
+            case Type.CLIPBOARD:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_CLIPBOARD_READ;
+            case Type.GEOLOCATION:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION;
+            case Type.MICROPHONE:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC;
+            case Type.MIDI:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_MIDI_SYSEX;
+            case Type.NOTIFICATION:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
+            case Type.PROTECTED_MEDIA_IDENTIFIER:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER;
+            case Type.SENSORS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_SENSORS;
+            default:
+                assert false;
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_DEFAULT;
+        }
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
index c625f1b..3b673da 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
@@ -159,13 +159,13 @@
             if (!mCategory.showSites(i)) continue;
             for (@ContentSettingException.Type int j = 0;
                     j < ContentSettingException.Type.NUM_ENTRIES; j++) {
-                if (ContentSettingException.CONTENT_TYPES[j]
+                if (ContentSettingException.getContentSettingsType(j)
                         == SiteSettingsCategory.contentSettingsType(i)) {
                     return ContentSetting.BLOCK == website.site().getContentSettingPermission(j);
                 }
             }
             for (@PermissionInfo.Type int j = 0; j < PermissionInfo.Type.NUM_ENTRIES; j++) {
-                if (PermissionInfo.CONTENT_TYPES[j]
+                if (PermissionInfo.getContentSettingsType(j)
                         == SiteSettingsCategory.contentSettingsType(i)) {
                     return (j == PermissionInfo.Type.MIDI)
                             ? false
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
index 9fe6008..486de36 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
@@ -505,8 +505,9 @@
     }
 
     private boolean showWarningFor(@SiteSettingsCategory.Type int type) {
-        for (int i = 0; i < PermissionInfo.CONTENT_TYPES.length; i++) {
-            if (PermissionInfo.CONTENT_TYPES[i] == SiteSettingsCategory.contentSettingsType(type)) {
+        for (int i = 0; i < PermissionInfo.Type.NUM_ENTRIES; i++) {
+            if (PermissionInfo.getContentSettingsType(i)
+                    == SiteSettingsCategory.contentSettingsType(type)) {
                 return mSite.getPermission(i) == null
                         ? false
                         : SiteSettingsCategory.createFromType(type).showPermissionBlockedMessage(
@@ -685,9 +686,9 @@
         for (int i = 0; i < PERMISSION_PREFERENCE_KEYS.length; i++) {
             if (PERMISSION_PREFERENCE_KEYS[i].equals(preferenceKey)) {
                 return i < ContentSettingException.Type.NUM_ENTRIES
-                        ? ContentSettingException.CONTENT_TYPES[i]
-                        : PermissionInfo
-                                  .CONTENT_TYPES[i - ContentSettingException.Type.NUM_ENTRIES];
+                        ? ContentSettingException.getContentSettingsType(i)
+                        : PermissionInfo.getContentSettingsType(
+                                  i - ContentSettingException.Type.NUM_ENTRIES);
             }
         }
         return 0;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsCategory.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsCategory.java
index ae496a6..d80ee897 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsCategory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsCategory.java
@@ -43,9 +43,9 @@
             Type.SENSORS, Type.SOUND, Type.USE_STORAGE, Type.USB})
     @Retention(RetentionPolicy.SOURCE)
     public @interface Type {
-        // Values used to address array index. Should be enumerated from 0 and
-        // can't have gaps. After adding new value please increase NUM_CATEGORIES
-        // and update PREFERENCE_KEYS and CONTENT_TYPES.
+        // Values used to address array index - should be enumerated from 0 and can't have gaps.
+        // All updates here must also be reflected in {@link #preferenceKey(int)
+        // preferenceKey} and {@link #contentSettingsType(int) contentSettingsType}.
         int ALL_SITES = 0;
         int ADS = 1;
         int AUTOPLAY = 2;
@@ -70,61 +70,6 @@
         int NUM_ENTRIES = 18;
     }
 
-    /**
-     * Mapping from Type to String used in preferences. Values are sorted like
-     * Type constants.
-     * TODO(https://crbug.com:/616321) Add a unit test to verify that Type and
-     * PREFERENCE_KEYS are in sync.
-     */
-    private static final String[] PREFERENCE_KEYS = {
-            "all_sites", // Type.ALL_SITES
-            "ads", // Type.ADS
-            "autoplay", // Type.AUTOPLAY
-            "background_sync", // Type.BACKGROUND_SYNC
-            "camera", // Type.CAMERA
-            "clipboard", // Type.CLIPBOARD
-            "cookies", // Type.COOKIES,
-            "device_location", // Type.DEVICE_LOCATION
-            "javascript", // Type.JAVASCRIPT
-            "microphone", // Type.MICROPHONE
-            "notifications", // Type.NOTIFICATIONS
-            "popups", // Type.POPUPS
-            "protected_content", // Type.PROTECTED_MEDIA
-            "sensors", // Type.SENSORS
-            "sound", // Type.SOUND
-            "use_storage", // Type.USE_STORAGE
-            "usb", // Type.USB
-            "automatic_downloads", // Type.AUTOMATIC_DOWNLOADS
-    };
-
-    /**
-     * Mapping from Type to ContentSettingsType. Values are sorted like Type
-     * constants, -1 means unavailable conversion.
-     */
-    private static final int[] CONTENT_TYPES = {
-            // This comment ensures clang-format will keep first entry in separate line.
-            -1, // Type.ALL_SITES
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, // Type.ADS
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY, // Type.AUTOPLAY
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, // Type.BACKGROUND_SYNC
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, // Type.CAMERA
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_CLIPBOARD_READ, // Type.CLIPBOARD
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES, // Type.COOKIES
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION, // Type.DEVICE_LOCATION
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, // Type.JAVASCRIPT
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, // Type.MICROPHONE
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_NOTIFICATIONS, // Type.NOTIFICATIONS
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_POPUPS, // Type.POPUPS
-            ContentSettingsType
-                    .CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, // Type.PROTECTED_MEDIA
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_SENSORS, // Type.SENSORS
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_SOUND, // Type.SOUND
-            -1, // Type.USE_STORAGE
-            ContentSettingsType.CONTENT_SETTINGS_TYPE_USB_GUARD, // Type.USB
-            ContentSettingsType
-                    .CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, // Type.AUTOMATIC_DOWNLOADS,
-    };
-
     // The id of this category.
     private @Type int mCategory;
 
@@ -139,9 +84,6 @@
      *        that this category represents (or blank, if Android does not expose that permission).
      */
     protected SiteSettingsCategory(@Type int category, String androidPermission) {
-        assert Type.NUM_ENTRIES == PREFERENCE_KEYS.length;
-        assert Type.NUM_ENTRIES == CONTENT_TYPES.length;
-
         mCategory = category;
         mAndroidPermission = androidPermission;
     }
@@ -169,7 +111,7 @@
         assert contentSettingsType != -1;
         assert Type.ALL_SITES == 0;
         for (@Type int i = Type.ALL_SITES; i < Type.NUM_ENTRIES; i++) {
-            if (CONTENT_TYPES[i] == contentSettingsType) return createFromType(i);
+            if (contentSettingsType(i) == contentSettingsType) return createFromType(i);
         }
         return null;
     }
@@ -177,7 +119,7 @@
     public static SiteSettingsCategory createFromPreferenceKey(String preferenceKey) {
         assert Type.ALL_SITES == 0;
         for (@Type int i = Type.ALL_SITES; i < Type.NUM_ENTRIES; i++) {
-            if (PREFERENCE_KEYS[i].equals(preferenceKey)) return createFromType(i);
+            if (preferenceKey(i).equals(preferenceKey)) return createFromType(i);
         }
         return null;
     }
@@ -186,21 +128,98 @@
      * Convert Type into {@link ContentSettingsType}
      */
     public static int contentSettingsType(@Type int type) {
-        return CONTENT_TYPES[type];
+        switch (type) {
+            case Type.ADS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS;
+            case Type.AUTOMATIC_DOWNLOADS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS;
+            case Type.AUTOPLAY:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY;
+            case Type.BACKGROUND_SYNC:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;
+            case Type.CAMERA:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
+            case Type.CLIPBOARD:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_CLIPBOARD_READ;
+            case Type.COOKIES:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES;
+            case Type.DEVICE_LOCATION:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION;
+            case Type.JAVASCRIPT:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT;
+            case Type.MICROPHONE:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC;
+            case Type.NOTIFICATIONS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
+            case Type.POPUPS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_POPUPS;
+            case Type.PROTECTED_MEDIA:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER;
+            case Type.SENSORS:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_SENSORS;
+            case Type.SOUND:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_SOUND;
+            case Type.USB:
+                return ContentSettingsType.CONTENT_SETTINGS_TYPE_USB_GUARD;
+            // case Type.ALL_SITES
+            // case Type.USE_STORAGE
+            default:
+                return -1; // Conversion unavailable.
+        }
     }
 
     /**
      * Convert Type into preference String
      */
     public static String preferenceKey(@Type int type) {
-        return PREFERENCE_KEYS[type];
+        switch (type) {
+            case Type.ADS:
+                return "ads";
+            case Type.ALL_SITES:
+                return "all_sites";
+            case Type.AUTOMATIC_DOWNLOADS:
+                return "automatic_downloads";
+            case Type.AUTOPLAY:
+                return "autoplay";
+            case Type.BACKGROUND_SYNC:
+                return "background_sync";
+            case Type.CAMERA:
+                return "camera";
+            case Type.CLIPBOARD:
+                return "clipboard";
+            case Type.COOKIES:
+                return "cookies";
+            case Type.DEVICE_LOCATION:
+                return "device_location";
+            case Type.JAVASCRIPT:
+                return "javascript";
+            case Type.MICROPHONE:
+                return "microphone";
+            case Type.NOTIFICATIONS:
+                return "notifications";
+            case Type.POPUPS:
+                return "popups";
+            case Type.PROTECTED_MEDIA:
+                return "protected_content";
+            case Type.SENSORS:
+                return "sensors";
+            case Type.SOUND:
+                return "sound";
+            case Type.USB:
+                return "usb";
+            case Type.USE_STORAGE:
+                return "use_storage";
+            default:
+                assert false;
+                return "";
+        }
     }
 
     /**
      * Returns the {@link ContentSettingsType} for this category, or -1 if no such type exists.
      */
     public @ContentSettingsType int getContentSettingsType() {
-        return CONTENT_TYPES[mCategory];
+        return contentSettingsType(mCategory);
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
index 3b90470e..071184b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java
@@ -238,10 +238,12 @@
         int exceptionType;
         for (exceptionType = 0; exceptionType < ContentSettingException.Type.NUM_ENTRIES;
                 exceptionType++) {
-            if (contentSettingsType == ContentSettingException.CONTENT_TYPES[exceptionType]) break;
+            if (contentSettingsType
+                    == ContentSettingException.getContentSettingsType(exceptionType))
+                break;
         }
         assert contentSettingsType
-                == ContentSettingException.CONTENT_TYPES[exceptionType]
+                == ContentSettingException.getContentSettingsType(exceptionType)
             : "Unexpected content setting type received: "
                         + contentSettingsType;
 
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index c8b1389..94d81dd5 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-71.0.3578.2_rc-r1.afdo.bz2
\ No newline at end of file
+chromeos-chrome-amd64-72.0.3580.0_rc-r1.afdo.bz2
\ No newline at end of file
diff --git a/chrome/browser/chromeos/base/locale_util.cc b/chrome/browser/chromeos/base/locale_util.cc
index aace281..aba8c11b 100644
--- a/chrome/browser/chromeos/base/locale_util.cc
+++ b/chrome/browser/chromeos/base/locale_util.cc
@@ -12,9 +12,7 @@
 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/pref_names.h"
-#include "components/language/core/common/locale_util.h"
 #include "components/prefs/pref_service.h"
-#include "components/translate/core/browser/translate_prefs.h"
 #include "content/public/browser/browser_thread.h"
 #include "ui/base/ime/chromeos/input_method_manager.h"
 #include "ui/base/ime/chromeos/input_method_util.h"
@@ -64,6 +62,13 @@
   if (data->result.success) {
     g_browser_process->SetApplicationLocale(data->result.loaded_locale);
 
+    // If the language switch was triggered by enterprise policy, it is possible
+    // that the locale is not in the user's list of preferred languages yet,
+    // which would lead to an inconsistent state in the settings UI. Make sure
+    // to add it in that case.
+    locale_util::AddLocaleToPreferredLanguages(data->result.loaded_locale,
+                                               data->profile->GetPrefs());
+
     if (data->enable_locale_keyboard_layouts) {
       input_method::InputMethodManager* manager =
           input_method::InputMethodManager::Get();
@@ -105,20 +110,11 @@
     data->callback.Run(data->result);
 }
 
-// Get parsed list of preferred languages from the 'kLanguagePreferredLanguages'
-// setting.
-std::vector<std::string> GetPreferredLanguagesList(const PrefService* prefs) {
-  std::string preferred_languages_string =
-      prefs->GetString(prefs::kLanguagePreferredLanguages);
-  return base::SplitString(preferred_languages_string, ",",
-                           base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-}
-
 }  // namespace
 
 namespace locale_util {
 
-constexpr const char* kAllowedUILanguageFallback = "en-US";
+constexpr const char* kAllowedUILocalesFallbackLocale = "en-US";
 
 LanguageSwitchResult::LanguageSwitchResult(const std::string& requested_locale,
                                            const std::string& loaded_locale,
@@ -144,90 +140,56 @@
       base::Bind(&FinishSwitchLanguage, base::Passed(std::move(data))));
 }
 
-bool IsAllowedLanguage(const std::string& language, const PrefService* prefs) {
-  const base::Value::ListStorage& allowed_languages =
-      prefs->GetList(prefs::kAllowedLanguages)->GetList();
+bool IsAllowedUILocale(const std::string& locale, const PrefService* prefs) {
+  const base::Value::ListStorage& allowed_ui_locales =
+      prefs->GetList(prefs::kAllowedUILocales)->GetList();
 
-  // Empty list means all languages are allowed.
-  if (allowed_languages.empty())
+  // Empty list means all locales are allowed.
+  if (allowed_ui_locales.empty())
     return true;
 
+  // Only locale codes with native UI support can be allowed.
+  if (!IsNativeUILocale(locale))
+    return false;
+
   // Check if locale is in list of allowed UI locales.
-  return base::ContainsValue(allowed_languages, base::Value(language));
+  return base::ContainsValue(allowed_ui_locales, base::Value(locale));
 }
 
-bool IsAllowedUILanguage(const std::string& language,
-                         const PrefService* prefs) {
-  return IsAllowedLanguage(language, prefs) && IsNativeUILanguage(language);
-}
-
-bool IsNativeUILanguage(const std::string& locale) {
+bool IsNativeUILocale(const std::string& locale) {
   std::string resolved_locale;
-
-  // The locale is supported as a UI language
   if (l10n_util::CheckAndResolveLocale(locale, &resolved_locale) &&
       locale == resolved_locale) {
     return true;
   }
 
-  // The locale can be converted to a UI locale
-  if (base::FeatureList::IsEnabled(translate::kRegionalLocalesAsDisplayUI) &&
-      language::ConvertToActualUILocale(&resolved_locale)) {
-    return true;
-  }
-
   return false;
 }
 
-void RemoveDisallowedLanguagesFromPreferred(PrefService* prefs) {
-  // Do nothing if all languages are allowed
-  if (prefs->GetList(prefs::kAllowedLanguages)->GetList().empty())
-    return;
-
-  std::vector<std::string> preferred_languages =
-      GetPreferredLanguagesList(prefs);
-  std::vector<std::string> updated_preferred_languages;
-  bool have_ui_language = false;
-  for (const std::string& language : preferred_languages) {
-    if (IsAllowedLanguage(language, prefs)) {
-      updated_preferred_languages.push_back(language);
-      if (IsNativeUILanguage(language))
-        have_ui_language = true;
-    }
-  }
-  if (!have_ui_language)
-    updated_preferred_languages.push_back(GetAllowedFallbackUILanguage(prefs));
-
-  // Do not set setting if it did not change to not cause the update callback
-  if (preferred_languages != updated_preferred_languages) {
-    prefs->SetString(prefs::kLanguagePreferredLanguages,
-                     base::JoinString(updated_preferred_languages, ","));
-  }
-}
-
-std::string GetAllowedFallbackUILanguage(const PrefService* prefs) {
+std::string GetAllowedFallbackUILocale(const PrefService* prefs) {
   // Check the user's preferred languages if one of them is an allowed UI
   // locale.
   std::string preferred_languages_string =
       prefs->GetString(prefs::kLanguagePreferredLanguages);
   std::vector<std::string> preferred_languages =
-      GetPreferredLanguagesList(prefs);
+      base::SplitString(preferred_languages_string, ",", base::TRIM_WHITESPACE,
+                        base::SPLIT_WANT_NONEMPTY);
   for (const std::string& language : preferred_languages) {
-    if (IsAllowedUILanguage(language, prefs))
+    if (IsAllowedUILocale(language, prefs))
       return language;
   }
 
   // Check the allowed UI locales and return the first valid entry.
-  const base::Value::ListStorage& allowed_languages =
-      prefs->GetList(prefs::kAllowedLanguages)->GetList();
-  for (const base::Value& value : allowed_languages) {
+  const base::Value::ListStorage& allowed_ui_locales =
+      prefs->GetList(prefs::kAllowedUILocales)->GetList();
+  for (const base::Value& value : allowed_ui_locales) {
     const std::string& locale = value.GetString();
-    if (IsAllowedUILanguage(locale, prefs))
+    if (IsAllowedUILocale(locale, prefs))
       return locale;
   }
 
   // default fallback
-  return kAllowedUILanguageFallback;
+  return kAllowedUILocalesFallbackLocale;
 }
 
 bool AddLocaleToPreferredLanguages(const std::string& locale,
diff --git a/chrome/browser/chromeos/base/locale_util.h b/chrome/browser/chromeos/base/locale_util.h
index fdb6cc1..2d01fac 100644
--- a/chrome/browser/chromeos/base/locale_util.h
+++ b/chrome/browser/chromeos/base/locale_util.h
@@ -52,40 +52,23 @@
                     const SwitchLanguageCallback& callback,
                     Profile* profile);
 
-// This function checks if the given language is allowed according to the list
-// of allowed languages (stored in |prefs|, managed by 'AllowedLanguages'
-// policy). If the list is empty, every language is allowed.
-bool IsAllowedLanguage(const std::string& language, const PrefService* prefs);
+// This function checks if the given locale is allowed according to the list of
+// allowed UI locales (stored in |prefs|, managed by 'AllowedUILocales'
+// policy). If the list is empty, every locale is allowed.
+bool IsAllowedUILocale(const std::string& locale, const PrefService* prefs);
 
-// This function checks if the given language is allowed
-// by 'AllowedLanguages' and also can be used as a UI locale.
-// (see |IsAllowedLanguage|).
-bool IsAllowedUILanguage(const std::string& language, const PrefService* prefs);
+// This functions checks if the given locale is a native UI locale (e.g.,
+// 'en-US', 'en-GB', 'fr', etc. are all valid, but 'en', 'en-WS' or 'fr-CH' are
+// not)
+bool IsNativeUILocale(const std::string& locale);
 
-// This functions checks if the given language is a native UI language or can be
-// converted to one. (e.g., 'en-US', 'fr', 'de', 'de-CH', 'fr-CH' etc. are all
-// valid, but 'az' is not.
-bool IsNativeUILanguage(const std::string& locale);
-
-// This function removes languages that are disallowed by the
-// 'AllowedLanguages' policy from the list of preferred languages.
-// If no current preferred languages are allowed, this functions sets
-// a language provided by GetAllowedFallbackLanguage() as the only preferred
-// language.
-void RemoveDisallowedLanguagesFromPreferred(PrefService* prefs);
-
-// This function returns a fallback language that is allowed by the
-// 'AllowedLanguages' policy and can be used as a UI language
-// (see |IsNativeUILanguage|) as well. We check the user's preferred language
-// for any of these conditions. If none of them match, we will take the first
-// valid UI language in the list of allowed languages. If none of them are UI
-// languages, we default to "en-US" (see kAllowedUILanguageFallback).
-// languages (stored in |prefs|, managed by 'AllowedLanguages' policy). If none
-// of the user's preferred languages is allowed, the function returns the first
-// valid entry in the allowed languages list. If the list contains no valid
-// entries, the default fallback will be 'en-US'
-// (kAllowedLanguagesFallbackLocale);
-std::string GetAllowedFallbackUILanguage(const PrefService* prefs);
+// This function returns an allowed UI locale based on the list of allowed UI
+// locales (stored in |prefs|, managed by 'AllowedUILocales' policy). If none of
+// the user's preferred languages is an allowed UI locale, the function returns
+// the first valid entry in the allowed UI locales list. If the list contains no
+// valid entries, the default fallback will be 'en-US'
+// (kAllowedUILocalesFallbackLocale);
+std::string GetAllowedFallbackUILocale(const PrefService* prefs);
 
 // This function adds the |locale| to the list of preferred languages (pref
 // |kLanguagePreferredLanguages|). Returns true if the locale was newly added
diff --git a/chrome/browser/chromeos/child_accounts/usage_time_limit_processor.cc b/chrome/browser/chromeos/child_accounts/usage_time_limit_processor.cc
index 3365689..7081254 100644
--- a/chrome/browser/chromeos/child_accounts/usage_time_limit_processor.cc
+++ b/chrome/browser/chromeos/child_accounts/usage_time_limit_processor.cc
@@ -259,13 +259,23 @@
   }
 
   const base::TimeDelta delta_zero = base::TimeDelta::FromMinutes(0);
-  // Time usage limit started when the usage quota ends.
-  if ((previous_state_ && previous_state_->remaining_usage > delta_zero &&
-       state.remaining_usage <= delta_zero) ||
-      (!previous_state_ && state.remaining_usage <= delta_zero)) {
+  bool current_state_above_usage_limit =
+      state.is_time_usage_limit_enabled && state.remaining_usage <= delta_zero;
+  bool previous_state_below_usage_limit =
+      previous_state_ && previous_state_->is_time_usage_limit_enabled &&
+      previous_state_->remaining_usage > delta_zero;
+  bool previous_state_no_usage_limit =
+      previous_state_ && !previous_state_->is_time_usage_limit_enabled;
+  bool previous_state_above_usage_limit =
+      previous_state_ && previous_state_->is_time_usage_limit_enabled &&
+      previous_state_->remaining_usage <= delta_zero;
+  if ((previous_state_below_usage_limit || previous_state_no_usage_limit ||
+       !previous_state_) &&
+      current_state_above_usage_limit) {
+    // Time usage limit just started being enforced.
     state.time_usage_limit_started = usage_timestamp_;
-  } else if (previous_state_ &&
-             previous_state_->remaining_usage <= delta_zero) {
+  } else if (previous_state_above_usage_limit) {
+    // Time usage limit was already enforced.
     state.time_usage_limit_started = previous_state_->time_usage_limit_started;
   }
 
diff --git a/chrome/browser/chromeos/crostini/crostini_manager.cc b/chrome/browser/chromeos/crostini/crostini_manager.cc
index 2c4c092..f79bd5f 100644
--- a/chrome/browser/chromeos/crostini/crostini_manager.cc
+++ b/chrome/browser/chromeos/crostini/crostini_manager.cc
@@ -108,8 +108,7 @@
       base::PostTaskWithTraits(
           FROM_HERE, {content::BrowserThread::UI},
           base::BindOnce(&CrostiniRestarter::SetUpLxdContainerUserFinished,
-                         base::WrapRefCounted(this),
-                         ConciergeClientResult::SUCCESS));
+                         base::WrapRefCounted(this), CrostiniResult::SUCCESS));
       return;
     }
 
@@ -121,9 +120,7 @@
     observer_list_.AddObserver(observer);
   }
 
-  void RunCallback(ConciergeClientResult result) {
-    std::move(callback_).Run(result);
-  }
+  void RunCallback(CrostiniResult result) { std::move(callback_).Run(result); }
 
   void Abort() {
     is_aborted_ = true;
@@ -153,18 +150,18 @@
     }
   }
 
-  void FinishRestart(ConciergeClientResult result) {
+  void FinishRestart(CrostiniResult result) {
     crostini_manager_->FinishRestart(this, result);
   }
 
-  void LoadComponentFinished(ConciergeClientResult result) {
+  void LoadComponentFinished(CrostiniResult result) {
     // Tell observers.
     for (auto& observer : observer_list_) {
       observer.OnComponentLoaded(result);
     }
     if (is_aborted_)
       return;
-    if (result != ConciergeClientResult::SUCCESS) {
+    if (result != CrostiniResult::SUCCESS) {
       FinishRestart(result);
       return;
     }
@@ -174,18 +171,17 @@
 
   void ConciergeStarted(bool is_started) {
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-    ConciergeClientResult client_result =
-        is_started ? ConciergeClientResult::SUCCESS
-                   : ConciergeClientResult::CONTAINER_START_FAILED;
+    CrostiniResult result = is_started ? CrostiniResult::SUCCESS
+                                       : CrostiniResult::CONTAINER_START_FAILED;
     // Tell observers.
     for (auto& observer : observer_list_) {
-      observer.OnConciergeStarted(client_result);
+      observer.OnConciergeStarted(result);
     }
     if (is_aborted_)
       return;
     if (!is_started) {
       LOG(ERROR) << "Failed to start Concierge service.";
-      FinishRestart(client_result);
+      FinishRestart(result);
       return;
     }
     crostini_manager_->CreateDiskImage(
@@ -194,7 +190,7 @@
         base::BindOnce(&CrostiniRestarter::CreateDiskImageFinished, this));
   }
 
-  void CreateDiskImageFinished(ConciergeClientResult result,
+  void CreateDiskImageFinished(CrostiniResult result,
                                const base::FilePath& result_path) {
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
     // Tell observers.
@@ -203,7 +199,7 @@
     }
     if (is_aborted_)
       return;
-    if (result != ConciergeClientResult::SUCCESS) {
+    if (result != CrostiniResult::SUCCESS) {
       LOG(ERROR) << "Failed to create disk image.";
       FinishRestart(result);
       return;
@@ -213,7 +209,7 @@
         base::BindOnce(&CrostiniRestarter::StartTerminaVmFinished, this));
   }
 
-  void StartTerminaVmFinished(ConciergeClientResult result) {
+  void StartTerminaVmFinished(CrostiniResult result) {
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
     // Tell observers.
     for (auto& observer : observer_list_) {
@@ -221,7 +217,7 @@
     }
     if (is_aborted_)
       return;
-    if (result != ConciergeClientResult::SUCCESS) {
+    if (result != CrostiniResult::SUCCESS) {
       LOG(ERROR) << "Failed to Start Termina VM.";
       FinishRestart(result);
       return;
@@ -231,7 +227,7 @@
         base::BindOnce(&CrostiniRestarter::CreateLxdContainerFinished, this));
   }
 
-  void CreateLxdContainerFinished(ConciergeClientResult result) {
+  void CreateLxdContainerFinished(CrostiniResult result) {
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
     // Tell observers.
     for (auto& observer : observer_list_) {
@@ -239,7 +235,7 @@
     }
     if (is_aborted_)
       return;
-    if (result != ConciergeClientResult::SUCCESS) {
+    if (result != CrostiniResult::SUCCESS) {
       LOG(ERROR) << "Failed to Start Termina VM.";
       FinishRestart(result);
       return;
@@ -249,12 +245,12 @@
         base::BindOnce(&CrostiniRestarter::StartLxdContainerFinished, this));
   }
 
-  void StartLxdContainerFinished(ConciergeClientResult result) {
+  void StartLxdContainerFinished(CrostiniResult result) {
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
     // TODO(timloh): Does this need an observer callback?
     if (is_aborted_)
       return;
-    if (result != ConciergeClientResult::SUCCESS) {
+    if (result != CrostiniResult::SUCCESS) {
       LOG(ERROR) << "Failed to Start Termina VM.";
       FinishRestart(result);
       return;
@@ -265,7 +261,7 @@
                        this));
   }
 
-  void SetUpLxdContainerUserFinished(ConciergeClientResult result) {
+  void SetUpLxdContainerUserFinished(CrostiniResult result) {
     DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
     // Tell observers.
     for (auto& observer : observer_list_) {
@@ -273,7 +269,7 @@
     }
     if (is_aborted_)
       return;
-    if (result != ConciergeClientResult::SUCCESS) {
+    if (result != CrostiniResult::SUCCESS) {
       LOG(ERROR) << "Failed to start container.";
       FinishRestart(result);
       return;
@@ -292,7 +288,7 @@
     }
   }
 
-  void GetContainerSshKeysFinished(crostini::ConciergeClientResult result,
+  void GetContainerSshKeysFinished(crostini::CrostiniResult result,
                                    const std::string& container_public_key,
                                    const std::string& host_private_key,
                                    const std::string& hostname) {
@@ -303,7 +299,7 @@
     }
     if (is_aborted_)
       return;
-    if (result != crostini::ConciergeClientResult::SUCCESS) {
+    if (result != crostini::CrostiniResult::SUCCESS) {
       LOG(ERROR) << "Failed to get ssh keys.";
       FinishRestart(result);
       return;
@@ -363,9 +359,8 @@
       return;
 
     // Share folders from Downloads, etc with container.
-    ShareAllPaths(profile_,
-                  base::BindOnce(&CrostiniRestarter::FinishRestart, this,
-                                 ConciergeClientResult::SUCCESS));
+    ShareAllPaths(profile_, base::BindOnce(&CrostiniRestarter::FinishRestart,
+                                           this, CrostiniResult::SUCCESS));
   }
 
   Profile* profile_;
@@ -552,8 +547,7 @@
       LOG(ERROR) << "Need to load a major component update, but we're offline.";
       // TODO(nverne): Show a dialog/notification here for online upgrade
       // required.
-      std::move(callback).Run(
-          ConciergeClientResult::OFFLINE_WHEN_UPGRADE_REQUIRED);
+      std::move(callback).Run(CrostiniResult::OFFLINE_WHEN_UPGRADE_REQUIRED);
       return;
     }
   }
@@ -600,8 +594,8 @@
   }
 
   std::move(callback).Run(is_successful
-                              ? ConciergeClientResult::SUCCESS
-                              : ConciergeClientResult::LOAD_COMPONENT_FAILED);
+                              ? CrostiniResult::SUCCESS
+                              : CrostiniResult::LOAD_COMPONENT_FAILED);
 }
 
 bool CrostiniManager::UninstallTerminaComponent() {
@@ -663,8 +657,7 @@
   std::string disk_path_string = disk_path.AsUTF8Unsafe();
   if (disk_path_string.empty()) {
     LOG(ERROR) << "Disk path cannot be empty";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR,
-                            base::FilePath());
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR, base::FilePath());
     return;
   }
 
@@ -678,8 +671,7 @@
       storage_location != vm_tools::concierge::STORAGE_CRYPTOHOME_DOWNLOADS) {
     LOG(ERROR) << "'" << storage_location
                << "' is not a valid storage location";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR,
-                            base::FilePath());
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR, base::FilePath());
     return;
   }
   request.set_storage_location(storage_location);
@@ -703,8 +695,7 @@
   if (disk_size < kMinimumDiskSize && base::SysInfo::IsRunningOnChromeOS()) {
     LOG(ERROR) << "Insufficient disk available. Need to free "
                << kMinimumDiskSize - disk_size << " bytes";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR,
-                            base::FilePath());
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR, base::FilePath());
     return;
   }
   // The logical size of the new disk image, in bytes.
@@ -723,7 +714,7 @@
   std::string disk_path_string = disk_path.AsUTF8Unsafe();
   if (disk_path_string.empty()) {
     LOG(ERROR) << "Disk path cannot be empty";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
 
@@ -735,7 +726,7 @@
       storage_location != vm_tools::concierge::STORAGE_CRYPTOHOME_DOWNLOADS) {
     LOG(ERROR) << "'" << storage_location
                << "' is not a valid storage location";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   request.set_storage_location(storage_location);
@@ -762,14 +753,14 @@
                                      StartTerminaVmCallback callback) {
   if (name.empty()) {
     LOG(ERROR) << "name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
 
   std::string disk_path_string = disk_path.AsUTF8Unsafe();
   if (disk_path_string.empty()) {
     LOG(ERROR) << "Disk path cannot be empty";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
 
@@ -793,7 +784,7 @@
 void CrostiniManager::StopVm(std::string name, StopVmCallback callback) {
   if (name.empty()) {
     LOG(ERROR) << "name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
 
@@ -814,12 +805,12 @@
                                          CrostiniResultCallback callback) {
   if (vm_name.empty()) {
     LOG(ERROR) << "vm_name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   if (container_name.empty()) {
     LOG(ERROR) << "container_name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   if (!GetCiceroneClient()->IsLxdContainerCreatedSignalConnected() ||
@@ -827,7 +818,7 @@
     LOG(ERROR)
         << "Async call to CreateLxdContainer can't complete when signals "
            "are not connected.";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   vm_tools::cicerone::CreateLxdContainerRequest request;
@@ -848,19 +839,19 @@
                                         CrostiniResultCallback callback) {
   if (vm_name.empty()) {
     LOG(ERROR) << "vm_name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   if (container_name.empty()) {
     LOG(ERROR) << "container_name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   if (!GetCiceroneClient()->IsContainerStartedSignalConnected() ||
       !GetCiceroneClient()->IsContainerShutdownSignalConnected()) {
     LOG(ERROR) << "Async call to StartLxdContainer can't complete when signals "
                   "are not connected.";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   vm_tools::cicerone::StartLxdContainerRequest request;
@@ -880,17 +871,17 @@
                                             CrostiniResultCallback callback) {
   if (vm_name.empty()) {
     LOG(ERROR) << "vm_name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   if (container_name.empty()) {
     LOG(ERROR) << "container_name is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   if (container_username.empty()) {
     LOG(ERROR) << "container_username is required";
-    std::move(callback).Run(ConciergeClientResult::CLIENT_ERROR);
+    std::move(callback).Run(CrostiniResult::CLIENT_ERROR);
     return;
   }
   vm_tools::cicerone::SetUpLxdContainerUserRequest request;
@@ -965,7 +956,7 @@
     // detect when the install completes, successfully or otherwise.
     LOG(ERROR)
         << "Attempted to install package when progress signal not connected.";
-    std::move(callback).Run(ConciergeClientResult::INSTALL_LINUX_PACKAGE_FAILED,
+    std::move(callback).Run(CrostiniResult::INSTALL_LINUX_PACKAGE_FAILED,
                             std::string());
     return;
   }
@@ -1161,7 +1152,7 @@
     base::Optional<vm_tools::concierge::CreateDiskImageResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to create disk image. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::CREATE_DISK_IMAGE_FAILED,
+    std::move(callback).Run(CrostiniResult::CREATE_DISK_IMAGE_FAILED,
                             base::FilePath());
     return;
   }
@@ -1170,12 +1161,12 @@
   if (response.status() != vm_tools::concierge::DISK_STATUS_EXISTS &&
       response.status() != vm_tools::concierge::DISK_STATUS_CREATED) {
     LOG(ERROR) << "Failed to create disk image: " << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::CREATE_DISK_IMAGE_FAILED,
+    std::move(callback).Run(CrostiniResult::CREATE_DISK_IMAGE_FAILED,
                             base::FilePath());
     return;
   }
 
-  std::move(callback).Run(ConciergeClientResult::SUCCESS,
+  std::move(callback).Run(CrostiniResult::SUCCESS,
                           base::FilePath(response.disk_path()));
 }
 
@@ -1184,7 +1175,7 @@
     base::Optional<vm_tools::concierge::DestroyDiskImageResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to destroy disk image. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::DESTROY_DISK_IMAGE_FAILED);
+    std::move(callback).Run(CrostiniResult::DESTROY_DISK_IMAGE_FAILED);
     return;
   }
   vm_tools::concierge::DestroyDiskImageResponse response =
@@ -1193,11 +1184,11 @@
   if (response.status() != vm_tools::concierge::DISK_STATUS_DESTROYED &&
       response.status() != vm_tools::concierge::DISK_STATUS_DOES_NOT_EXIST) {
     LOG(ERROR) << "Failed to destroy disk image: " << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::DESTROY_DISK_IMAGE_FAILED);
+    std::move(callback).Run(CrostiniResult::DESTROY_DISK_IMAGE_FAILED);
     return;
   }
 
-  std::move(callback).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback).Run(CrostiniResult::SUCCESS);
 }
 
 void CrostiniManager::OnListVmDisks(
@@ -1206,7 +1197,7 @@
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to get list of VM disks. Empty response.";
     std::move(callback).Run(
-        ConciergeClientResult::LIST_VM_DISKS_FAILED,
+        CrostiniResult::LIST_VM_DISKS_FAILED,
         profile_->GetPrefs()->GetInt64(prefs::kCrostiniLastDiskSize));
     return;
   }
@@ -1215,15 +1206,14 @@
   if (!response.success()) {
     LOG(ERROR) << "Failed to list VM disks: " << response.failure_reason();
     std::move(callback).Run(
-        ConciergeClientResult::LIST_VM_DISKS_FAILED,
+        CrostiniResult::LIST_VM_DISKS_FAILED,
         profile_->GetPrefs()->GetInt64(prefs::kCrostiniLastDiskSize));
     return;
   }
 
   profile_->GetPrefs()->SetInt64(prefs::kCrostiniLastDiskSize,
                                  response.total_size());
-  std::move(callback).Run(ConciergeClientResult::SUCCESS,
-                          response.total_size());
+  std::move(callback).Run(CrostiniResult::SUCCESS, response.total_size());
 }
 
 void CrostiniManager::OnStartTerminaVm(
@@ -1232,7 +1222,7 @@
     base::Optional<vm_tools::concierge::StartVmResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to start termina vm. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::VM_START_FAILED);
+    std::move(callback).Run(CrostiniResult::VM_START_FAILED);
     return;
   }
   vm_tools::concierge::StartVmResponse response = reply.value();
@@ -1240,7 +1230,7 @@
   if (response.status() == vm_tools::concierge::VM_STATUS_FAILURE ||
       response.status() == vm_tools::concierge::VM_STATUS_UNKNOWN) {
     LOG(ERROR) << "Failed to start VM: " << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::VM_START_FAILED);
+    std::move(callback).Run(CrostiniResult::VM_START_FAILED);
     return;
   }
 
@@ -1248,7 +1238,7 @@
   if (response.status() == vm_tools::concierge::VM_STATUS_RUNNING) {
     running_vms_[vm_name] =
         std::make_pair(VmState::STARTED, std::move(response.vm_info()));
-    std::move(callback).Run(ConciergeClientResult::SUCCESS);
+    std::move(callback).Run(CrostiniResult::SUCCESS);
     return;
   }
 
@@ -1261,15 +1251,14 @@
       std::make_pair(VmState::STARTING, std::move(response.vm_info()));
 
   tremplin_started_callbacks_.emplace(
-      vm_name,
-      base::BindOnce(&CrostiniManager::OnStartTremplin,
-                     weak_ptr_factory_.GetWeakPtr(), vm_name,
-                     std::move(callback), ConciergeClientResult::SUCCESS));
+      vm_name, base::BindOnce(&CrostiniManager::OnStartTremplin,
+                              weak_ptr_factory_.GetWeakPtr(), vm_name,
+                              std::move(callback), CrostiniResult::SUCCESS));
 }
 
 void CrostiniManager::OnStartTremplin(std::string vm_name,
                                       StartTerminaVmCallback callback,
-                                      ConciergeClientResult result) {
+                                      CrostiniResult result) {
   // Record the running vm.
   VLOG(1) << "Received TremplinStartedSignal, VM: " << owner_id_ << ", "
           << vm_name;
@@ -1285,7 +1274,7 @@
     base::Optional<vm_tools::concierge::StopVmResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to stop termina vm. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::VM_STOP_FAILED);
+    std::move(callback).Run(CrostiniResult::VM_STOP_FAILED);
     return;
   }
   vm_tools::concierge::StopVmResponse response = reply.value();
@@ -1299,7 +1288,7 @@
     // this to be an error, and making it a success will save us having to
     // discriminate on failure_reason here.
     if (response.failure_reason() != "Requested VM does not exist") {
-      std::move(callback).Run(ConciergeClientResult::VM_STOP_FAILED);
+      std::move(callback).Run(CrostiniResult::VM_STOP_FAILED);
       return;
     }
   }
@@ -1307,7 +1296,7 @@
   running_vms_.erase(vm_name);
   // Remove containers from running_containers_
   running_containers_.erase(std::move(vm_name));
-  std::move(callback).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback).Run(CrostiniResult::SUCCESS);
 }
 
 void CrostiniManager::OnContainerStarted(
@@ -1318,7 +1307,7 @@
   auto range = start_container_callbacks_.equal_range(
       std::make_tuple(signal.vm_name(), signal.container_name()));
   for (auto it = range.first; it != range.second; ++it) {
-    std::move(it->second).Run(ConciergeClientResult::SUCCESS);
+    std::move(it->second).Run(CrostiniResult::SUCCESS);
   }
   start_container_callbacks_.erase(range.first, range.second);
   running_containers_.emplace(signal.vm_name(), signal.container_name());
@@ -1332,7 +1321,7 @@
   auto range = start_container_callbacks_.equal_range(
       std::make_tuple(signal.vm_name(), signal.container_name()));
   for (auto it = range.first; it != range.second; ++it) {
-    std::move(it->second).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(it->second).Run(CrostiniResult::CONTAINER_START_FAILED);
   }
   start_container_callbacks_.erase(range.first, range.second);
 }
@@ -1392,7 +1381,7 @@
     base::Optional<vm_tools::cicerone::CreateLxdContainerResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to create lxd container in vm. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
     return;
   }
   vm_tools::cicerone::CreateLxdContainerResponse response = reply.value();
@@ -1409,10 +1398,10 @@
   if (response.status() !=
       vm_tools::cicerone::CreateLxdContainerResponse::EXISTS) {
     LOG(ERROR) << "Failed to start container: " << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
     return;
   }
-  std::move(callback).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback).Run(CrostiniResult::SUCCESS);
 }
 
 void CrostiniManager::OnStartLxdContainer(
@@ -1422,7 +1411,7 @@
     base::Optional<vm_tools::cicerone::StartLxdContainerResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to start lxd container in vm. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
     return;
   }
   vm_tools::cicerone::StartLxdContainerResponse response = reply.value();
@@ -1432,10 +1421,10 @@
         response.status() ==
             vm_tools::cicerone::StartLxdContainerResponse::RUNNING)) {
     LOG(ERROR) << "Failed to start container: " << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
     return;
   }
-  std::move(callback).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback).Run(CrostiniResult::SUCCESS);
 }
 
 void CrostiniManager::OnSetUpLxdContainerUser(
@@ -1445,7 +1434,7 @@
     base::Optional<vm_tools::cicerone::SetUpLxdContainerUserResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to set up lxd container user. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
     return;
   }
   vm_tools::cicerone::SetUpLxdContainerUserResponse response = reply.value();
@@ -1456,7 +1445,7 @@
             vm_tools::cicerone::SetUpLxdContainerUserResponse::EXISTS)) {
     LOG(ERROR) << "Failed to set up container user: "
                << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
     return;
   }
 
@@ -1465,33 +1454,33 @@
                                        std::move(callback));
     return;
   }
-  std::move(callback).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback).Run(CrostiniResult::SUCCESS);
 }
 
 void CrostiniManager::OnLxdContainerCreated(
     const vm_tools::cicerone::LxdContainerCreatedSignal& signal) {
   if (signal.owner_id() != owner_id_)
     return;
-  ConciergeClientResult result;
+  CrostiniResult result;
 
   switch (signal.status()) {
     case vm_tools::cicerone::LxdContainerCreatedSignal::UNKNOWN:
-      result = ConciergeClientResult::UNKNOWN_ERROR;
+      result = CrostiniResult::UNKNOWN_ERROR;
       break;
     case vm_tools::cicerone::LxdContainerCreatedSignal::CREATED:
-      result = ConciergeClientResult::SUCCESS;
+      result = CrostiniResult::SUCCESS;
       break;
     case vm_tools::cicerone::LxdContainerCreatedSignal::DOWNLOAD_TIMED_OUT:
-      result = ConciergeClientResult::CONTAINER_DOWNLOAD_TIMED_OUT;
+      result = CrostiniResult::CONTAINER_DOWNLOAD_TIMED_OUT;
       break;
     case vm_tools::cicerone::LxdContainerCreatedSignal::CANCELLED:
-      result = ConciergeClientResult::CONTAINER_CREATE_CANCELLED;
+      result = CrostiniResult::CONTAINER_CREATE_CANCELLED;
       break;
     case vm_tools::cicerone::LxdContainerCreatedSignal::FAILED:
-      result = ConciergeClientResult::CONTAINER_CREATE_FAILED;
+      result = CrostiniResult::CONTAINER_CREATE_FAILED;
       break;
     default:
-      result = ConciergeClientResult::UNKNOWN_ERROR;
+      result = CrostiniResult::UNKNOWN_ERROR;
       break;
   }
   // Find the callbacks to call, then erase them from the map.
@@ -1535,7 +1524,7 @@
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to launch application. Empty response.";
     std::move(callback).Run(
-        ConciergeClientResult::LAUNCH_CONTAINER_APPLICATION_FAILED);
+        CrostiniResult::LAUNCH_CONTAINER_APPLICATION_FAILED);
     return;
   }
   vm_tools::cicerone::LaunchContainerApplicationResponse response =
@@ -1544,10 +1533,10 @@
   if (!response.success()) {
     LOG(ERROR) << "Failed to launch application: " << response.failure_reason();
     std::move(callback).Run(
-        ConciergeClientResult::LAUNCH_CONTAINER_APPLICATION_FAILED);
+        CrostiniResult::LAUNCH_CONTAINER_APPLICATION_FAILED);
     return;
   }
-  std::move(callback).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback).Run(CrostiniResult::SUCCESS);
 }
 
 void CrostiniManager::OnGetContainerAppIcons(
@@ -1556,7 +1545,7 @@
   std::vector<Icon> icons;
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to get container application icons. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::DBUS_ERROR, icons);
+    std::move(callback).Run(CrostiniResult::DBUS_ERROR, icons);
     return;
   }
   vm_tools::cicerone::ContainerAppIconResponse response = reply.value();
@@ -1565,7 +1554,7 @@
         Icon{.desktop_file_id = std::move(*icon.mutable_desktop_file_id()),
              .content = std::move(*icon.mutable_icon())});
   }
-  std::move(callback).Run(ConciergeClientResult::SUCCESS, icons);
+  std::move(callback).Run(CrostiniResult::SUCCESS, icons);
 }
 
 void CrostiniManager::OnInstallLinuxPackage(
@@ -1573,9 +1562,8 @@
     base::Optional<vm_tools::cicerone::InstallLinuxPackageResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to install Linux package. Empty response.";
-    std::move(callback).Run(
-        ConciergeClientResult::LAUNCH_CONTAINER_APPLICATION_FAILED,
-        std::string());
+    std::move(callback).Run(CrostiniResult::LAUNCH_CONTAINER_APPLICATION_FAILED,
+                            std::string());
     return;
   }
   vm_tools::cicerone::InstallLinuxPackageResponse response = reply.value();
@@ -1584,7 +1572,7 @@
       vm_tools::cicerone::InstallLinuxPackageResponse::FAILED) {
     LOG(ERROR) << "Failed to install Linux package: "
                << response.failure_reason();
-    std::move(callback).Run(ConciergeClientResult::INSTALL_LINUX_PACKAGE_FAILED,
+    std::move(callback).Run(CrostiniResult::INSTALL_LINUX_PACKAGE_FAILED,
                             response.failure_reason());
     return;
   }
@@ -1593,12 +1581,11 @@
       vm_tools::cicerone::InstallLinuxPackageResponse::INSTALL_ALREADY_ACTIVE) {
     LOG(WARNING) << "Failed to install Linux package, install already active.";
     std::move(callback).Run(
-        ConciergeClientResult::INSTALL_LINUX_PACKAGE_ALREADY_ACTIVE,
-        std::string());
+        CrostiniResult::INSTALL_LINUX_PACKAGE_ALREADY_ACTIVE, std::string());
     return;
   }
 
-  std::move(callback).Run(ConciergeClientResult::SUCCESS, std::string());
+  std::move(callback).Run(CrostiniResult::SUCCESS, std::string());
 }
 
 void CrostiniManager::OnGetContainerSshKeys(
@@ -1606,11 +1593,11 @@
     base::Optional<vm_tools::concierge::ContainerSshKeysResponse> reply) {
   if (!reply.has_value()) {
     LOG(ERROR) << "Failed to get ssh keys. Empty response.";
-    std::move(callback).Run(ConciergeClientResult::DBUS_ERROR, "", "", "");
+    std::move(callback).Run(CrostiniResult::DBUS_ERROR, "", "", "");
     return;
   }
   vm_tools::concierge::ContainerSshKeysResponse response = reply.value();
-  std::move(callback).Run(ConciergeClientResult::SUCCESS,
+  std::move(callback).Run(CrostiniResult::SUCCESS,
                           response.container_public_key(),
                           response.host_private_key(), response.hostname());
 }
@@ -1626,7 +1613,7 @@
   crostini_remover->RemoveCrostini();
 }
 
-void CrostiniManager::OnRemoveCrostini(ConciergeClientResult result) {
+void CrostiniManager::OnRemoveCrostini(CrostiniResult result) {
   for (auto& callback : remove_crostini_callbacks_) {
     std::move(callback).Run(result);
   }
@@ -1634,7 +1621,7 @@
 }
 
 void CrostiniManager::FinishRestart(CrostiniRestarter* restarter,
-                                    ConciergeClientResult result) {
+                                    CrostiniResult result) {
   auto key = std::make_pair(restarter->vm_name(), restarter->container_name());
   auto range = restarters_by_container_.equal_range(key);
   std::vector<scoped_refptr<CrostiniRestarter>> pending_restarters;
diff --git a/chrome/browser/chromeos/crostini/crostini_manager.h b/chrome/browser/chromeos/crostini/crostini_manager.h
index 091303d8..68ef61f0 100644
--- a/chrome/browser/chromeos/crostini/crostini_manager.h
+++ b/chrome/browser/chromeos/crostini/crostini_manager.h
@@ -29,7 +29,7 @@
 namespace crostini {
 
 // Result types for CrostiniManager::StartTerminaVmCallback etc.
-enum class ConciergeClientResult {
+enum class CrostiniResult {
   SUCCESS,
   DBUS_ERROR,
   UNPARSEABLE_RESPONSE,
@@ -99,10 +99,9 @@
                         public chromeos::ConciergeClient::Observer,
                         public chromeos::CiceroneClient::Observer {
  public:
-  using ConciergeClientCallback =
-      base::OnceCallback<void(ConciergeClientResult result)>;
+  using CrostiniResultCallback =
+      base::OnceCallback<void(CrostiniResult result)>;
   using BoolCallback = base::OnceCallback<void(bool)>;
-  using CrostiniResultCallback = ConciergeClientCallback;
 
   // The type of the callback for CrostiniManager::StartConcierge.
   using StartConciergeCallback = BoolCallback;
@@ -112,14 +111,13 @@
   using StartTerminaVmCallback = CrostiniResultCallback;
   // The type of the callback for CrostiniManager::CreateDiskImage.
   using CreateDiskImageCallback =
-      base::OnceCallback<void(ConciergeClientResult result,
+      base::OnceCallback<void(CrostiniResult result,
                               const base::FilePath& disk_path)>;
   // The type of the callback for CrostiniManager::DestroyDiskImage.
   using DestroyDiskImageCallback = CrostiniResultCallback;
   // The type of the callback for CrostiniManager::ListVmDisks.
   using ListVmDisksCallback =
-      base::OnceCallback<void(ConciergeClientResult result,
-                              int64_t total_size)>;
+      base::OnceCallback<void(CrostiniResult result, int64_t total_size)>;
   // The type of the callback for CrostiniManager::StopVm.
   using StopVmCallback = CrostiniResultCallback;
   // The type of the callback for CrostiniManager::StartContainer.
@@ -130,17 +128,17 @@
   using LaunchContainerApplicationCallback = CrostiniResultCallback;
   // The type of the callback for CrostiniManager::GetContainerAppIcons.
   using GetContainerAppIconsCallback =
-      base::OnceCallback<void(ConciergeClientResult result,
+      base::OnceCallback<void(CrostiniResult result,
                               const std::vector<Icon>& icons)>;
   // The type of the callback for CrostiniManager::InstallLinuxPackage.
   // |failure_reason| is returned from the container upon failure
   // (INSTALL_LINUX_PACKAGE_FAILED), and not necessarily localized.
   using InstallLinuxPackageCallback =
-      base::OnceCallback<void(ConciergeClientResult result,
+      base::OnceCallback<void(CrostiniResult result,
                               const std::string& failure_reason)>;
   // The type of the callback for CrostiniManager::GetContainerSshKeys.
   using GetContainerSshKeysCallback =
-      base::OnceCallback<void(ConciergeClientResult result,
+      base::OnceCallback<void(CrostiniResult result,
                               const std::string& container_public_key,
                               const std::string& host_private_key,
                               const std::string& hostname)>;
@@ -153,14 +151,14 @@
   class RestartObserver {
    public:
     virtual ~RestartObserver() {}
-    virtual void OnComponentLoaded(ConciergeClientResult result) = 0;
-    virtual void OnConciergeStarted(ConciergeClientResult result) = 0;
-    virtual void OnDiskImageCreated(ConciergeClientResult result) = 0;
-    virtual void OnVmStarted(ConciergeClientResult result) = 0;
+    virtual void OnComponentLoaded(CrostiniResult result) = 0;
+    virtual void OnConciergeStarted(CrostiniResult result) = 0;
+    virtual void OnDiskImageCreated(CrostiniResult result) = 0;
+    virtual void OnVmStarted(CrostiniResult result) = 0;
     virtual void OnContainerDownloading(int32_t download_percent) = 0;
-    virtual void OnContainerCreated(ConciergeClientResult result) = 0;
-    virtual void OnContainerStarted(ConciergeClientResult result) = 0;
-    virtual void OnSshKeysFetched(ConciergeClientResult result) = 0;
+    virtual void OnContainerCreated(CrostiniResult result) = 0;
+    virtual void OnContainerStarted(CrostiniResult result) = 0;
+    virtual void OnSshKeysFetched(CrostiniResult result) = 0;
   };
 
   static CrostiniManager* GetForProfile(Profile* profile);
@@ -429,7 +427,7 @@
   // |callback|.
   void OnStartTremplin(std::string vm_name,
                        StartTerminaVmCallback callback,
-                       ConciergeClientResult result);
+                       CrostiniResult result);
 
   // Callback for ConciergeClient::StopVm. Called after the Concierge
   // service method finishes.
@@ -514,11 +512,10 @@
       CreateDiskImageCallback callback,
       int64_t free_disk_size);
 
-  void FinishRestart(CrostiniRestarter* restarter,
-                     ConciergeClientResult result);
+  void FinishRestart(CrostiniRestarter* restarter, CrostiniResult result);
 
   // Callback for CrostiniManager::RemoveCrostini.
-  void OnRemoveCrostini(ConciergeClientResult result);
+  void OnRemoveCrostini(CrostiniResult result);
 
   Profile* profile_;
   std::string owner_id_;
diff --git a/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc b/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc
index 58e67a9..10e7193 100644
--- a/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc
+++ b/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc
@@ -29,92 +29,91 @@
 class CrostiniManagerTest : public testing::Test {
  public:
   void CreateDiskImageClientErrorCallback(base::OnceClosure closure,
-                                          ConciergeClientResult result,
+                                          CrostiniResult result,
                                           const base::FilePath& file_path) {
     EXPECT_FALSE(fake_concierge_client_->create_disk_image_called());
-    EXPECT_EQ(result, ConciergeClientResult::CLIENT_ERROR);
+    EXPECT_EQ(result, CrostiniResult::CLIENT_ERROR);
     std::move(closure).Run();
   }
 
   void DestroyDiskImageClientErrorCallback(base::OnceClosure closure,
-                                           ConciergeClientResult result) {
+                                           CrostiniResult result) {
     EXPECT_FALSE(fake_concierge_client_->destroy_disk_image_called());
-    EXPECT_EQ(result, ConciergeClientResult::CLIENT_ERROR);
+    EXPECT_EQ(result, CrostiniResult::CLIENT_ERROR);
     std::move(closure).Run();
   }
 
   void ListVmDisksClientErrorCallback(base::OnceClosure closure,
-                                      ConciergeClientResult result,
+                                      CrostiniResult result,
                                       int64_t total_size) {
     EXPECT_FALSE(fake_concierge_client_->list_vm_disks_called());
-    EXPECT_EQ(result, ConciergeClientResult::CLIENT_ERROR);
+    EXPECT_EQ(result, CrostiniResult::CLIENT_ERROR);
     std::move(closure).Run();
   }
 
   void StartTerminaVmClientErrorCallback(base::OnceClosure closure,
-                                         ConciergeClientResult result) {
+                                         CrostiniResult result) {
     EXPECT_FALSE(fake_concierge_client_->start_termina_vm_called());
-    EXPECT_EQ(result, ConciergeClientResult::CLIENT_ERROR);
+    EXPECT_EQ(result, CrostiniResult::CLIENT_ERROR);
     std::move(closure).Run();
   }
 
   void StopVmClientErrorCallback(base::OnceClosure closure,
-                                 ConciergeClientResult result) {
+                                 CrostiniResult result) {
     EXPECT_FALSE(fake_concierge_client_->stop_vm_called());
-    EXPECT_EQ(result, ConciergeClientResult::CLIENT_ERROR);
+    EXPECT_EQ(result, CrostiniResult::CLIENT_ERROR);
     std::move(closure).Run();
   }
 
   void CreateDiskImageSuccessCallback(base::OnceClosure closure,
-                                      ConciergeClientResult result,
+                                      CrostiniResult result,
                                       const base::FilePath& file_path) {
     EXPECT_TRUE(fake_concierge_client_->create_disk_image_called());
     std::move(closure).Run();
   }
 
   void DestroyDiskImageSuccessCallback(base::OnceClosure closure,
-                                       ConciergeClientResult result) {
+                                       CrostiniResult result) {
     EXPECT_TRUE(fake_concierge_client_->destroy_disk_image_called());
     std::move(closure).Run();
   }
 
   void ListVmDisksSuccessCallback(base::OnceClosure closure,
-                                  ConciergeClientResult result,
+                                  CrostiniResult result,
                                   int64_t total_size) {
     EXPECT_TRUE(fake_concierge_client_->list_vm_disks_called());
     std::move(closure).Run();
   }
 
   void StartTerminaVmSuccessCallback(base::OnceClosure closure,
-                                     ConciergeClientResult result) {
+                                     CrostiniResult result) {
     EXPECT_TRUE(fake_concierge_client_->start_termina_vm_called());
     std::move(closure).Run();
   }
 
   void OnStartTremplinRecordsRunningVmCallback(base::OnceClosure closure,
-                                               ConciergeClientResult result) {
+                                               CrostiniResult result) {
     // Check that running_vms_ contains the running vm.
     EXPECT_TRUE(crostini_manager()->IsVmRunning(kVmName));
     std::move(closure).Run();
   }
 
-  void StopVmSuccessCallback(base::OnceClosure closure,
-                             ConciergeClientResult result) {
+  void StopVmSuccessCallback(base::OnceClosure closure, CrostiniResult result) {
     EXPECT_TRUE(fake_concierge_client_->stop_vm_called());
     std::move(closure).Run();
   }
 
   void CreateContainerFailsCallback(base::OnceClosure closure,
-                                    ConciergeClientResult result) {
+                                    CrostiniResult result) {
     create_container_fails_callback_called_ = true;
-    EXPECT_EQ(result, ConciergeClientResult::UNKNOWN_ERROR);
+    EXPECT_EQ(result, CrostiniResult::UNKNOWN_ERROR);
     std::move(closure).Run();
   }
 
   void InstallLinuxPackageCallback(base::OnceClosure closure,
-                                   ConciergeClientResult expected_result,
+                                   CrostiniResult expected_result,
                                    const std::string& expected_failure_reason,
-                                   ConciergeClientResult result,
+                                   CrostiniResult result,
                                    const std::string& failure_reason) {
     EXPECT_EQ(expected_result, result);
     EXPECT_EQ(expected_failure_reason, failure_reason);
@@ -306,7 +305,7 @@
       kVmName, kContainerName, "/tmp/package.deb",
       base::BindOnce(&CrostiniManagerTest::InstallLinuxPackageCallback,
                      base::Unretained(this), run_loop()->QuitClosure(),
-                     ConciergeClientResult::INSTALL_LINUX_PACKAGE_FAILED,
+                     CrostiniResult::INSTALL_LINUX_PACKAGE_FAILED,
                      std::string()));
   run_loop()->Run();
 }
@@ -319,7 +318,7 @@
       kVmName, kContainerName, "/tmp/package.deb",
       base::BindOnce(&CrostiniManagerTest::InstallLinuxPackageCallback,
                      base::Unretained(this), run_loop()->QuitClosure(),
-                     ConciergeClientResult::SUCCESS, std::string()));
+                     CrostiniResult::SUCCESS, std::string()));
   run_loop()->Run();
 }
 
@@ -333,7 +332,7 @@
       kVmName, kContainerName, "/tmp/package.deb",
       base::BindOnce(&CrostiniManagerTest::InstallLinuxPackageCallback,
                      base::Unretained(this), run_loop()->QuitClosure(),
-                     ConciergeClientResult::INSTALL_LINUX_PACKAGE_FAILED,
+                     CrostiniResult::INSTALL_LINUX_PACKAGE_FAILED,
                      failure_reason));
   run_loop()->Run();
 }
@@ -344,31 +343,31 @@
   void SetUp() override { CrostiniManagerTest::SetUp(); }
 
   void RestartCrostiniCallback(base::OnceClosure closure,
-                               ConciergeClientResult result) {
+                               CrostiniResult result) {
     restart_crostini_callback_count_++;
     std::move(closure).Run();
   }
 
   // CrostiniManager::RestartObserver
-  void OnComponentLoaded(ConciergeClientResult result) override {
+  void OnComponentLoaded(CrostiniResult result) override {
     if (abort_on_component_loaded_) {
       Abort();
     }
   }
 
-  void OnConciergeStarted(ConciergeClientResult result) override {
+  void OnConciergeStarted(CrostiniResult result) override {
     if (abort_on_concierge_started_) {
       Abort();
     }
   }
 
-  void OnDiskImageCreated(ConciergeClientResult result) override {
+  void OnDiskImageCreated(CrostiniResult result) override {
     if (abort_on_disk_image_created_) {
       Abort();
     }
   }
 
-  void OnVmStarted(ConciergeClientResult result) override {
+  void OnVmStarted(CrostiniResult result) override {
     if (abort_on_vm_started_) {
       Abort();
     }
@@ -376,19 +375,19 @@
 
   void OnContainerDownloading(int32_t download_percent) override {}
 
-  void OnContainerCreated(ConciergeClientResult result) override {
+  void OnContainerCreated(CrostiniResult result) override {
     if (abort_on_container_created_) {
       Abort();
     }
   }
 
-  void OnContainerStarted(ConciergeClientResult result) override {
+  void OnContainerStarted(CrostiniResult result) override {
     if (abort_on_container_started_) {
       Abort();
     }
   }
 
-  void OnSshKeysFetched(ConciergeClientResult result) override {
+  void OnSshKeysFetched(CrostiniResult result) override {
     if (abort_on_ssh_keys_fetched_) {
       Abort();
     }
diff --git a/chrome/browser/chromeos/crostini/crostini_package_installer_service.cc b/chrome/browser/chromeos/crostini/crostini_package_installer_service.cc
index 47f505e6..1e86c24 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_installer_service.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_installer_service.cc
@@ -126,10 +126,10 @@
     const std::string& vm_name,
     const std::string& container_name,
     CrostiniManager::InstallLinuxPackageCallback callback,
-    ConciergeClientResult result,
+    CrostiniResult result,
     const std::string& failure_reason) {
   std::move(callback).Run(result, failure_reason);
-  if (result != ConciergeClientResult::SUCCESS)
+  if (result != CrostiniResult::SUCCESS)
     return;
 
   std::unique_ptr<CrostiniPackageInstallerNotification>& notification =
diff --git a/chrome/browser/chromeos/crostini/crostini_package_installer_service.h b/chrome/browser/chromeos/crostini/crostini_package_installer_service.h
index 474ce0d..9a0d274d 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_installer_service.h
+++ b/chrome/browser/chromeos/crostini/crostini_package_installer_service.h
@@ -52,7 +52,7 @@
       const std::string& vm_name,
       const std::string& container_name,
       CrostiniManager::InstallLinuxPackageCallback callback,
-      ConciergeClientResult result,
+      CrostiniResult result,
       const std::string& failure_reason);
 
   std::string GetUniqueNotificationId();
diff --git a/chrome/browser/chromeos/crostini/crostini_registry_service.cc b/chrome/browser/chromeos/crostini/crostini_registry_service.cc
index 9c098e0..4f52299 100644
--- a/chrome/browser/chromeos/crostini/crostini_registry_service.cc
+++ b/chrome/browser/chromeos/crostini/crostini_registry_service.cc
@@ -831,9 +831,9 @@
 void CrostiniRegistryService::OnContainerAppIcon(
     const std::string& app_id,
     ui::ScaleFactor scale_factor,
-    ConciergeClientResult result,
+    CrostiniResult result,
     const std::vector<Icon>& icons) {
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     // Add this to the list of retryable icon requests so we redo this when
     // we get feedback from the container that it's available.
     retry_icon_requests_[app_id] |= (1 << scale_factor);
diff --git a/chrome/browser/chromeos/crostini/crostini_registry_service.h b/chrome/browser/chromeos/crostini/crostini_registry_service.h
index efd8116..2a8a4f83 100644
--- a/chrome/browser/chromeos/crostini/crostini_registry_service.h
+++ b/chrome/browser/chromeos/crostini/crostini_registry_service.h
@@ -191,7 +191,7 @@
   // Callback for when we request an icon from the container.
   void OnContainerAppIcon(const std::string& app_id,
                           ui::ScaleFactor scale_factor,
-                          ConciergeClientResult result,
+                          CrostiniResult result,
                           const std::vector<Icon>& icons);
   // Callback for our internal call for saving out icon data.
   void OnIconInstalled(const std::string& app_id,
diff --git a/chrome/browser/chromeos/crostini/crostini_remover.cc b/chrome/browser/chromeos/crostini/crostini_remover.cc
index 7394eb6..98dfbd2d 100644
--- a/chrome/browser/chromeos/crostini/crostini_remover.cc
+++ b/chrome/browser/chromeos/crostini/crostini_remover.cc
@@ -45,8 +45,8 @@
   }
 }
 
-void CrostiniRemover::OnComponentLoaded(ConciergeClientResult result) {
-  if (result != ConciergeClientResult::SUCCESS) {
+void CrostiniRemover::OnComponentLoaded(CrostiniResult result) {
+  if (result != CrostiniResult::SUCCESS) {
     std::move(callback_).Run(result);
     return;
   }
@@ -56,16 +56,16 @@
 
 void CrostiniRemover::OnConciergeStarted(bool is_successful) {
   if (!is_successful) {
-    std::move(callback_).Run(ConciergeClientResult::UNKNOWN_ERROR);
+    std::move(callback_).Run(CrostiniResult::UNKNOWN_ERROR);
     return;
   }
   CrostiniManager::GetForProfile(profile_)->StopVm(
       vm_name_, base::BindOnce(&CrostiniRemover::StopVmFinished, this));
 }
 
-void CrostiniRemover::StopVmFinished(ConciergeClientResult result) {
+void CrostiniRemover::StopVmFinished(CrostiniResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     std::move(callback_).Run(result);
     return;
   }
@@ -79,9 +79,9 @@
       base::BindOnce(&CrostiniRemover::DestroyDiskImageFinished, this));
 }
 
-void CrostiniRemover::DestroyDiskImageFinished(ConciergeClientResult result) {
+void CrostiniRemover::DestroyDiskImageFinished(CrostiniResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     std::move(callback_).Run(result);
     return;
   }
@@ -97,7 +97,7 @@
     profile_->GetPrefs()->SetBoolean(prefs::kCrostiniEnabled, false);
     profile_->GetPrefs()->ClearPref(prefs::kCrostiniLastDiskSize);
   }
-  std::move(callback_).Run(ConciergeClientResult::SUCCESS);
+  std::move(callback_).Run(CrostiniResult::SUCCESS);
 }
 
 }  // namespace crostini
diff --git a/chrome/browser/chromeos/crostini/crostini_remover.h b/chrome/browser/chromeos/crostini/crostini_remover.h
index 7d88084..d3642ea1 100644
--- a/chrome/browser/chromeos/crostini/crostini_remover.h
+++ b/chrome/browser/chromeos/crostini/crostini_remover.h
@@ -23,10 +23,10 @@
 
   ~CrostiniRemover();
 
-  void OnComponentLoaded(crostini::ConciergeClientResult result);
+  void OnComponentLoaded(crostini::CrostiniResult result);
   void OnConciergeStarted(bool is_successful);
-  void StopVmFinished(crostini::ConciergeClientResult result);
-  void DestroyDiskImageFinished(crostini::ConciergeClientResult result);
+  void StopVmFinished(crostini::CrostiniResult result);
+  void DestroyDiskImageFinished(crostini::CrostiniResult result);
   void StopConciergeFinished(bool is_successful);
 
   Profile* profile_;
diff --git a/chrome/browser/chromeos/crostini/crostini_share_path_unittest.cc b/chrome/browser/chromeos/crostini/crostini_share_path_unittest.cc
index b40ede93..55cb824 100644
--- a/chrome/browser/chromeos/crostini/crostini_share_path_unittest.cc
+++ b/chrome/browser/chromeos/crostini/crostini_share_path_unittest.cc
@@ -31,9 +31,9 @@
 
 class CrostiniSharePathTest : public testing::Test {
  public:
-  void SharePathSuccessStartTerminaVmCallback(ConciergeClientResult result) {
+  void SharePathSuccessStartTerminaVmCallback(CrostiniResult result) {
     EXPECT_TRUE(fake_concierge_client_->start_termina_vm_called());
-    EXPECT_EQ(result, ConciergeClientResult::SUCCESS);
+    EXPECT_EQ(result, CrostiniResult::SUCCESS);
 
     SharePath(profile(), "success", share_path_,
               base::BindOnce(&CrostiniSharePathTest::SharePathCallback,
@@ -41,10 +41,9 @@
                              run_loop()->QuitClosure()));
   }
 
-  void SharePathErrorSeneschalStartTerminaVmCallback(
-      ConciergeClientResult result) {
+  void SharePathErrorSeneschalStartTerminaVmCallback(CrostiniResult result) {
     EXPECT_TRUE(fake_concierge_client_->start_termina_vm_called());
-    EXPECT_EQ(result, ConciergeClientResult::SUCCESS);
+    EXPECT_EQ(result, CrostiniResult::SUCCESS);
 
     SharePath(profile(), "error-seneschal", share_path_,
               base::BindOnce(&CrostiniSharePathTest::SharePathCallback,
diff --git a/chrome/browser/chromeos/crostini/crostini_util.cc b/chrome/browser/chromeos/crostini/crostini_util.cc
index 3fec8d99..d2964b3 100644
--- a/chrome/browser/chromeos/crostini/crostini_util.cc
+++ b/chrome/browser/chromeos/crostini/crostini_util.cc
@@ -75,13 +75,12 @@
                          const std::string& app_id,
                          Browser* browser,
                          base::OnceClosure callback,
-                         crostini::ConciergeClientResult result) {
-  if (result != crostini::ConciergeClientResult::SUCCESS) {
+                         crostini::CrostiniResult result) {
+  if (result != crostini::CrostiniResult::SUCCESS) {
     OnLaunchFailed(app_id);
     if (browser && browser->window())
       browser->window()->Close();
-    if (result ==
-        crostini::ConciergeClientResult::OFFLINE_WHEN_UPGRADE_REQUIRED) {
+    if (result == crostini::CrostiniResult::OFFLINE_WHEN_UPGRADE_REQUIRED) {
       ShowCrostiniUpgradeView(profile, crostini::CrostiniUISurface::kAppList);
     }
     return;
@@ -90,8 +89,8 @@
 }
 
 void OnContainerApplicationLaunched(const std::string& app_id,
-                                    crostini::ConciergeClientResult result) {
-  if (result != crostini::ConciergeClientResult::SUCCESS)
+                                    crostini::CrostiniResult result) {
+  if (result != crostini::CrostiniResult::SUCCESS)
     OnLaunchFailed(app_id);
 }
 
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
index 2124c5e..396de6d5 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -765,8 +765,8 @@
 }
 
 void AutotestPrivateRunCrostiniInstallerFunction::CrostiniRestarted(
-    crostini::ConciergeClientResult result) {
-  if (result == crostini::ConciergeClientResult::SUCCESS) {
+    crostini::CrostiniResult result) {
+  if (result == crostini::CrostiniResult::SUCCESS) {
     Respond(NoArguments());
   } else {
     Respond(Error("Error installing crostini"));
@@ -800,8 +800,8 @@
 }
 
 void AutotestPrivateRunCrostiniUninstallerFunction::CrostiniRemoved(
-    crostini::ConciergeClientResult result) {
-  if (result == crostini::ConciergeClientResult::SUCCESS)
+    crostini::CrostiniResult result) {
+  if (result == crostini::CrostiniResult::SUCCESS)
     Respond(NoArguments());
   else
     Respond(Error("Error uninstalling crostini"));
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
index 36bfbc7f..05a4442 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
@@ -21,7 +21,7 @@
 }
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }
 
 namespace extensions {
@@ -282,7 +282,7 @@
   ~AutotestPrivateRunCrostiniInstallerFunction() override;
   ResponseAction Run() override;
 
-  void CrostiniRestarted(crostini::ConciergeClientResult);
+  void CrostiniRestarted(crostini::CrostiniResult);
 };
 
 class AutotestPrivateRunCrostiniUninstallerFunction
@@ -295,7 +295,7 @@
   ~AutotestPrivateRunCrostiniUninstallerFunction() override;
   ResponseAction Run() override;
 
-  void CrostiniRemoved(crostini::ConciergeClientResult);
+  void CrostiniRemoved(crostini::CrostiniResult);
 };
 
 class AutotestPrivateTakeScreenshotFunction : public UIThreadExtensionFunction {
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
index cafa74c..a28a693 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
@@ -670,8 +670,8 @@
 }
 
 void FileManagerPrivateMountCrostiniFunction::RestartCallback(
-    crostini::ConciergeClientResult result) {
-  if (result != crostini::ConciergeClientResult::SUCCESS) {
+    crostini::CrostiniResult result) {
+  if (result != crostini::CrostiniResult::SUCCESS) {
     Respond(Error(
         base::StringPrintf("Error mounting crostini container: %d", result)));
     return;
@@ -773,19 +773,19 @@
 }
 
 void FileManagerPrivateInternalInstallLinuxPackageFunction::
-    OnInstallLinuxPackage(crostini::ConciergeClientResult result,
+    OnInstallLinuxPackage(crostini::CrostiniResult result,
                           const std::string& failure_reason) {
   extensions::api::file_manager_private::InstallLinuxPackageResponse response;
   switch (result) {
-    case crostini::ConciergeClientResult::SUCCESS:
+    case crostini::CrostiniResult::SUCCESS:
       response = extensions::api::file_manager_private::
           INSTALL_LINUX_PACKAGE_RESPONSE_STARTED;
       break;
-    case crostini::ConciergeClientResult::INSTALL_LINUX_PACKAGE_FAILED:
+    case crostini::CrostiniResult::INSTALL_LINUX_PACKAGE_FAILED:
       response = extensions::api::file_manager_private::
           INSTALL_LINUX_PACKAGE_RESPONSE_FAILED;
       break;
-    case crostini::ConciergeClientResult::INSTALL_LINUX_PACKAGE_ALREADY_ACTIVE:
+    case crostini::CrostiniResult::INSTALL_LINUX_PACKAGE_ALREADY_ACTIVE:
       response = extensions::api::file_manager_private::
           INSTALL_LINUX_PACKAGE_RESPONSE_INSTALL_ALREADY_ACTIVE;
       break;
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h
index 3f6bbc2..0173ce84 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.h
@@ -27,7 +27,7 @@
 }  // namespace chromeos
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }
 
 namespace file_manager {
@@ -294,7 +294,7 @@
   ~FileManagerPrivateMountCrostiniFunction() override;
 
   bool RunAsync() override;
-  void RestartCallback(crostini::ConciergeClientResult);
+  void RestartCallback(crostini::CrostiniResult);
 
  private:
   std::string source_path_;
@@ -358,7 +358,7 @@
 
  private:
   ResponseAction Run() override;
-  void OnInstallLinuxPackage(crostini::ConciergeClientResult result,
+  void OnInstallLinuxPackage(crostini::CrostiniResult result,
                              const std::string& failure_reason);
   DISALLOW_COPY_AND_ASSIGN(
       FileManagerPrivateInternalInstallLinuxPackageFunction);
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
index 7ee42977..fca4a54 100644
--- a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
+++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
@@ -41,7 +41,12 @@
   }
 
   TestCase& EnableDriveFs() {
-    enable_drivefs = true;
+    enable_drivefs.emplace(true);
+    return *this;
+  }
+
+  TestCase& DisableDriveFs() {
+    enable_drivefs.emplace(false);
     return *this;
   }
 
@@ -74,7 +79,7 @@
     if (test.tablet_mode)
       name.append("_TabletMode");
 
-    if (test.enable_drivefs)
+    if (test.enable_drivefs.value_or(false))
       name.append("_DriveFs");
 
     return name;
@@ -84,7 +89,7 @@
   GuestMode guest_mode = NOT_IN_GUEST_MODE;
   bool trusted_events = false;
   bool tablet_mode = false;
-  bool enable_drivefs = false;
+  base::Optional<bool> enable_drivefs;
   bool with_browser = false;
   bool needs_zip = false;
   bool offline = false;
@@ -147,7 +152,10 @@
 
   bool GetTabletMode() const override { return GetParam().tablet_mode; }
 
-  bool GetEnableDriveFs() const override { return GetParam().enable_drivefs; }
+  bool GetEnableDriveFs() const override {
+    return GetParam().enable_drivefs.value_or(
+        FileManagerBrowserTestBase::GetEnableDriveFs());
+  }
 
   bool GetRequiresStartupBrowser() const override {
     return GetParam().with_browser;
@@ -185,13 +193,13 @@
         TestCase("fileDisplayDownloads"),
         TestCase("fileDisplayDownloads").InGuestMode(),
         TestCase("fileDisplayDownloads").TabletMode(),
-        TestCase("fileDisplayDrive"),
-        TestCase("fileDisplayDrive").TabletMode(),
+        TestCase("fileDisplayDrive").DisableDriveFs(),
+        TestCase("fileDisplayDrive").TabletMode().DisableDriveFs(),
         TestCase("fileDisplayDrive").EnableDriveFs(),
         TestCase("fileDisplayDrive").TabletMode().EnableDriveFs(),
         TestCase("fileDisplayDriveOffline").Offline().EnableDriveFs(),
         TestCase("fileDisplayDriveOnline").EnableDriveFs(),
-        TestCase("fileDisplayDriveOnline"),
+        TestCase("fileDisplayDriveOnline").DisableDriveFs(),
         TestCase("fileDisplayMtp"),
         TestCase("fileDisplayUsb"),
         TestCase("fileSearch"),
@@ -205,7 +213,7 @@
     FilesAppBrowserTest,
     ::testing::Values(TestCase("videoOpenDownloads").InGuestMode(),
                       TestCase("videoOpenDownloads"),
-                      TestCase("videoOpenDrive"),
+                      TestCase("videoOpenDrive").DisableDriveFs(),
                       TestCase("videoOpenDrive").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -216,7 +224,7 @@
                       TestCase("audioOpenCloseDrive"),
                       TestCase("audioOpenDownloads").InGuestMode(),
                       TestCase("audioOpenDownloads"),
-                      TestCase("audioOpenDrive"),
+                      TestCase("audioOpenDrive").DisableDriveFs(),
                       TestCase("audioOpenDrive").EnableDriveFs(),
                       TestCase("audioAutoAdvanceDrive"),
                       TestCase("audioRepeatAllModeSingleFileDrive"),
@@ -231,10 +239,10 @@
     FilesAppBrowserTest,
     ::testing::Values(TestCase("imageOpenDownloads").InGuestMode(),
                       TestCase("imageOpenDownloads"),
-                      TestCase("imageOpenDrive"),
+                      TestCase("imageOpenDrive").DisableDriveFs(),
                       TestCase("imageOpenDrive").EnableDriveFs(),
                       TestCase("imageOpenGalleryOpenDownloads"),
-                      TestCase("imageOpenGalleryOpenDrive"),
+                      TestCase("imageOpenGalleryOpenDrive").DisableDriveFs(),
                       TestCase("imageOpenGalleryOpenDrive").EnableDriveFs()));
 
 // NaCl fails to compile zip plugin.pexe too often on ASAN, crbug.com/867738
@@ -248,13 +256,13 @@
     FilesAppBrowserTest,
     ::testing::Values(ZipCase("zipFileOpenDownloads").InGuestMode(),
                       ZipCase("zipFileOpenDownloads"),
+                      ZipCase("zipFileOpenDrive").DisableDriveFs(),
                       ZipCase("zipFileOpenDrive").EnableDriveFs(),
-                      ZipCase("zipFileOpenDrive"),
                       ZipCase("zipFileOpenUsb"),
                       ZipCase("zipCreateFileDownloads").InGuestMode(),
                       ZipCase("zipCreateFileDownloads"),
+                      ZipCase("zipCreateFileDrive").DisableDriveFs(),
                       ZipCase("zipCreateFileDrive").EnableDriveFs(),
-                      ZipCase("zipCreateFileDrive"),
                       ZipCase("zipCreateFileUsb")));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -265,7 +273,7 @@
                       TestCase("createFolderDownloads").InGuestMode(),
                       TestCase("createFolderDownloads"),
                       TestCase("createFolderNestedDownloads"),
-                      TestCase("createFolderDrive"),
+                      TestCase("createFolderDrive").DisableDriveFs(),
                       TestCase("createFolderDrive").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -273,64 +281,68 @@
     FilesAppBrowserTest,
     ::testing::Values(TestCase("keyboardDeleteDownloads").InGuestMode(),
                       TestCase("keyboardDeleteDownloads"),
-                      TestCase("keyboardDeleteDrive"),
+                      TestCase("keyboardDeleteDrive").DisableDriveFs(),
                       TestCase("keyboardDeleteDrive").EnableDriveFs(),
                       TestCase("keyboardDeleteFolderDownloads").InGuestMode(),
                       TestCase("keyboardDeleteFolderDownloads"),
-                      TestCase("keyboardDeleteFolderDrive"),
+                      TestCase("keyboardDeleteFolderDrive").DisableDriveFs(),
                       TestCase("keyboardDeleteFolderDrive").EnableDriveFs(),
                       TestCase("keyboardCopyDownloads").InGuestMode(),
                       TestCase("keyboardCopyDownloads"),
-                      TestCase("keyboardCopyDrive"),
+                      TestCase("keyboardCopyDrive").DisableDriveFs(),
                       TestCase("keyboardCopyDrive").EnableDriveFs(),
                       TestCase("renameFileDownloads").InGuestMode(),
                       TestCase("renameFileDownloads"),
-                      TestCase("renameFileDrive"),
+                      TestCase("renameFileDrive").DisableDriveFs(),
                       TestCase("renameFileDrive").EnableDriveFs(),
                       TestCase("renameNewFolderDownloads").InGuestMode(),
                       TestCase("renameNewFolderDownloads"),
-                      TestCase("renameNewFolderDrive"),
+                      TestCase("renameNewFolderDrive").DisableDriveFs(),
                       TestCase("renameNewFolderDrive").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     ContextMenu, /* context_menu.js */
     FilesAppBrowserTest,
-    ::testing::Values(TestCase("checkDeleteEnabledForReadWriteFile"),
-                      TestCase("checkDeleteDisabledForReadOnlyDocument"),
-                      TestCase("checkDeleteDisabledForReadOnlyFile"),
-                      TestCase("checkDeleteDisabledForReadOnlyFolder"),
-                      TestCase("checkRenameEnabledForReadWriteFile"),
-                      TestCase("checkRenameDisabledForReadOnlyDocument"),
-                      TestCase("checkRenameDisabledForReadOnlyFile"),
-                      TestCase("checkRenameDisabledForReadOnlyFolder"),
-                      TestCase("checkShareEnabledForReadWriteFile"),
-                      TestCase("checkShareEnabledForReadOnlyDocument"),
-                      TestCase("checkShareDisabledForStrictReadOnlyDocument"),
-                      TestCase("checkShareEnabledForReadOnlyFile"),
-                      TestCase("checkShareEnabledForReadOnlyFolder"),
-                      TestCase("checkCopyEnabledForReadWriteFile"),
-                      TestCase("checkCopyEnabledForReadOnlyDocument"),
-                      TestCase("checkCopyDisabledForStrictReadOnlyDocument"),
-                      TestCase("checkCopyEnabledForReadOnlyFile"),
-                      TestCase("checkCopyEnabledForReadOnlyFolder"),
-                      TestCase("checkCutEnabledForReadWriteFile"),
-                      TestCase("checkCutDisabledForReadOnlyDocument"),
-                      TestCase("checkCutDisabledForReadOnlyFile"),
-                      TestCase("checkCutDisabledForReadOnlyFolder"),
-                      TestCase("checkPasteIntoFolderEnabledForReadWriteFolder"),
-                      TestCase("checkPasteIntoFolderDisabledForReadOnlyFolder"),
-                      TestCase("checkContextMenusForInputElements"),
-                      TestCase("checkNewFolderEnabledInsideReadWriteFolder"),
-                      TestCase("checkNewFolderDisabledInsideReadOnlyFolder"),
-                      TestCase("checkPasteEnabledInsideReadWriteFolder"),
-                      TestCase("checkPasteDisabledInsideReadOnlyFolder"),
-                      TestCase("checkCopyEnabledForReadWriteFolderInTree"),
-                      TestCase("checkCopyEnabledForReadOnlyFolderInTree"),
-                      TestCase("checkCutEnabledForReadWriteFolderInTree"),
-                      TestCase("checkCutDisabledForReadOnlyFolderInTree"),
-                      TestCase("checkPasteEnabledForReadWriteFolderInTree"),
-                      TestCase("checkPasteDisabledForReadOnlyFolderInTree"),
-                      TestCase("checkContextMenuForTeamDriveRoot")));
+    ::testing::Values(
+        TestCase("checkDeleteEnabledForReadWriteFile").DisableDriveFs(),
+        TestCase("checkDeleteDisabledForReadOnlyDocument").DisableDriveFs(),
+        TestCase("checkDeleteDisabledForReadOnlyFile").DisableDriveFs(),
+        TestCase("checkDeleteDisabledForReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkRenameEnabledForReadWriteFile").DisableDriveFs(),
+        TestCase("checkRenameDisabledForReadOnlyDocument").DisableDriveFs(),
+        TestCase("checkRenameDisabledForReadOnlyFile").DisableDriveFs(),
+        TestCase("checkRenameDisabledForReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkShareEnabledForReadWriteFile").DisableDriveFs(),
+        TestCase("checkShareEnabledForReadOnlyDocument").DisableDriveFs(),
+        TestCase("checkShareDisabledForStrictReadOnlyDocument")
+            .DisableDriveFs(),
+        TestCase("checkShareEnabledForReadOnlyFile").DisableDriveFs(),
+        TestCase("checkShareEnabledForReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkCopyEnabledForReadWriteFile").DisableDriveFs(),
+        TestCase("checkCopyEnabledForReadOnlyDocument").DisableDriveFs(),
+        TestCase("checkCopyDisabledForStrictReadOnlyDocument").DisableDriveFs(),
+        TestCase("checkCopyEnabledForReadOnlyFile").DisableDriveFs(),
+        TestCase("checkCopyEnabledForReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkCutEnabledForReadWriteFile").DisableDriveFs(),
+        TestCase("checkCutDisabledForReadOnlyDocument").DisableDriveFs(),
+        TestCase("checkCutDisabledForReadOnlyFile").DisableDriveFs(),
+        TestCase("checkCutDisabledForReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkPasteIntoFolderEnabledForReadWriteFolder")
+            .DisableDriveFs(),
+        TestCase("checkPasteIntoFolderDisabledForReadOnlyFolder")
+            .DisableDriveFs(),
+        TestCase("checkContextMenusForInputElements"),
+        TestCase("checkNewFolderEnabledInsideReadWriteFolder").DisableDriveFs(),
+        TestCase("checkNewFolderDisabledInsideReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkPasteEnabledInsideReadWriteFolder").DisableDriveFs(),
+        TestCase("checkPasteDisabledInsideReadOnlyFolder").DisableDriveFs(),
+        TestCase("checkCopyEnabledForReadWriteFolderInTree").DisableDriveFs(),
+        TestCase("checkCopyEnabledForReadOnlyFolderInTree").DisableDriveFs(),
+        TestCase("checkCutEnabledForReadWriteFolderInTree").DisableDriveFs(),
+        TestCase("checkCutDisabledForReadOnlyFolderInTree").DisableDriveFs(),
+        TestCase("checkPasteEnabledForReadWriteFolderInTree").DisableDriveFs(),
+        TestCase("checkPasteDisabledForReadOnlyFolderInTree").DisableDriveFs(),
+        TestCase("checkContextMenuForTeamDriveRoot").DisableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     ContextMenu2, /* context_menu.js */
@@ -398,7 +410,7 @@
                       TestCase("openQuickViewScrollHtml"),
                       TestCase("openQuickViewBackgroundColorText"),
                       TestCase("openQuickViewBackgroundColorHtml"),
-                      TestCase("openQuickViewDrive"),
+                      TestCase("openQuickViewDrive").DisableDriveFs(),
                       TestCase("openQuickViewDrive").EnableDriveFs(),
                       TestCase("openQuickViewAndroid"),
                       TestCase("openQuickViewCrostini"),
@@ -438,50 +450,50 @@
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     DriveSpecific, /* drive_specific.js */
     FilesAppBrowserTest,
-    ::testing::Values(TestCase("driveOpenSidebarOffline"),
+    ::testing::Values(TestCase("driveOpenSidebarOffline").DisableDriveFs(),
                       TestCase("driveOpenSidebarOffline").EnableDriveFs(),
-                      TestCase("driveOpenSidebarSharedWithMe"),
+                      TestCase("driveOpenSidebarSharedWithMe").DisableDriveFs(),
                       TestCase("driveOpenSidebarSharedWithMe").EnableDriveFs(),
-                      TestCase("driveAutoCompleteQuery"),
+                      TestCase("driveAutoCompleteQuery").DisableDriveFs(),
                       TestCase("driveAutoCompleteQuery").EnableDriveFs(),
-                      TestCase("drivePinFileMobileNetwork"),
+                      TestCase("drivePinFileMobileNetwork").DisableDriveFs(),
                       TestCase("drivePinFileMobileNetwork").EnableDriveFs(),
-                      TestCase("driveClickFirstSearchResult"),
+                      TestCase("driveClickFirstSearchResult").DisableDriveFs(),
                       TestCase("driveClickFirstSearchResult").EnableDriveFs(),
-                      TestCase("drivePressEnterToSearch"),
+                      TestCase("drivePressEnterToSearch").DisableDriveFs(),
                       TestCase("drivePressEnterToSearch").EnableDriveFs(),
-                      TestCase("drivePressCtrlAFromSearch"),
+                      TestCase("drivePressCtrlAFromSearch").DisableDriveFs(),
                       TestCase("drivePressCtrlAFromSearch").EnableDriveFs(),
-                      TestCase("driveBackupPhotos"),
+                      TestCase("driveBackupPhotos").DisableDriveFs(),
                       TestCase("driveBackupPhotos").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     Transfer, /* transfer.js */
     FilesAppBrowserTest,
     ::testing::Values(
-        TestCase("transferFromDriveToDownloads"),
+        TestCase("transferFromDriveToDownloads").DisableDriveFs(),
         TestCase("transferFromDriveToDownloads").EnableDriveFs(),
-        TestCase("transferFromDownloadsToDrive"),
+        TestCase("transferFromDownloadsToDrive").DisableDriveFs(),
         TestCase("transferFromDownloadsToDrive").EnableDriveFs(),
-        TestCase("transferFromSharedToDownloads"),
+        TestCase("transferFromSharedToDownloads").DisableDriveFs(),
         TestCase("transferFromSharedToDownloads").EnableDriveFs(),
-        TestCase("transferFromSharedToDrive"),
+        TestCase("transferFromSharedToDrive").DisableDriveFs(),
         TestCase("transferFromSharedToDrive").EnableDriveFs(),
-        TestCase("transferFromOfflineToDownloads"),
+        TestCase("transferFromOfflineToDownloads").DisableDriveFs(),
         TestCase("transferFromOfflineToDownloads").EnableDriveFs(),
-        TestCase("transferFromOfflineToDrive"),
+        TestCase("transferFromOfflineToDrive").DisableDriveFs(),
         TestCase("transferFromOfflineToDrive").EnableDriveFs(),
-        TestCase("transferFromTeamDriveToDrive"),
+        TestCase("transferFromTeamDriveToDrive").DisableDriveFs(),
         TestCase("transferFromTeamDriveToDrive").EnableDriveFs(),
-        TestCase("transferFromDriveToTeamDrive"),
+        TestCase("transferFromDriveToTeamDrive").DisableDriveFs(),
         TestCase("transferFromDriveToTeamDrive").EnableDriveFs(),
-        TestCase("transferFromTeamDriveToDownloads"),
+        TestCase("transferFromTeamDriveToDownloads").DisableDriveFs(),
         TestCase("transferFromTeamDriveToDownloads").EnableDriveFs(),
-        TestCase("transferHostedFileFromTeamDriveToDownloads"),
+        TestCase("transferHostedFileFromTeamDriveToDownloads").DisableDriveFs(),
         TestCase("transferHostedFileFromTeamDriveToDownloads").EnableDriveFs(),
-        TestCase("transferFromDownloadsToTeamDrive"),
+        TestCase("transferFromDownloadsToTeamDrive").DisableDriveFs(),
         TestCase("transferFromDownloadsToTeamDrive").EnableDriveFs(),
-        TestCase("transferBetweenTeamDrives"),
+        TestCase("transferBetweenTeamDrives").DisableDriveFs(),
         TestCase("transferBetweenTeamDrives").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -502,15 +514,15 @@
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     ShareAndManageDialog, /* share_and_manage_dialog.js */
     FilesAppBrowserTest,
-    ::testing::Values(TestCase("shareFileDrive"),
+    ::testing::Values(TestCase("shareFileDrive").DisableDriveFs(),
                       TestCase("shareFileDrive").EnableDriveFs(),
-                      TestCase("shareDirectoryDrive"),
+                      TestCase("shareDirectoryDrive").DisableDriveFs(),
                       TestCase("shareDirectoryDrive").EnableDriveFs(),
-                      TestCase("manageHostedFileDrive"),
+                      TestCase("manageHostedFileDrive").DisableDriveFs(),
                       TestCase("manageHostedFileDrive").EnableDriveFs(),
-                      TestCase("manageFileDrive"),
+                      TestCase("manageFileDrive").DisableDriveFs(),
                       TestCase("manageFileDrive").EnableDriveFs(),
-                      TestCase("manageDirectoryDrive"),
+                      TestCase("manageDirectoryDrive").DisableDriveFs(),
                       TestCase("manageDirectoryDrive").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -523,7 +535,7 @@
     FilesAppBrowserTest,
     ::testing::Values(TestCase("traverseDownloads").InGuestMode(),
                       TestCase("traverseDownloads"),
-                      TestCase("traverseDrive"),
+                      TestCase("traverseDrive").DisableDriveFs(),
                       TestCase("traverseDrive").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -531,11 +543,11 @@
     FilesAppBrowserTest,
     ::testing::Values(TestCase("executeDefaultTaskDownloads"),
                       TestCase("executeDefaultTaskDownloads").InGuestMode(),
-                      TestCase("executeDefaultTaskDrive"),
+                      TestCase("executeDefaultTaskDrive").DisableDriveFs(),
                       TestCase("executeDefaultTaskDrive").EnableDriveFs(),
                       TestCase("defaultTaskDialogDownloads"),
                       TestCase("defaultTaskDialogDownloads").InGuestMode(),
-                      TestCase("defaultTaskDialogDrive"),
+                      TestCase("defaultTaskDialogDrive").DisableDriveFs(),
                       TestCase("defaultTaskDialogDrive").EnableDriveFs(),
                       TestCase("genericTaskIsNotExecuted"),
                       TestCase("genericTaskAndNonGenericTask")));
@@ -543,9 +555,9 @@
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     FolderShortcuts, /* folder_shortcuts.js */
     FilesAppBrowserTest,
-    ::testing::Values(TestCase("traverseFolderShortcuts"),
+    ::testing::Values(TestCase("traverseFolderShortcuts").DisableDriveFs(),
                       TestCase("traverseFolderShortcuts").EnableDriveFs(),
-                      TestCase("addRemoveFolderShortcuts"),
+                      TestCase("addRemoveFolderShortcuts").DisableDriveFs(),
                       TestCase("addRemoveFolderShortcuts").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -563,11 +575,11 @@
         EventCase("tabindexFocusDownloads"),
         EventCase("tabindexFocusDownloads").InGuestMode(),
         EventCase("tabindexFocusDirectorySelected"),
-        EventCase("tabindexOpenDialogDrive").WithBrowser(),
+        EventCase("tabindexOpenDialogDrive").WithBrowser().DisableDriveFs(),
         EventCase("tabindexOpenDialogDrive").WithBrowser().EnableDriveFs(),
         EventCase("tabindexOpenDialogDownloads").WithBrowser(),
         EventCase("tabindexOpenDialogDownloads").WithBrowser().InGuestMode(),
-        EventCase("tabindexSaveFileDialogDrive").WithBrowser(),
+        EventCase("tabindexSaveFileDialogDrive").WithBrowser().DisableDriveFs(),
         EventCase("tabindexSaveFileDialogDrive").WithBrowser().EnableDriveFs(),
         EventCase("tabindexSaveFileDialogDownloads").WithBrowser(),
         EventCase("tabindexSaveFileDialogDownloads")
@@ -584,16 +596,19 @@
         TestCase("openFileDialogDownloads").WithBrowser().InIncognito(),
         TestCase("openFileDialogCancelDownloads").WithBrowser(),
         TestCase("openFileDialogEscapeDownloads").WithBrowser(),
-        TestCase("openFileDialogDrive").WithBrowser(),
-        TestCase("openFileDialogDrive").WithBrowser().InIncognito(),
+        TestCase("openFileDialogDrive").WithBrowser().DisableDriveFs(),
+        TestCase("openFileDialogDrive")
+            .WithBrowser()
+            .InIncognito()
+            .DisableDriveFs(),
         TestCase("openFileDialogDrive").WithBrowser().EnableDriveFs(),
         TestCase("openFileDialogDrive")
             .WithBrowser()
             .InIncognito()
             .EnableDriveFs(),
-        TestCase("openFileDialogCancelDrive").WithBrowser(),
+        TestCase("openFileDialogCancelDrive").WithBrowser().DisableDriveFs(),
         TestCase("openFileDialogCancelDrive").WithBrowser().EnableDriveFs(),
-        TestCase("openFileDialogEscapeDrive").WithBrowser(),
+        TestCase("openFileDialogEscapeDrive").WithBrowser().DisableDriveFs(),
         TestCase("openFileDialogEscapeDrive").WithBrowser().EnableDriveFs(),
         TestCase("openFileDialogDriveOffline")
             .WithBrowser()
@@ -608,14 +623,14 @@
     CopyBetweenWindows, /* copy_between_windows.js */
     FilesAppBrowserTest,
     ::testing::Values(
-        TestCase("copyBetweenWindowsLocalToDrive"),
+        TestCase("copyBetweenWindowsLocalToDrive").DisableDriveFs(),
         TestCase("copyBetweenWindowsLocalToDrive").EnableDriveFs(),
         TestCase("copyBetweenWindowsLocalToUsb"),
-        TestCase("copyBetweenWindowsUsbToDrive"),
+        TestCase("copyBetweenWindowsUsbToDrive").DisableDriveFs(),
         TestCase("copyBetweenWindowsUsbToDrive").EnableDriveFs(),
-        TestCase("copyBetweenWindowsDriveToLocal"),
+        TestCase("copyBetweenWindowsDriveToLocal").DisableDriveFs(),
         TestCase("copyBetweenWindowsDriveToLocal").EnableDriveFs(),
-        TestCase("copyBetweenWindowsDriveToUsb"),
+        TestCase("copyBetweenWindowsDriveToUsb").DisableDriveFs(),
         TestCase("copyBetweenWindowsDriveToUsb").EnableDriveFs(),
         TestCase("copyBetweenWindowsUsbToLocal")));
 
@@ -624,7 +639,7 @@
     FilesAppBrowserTest,
     ::testing::Values(TestCase("showGridViewDownloads"),
                       TestCase("showGridViewDownloads").InGuestMode(),
-                      TestCase("showGridViewDrive"),
+                      TestCase("showGridViewDrive").DisableDriveFs(),
                       TestCase("showGridViewDrive").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
@@ -641,9 +656,9 @@
     ::testing::Values(
         TestCase("showHiddenFilesDownloads"),
         TestCase("showHiddenFilesDownloads").InGuestMode(),
-        TestCase("showHiddenFilesDrive"),
+        TestCase("showHiddenFilesDrive").DisableDriveFs(),
         TestCase("showHiddenFilesDrive").EnableDriveFs(),
-        TestCase("toogleGoogleDocsDrive"),
+        TestCase("toogleGoogleDocsDrive").DisableDriveFs(),
         TestCase("toogleGoogleDocsDrive").EnableDriveFs(),
         TestCase("showPasteIntoCurrentFolder"),
         TestCase("showSelectAllInCurrentFolder"),
@@ -682,22 +697,22 @@
     FilesAppBrowserTest,
     ::testing::Values(
         TestCase("recentsDownloads"),
-        TestCase("recentsDrive"),
+        TestCase("recentsDrive").DisableDriveFs(),
         TestCase("recentsDrive").EnableDriveFs(),
-        TestCase("recentsDownloadsAndDrive"),
+        TestCase("recentsDownloadsAndDrive").DisableDriveFs(),
         TestCase("recentsDownloadsAndDrive").EnableDriveFs(),
-        TestCase("recentsDownloadsAndDriveWithOverlap"),
+        TestCase("recentsDownloadsAndDriveWithOverlap").DisableDriveFs(),
         TestCase("recentsDownloadsAndDriveWithOverlap").EnableDriveFs()));
 
 WRAPPED_INSTANTIATE_TEST_CASE_P(
     Metadata, /* metadata.js */
     FilesAppBrowserTest,
     ::testing::Values(TestCase("metadataDownloads"),
-                      TestCase("metadataDrive"),
+                      TestCase("metadataDrive").DisableDriveFs(),
                       TestCase("metadataDrive").EnableDriveFs(),
-                      TestCase("metadataTeamDrives"),
+                      TestCase("metadataTeamDrives").DisableDriveFs(),
                       TestCase("metadataTeamDrives").EnableDriveFs(),
-                      TestCase("metadataLargeDrive"),
+                      TestCase("metadataLargeDrive").DisableDriveFs(),
                       TestCase("metadataLargeDrive").EnableDriveFs()));
 
 // Structure to describe an account info.
@@ -798,6 +813,8 @@
 
   GuestMode GetGuestMode() const override { return NOT_IN_GUEST_MODE; }
 
+  bool GetEnableDriveFs() const override { return false; }
+
   const char* GetTestCaseName() const override {
     return test_case_name_.c_str();
   }
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
index 9184e27..b1279a3 100644
--- a/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
+++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
@@ -1129,7 +1129,7 @@
 }
 
 bool FileManagerBrowserTestBase::GetEnableDriveFs() const {
-  return false;
+  return true;
 }
 
 bool FileManagerBrowserTestBase::GetRequiresStartupBrowser() const {
diff --git a/chrome/browser/chromeos/locale_change_guard.cc b/chrome/browser/chromeos/locale_change_guard.cc
index d5a76b3a..8e1dae9 100644
--- a/chrome/browser/chromeos/locale_change_guard.cc
+++ b/chrome/browser/chromeos/locale_change_guard.cc
@@ -168,7 +168,7 @@
 
     // Ensure that synchronization does not change the locale to a value not
     // allowed by enterprise policy.
-    if (!chromeos::locale_util::IsAllowedUILanguage(to_locale, prefs))
+    if (!chromeos::locale_util::IsAllowedUILocale(to_locale, prefs))
       prefs->SetString(language::prefs::kApplicationLocale, cur_locale);
     return;
   }
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index 9922263..9a6134cb 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -247,13 +247,13 @@
       input_method_ids, &candidates);
   for (size_t i = 0; i < candidates.size(); ++i) {
     const std::string& candidate = candidates[i];
-    // Add a candidate if it's not yet in language_codes and is allowed.
+    // Skip if it's already in language_codes.
     if (std::count(language_codes.begin(), language_codes.end(), candidate) ==
-            0 &&
-        locale_util::IsAllowedLanguage(candidate, prefs)) {
+        0) {
       language_codes.push_back(candidate);
     }
   }
+
   // Save the preferred languages in the user's preferences.
   prefs->SetString(prefs::kLanguagePreferredLanguages,
                    base::JoinString(language_codes, ","));
@@ -792,7 +792,7 @@
   if (user_manager->GetLoggedInUsers().size() != 1)
     return false;
 
-  PrefService* prefs = profile->GetPrefs();
+  const PrefService* prefs = profile->GetPrefs();
   if (prefs == NULL)
     return false;
 
@@ -808,7 +808,7 @@
 
   const std::string* account_locale = NULL;
   if (pref_locale.empty() && user->has_gaia_account() &&
-      prefs->GetList(prefs::kAllowedLanguages)->GetList().empty()) {
+      prefs->GetList(prefs::kAllowedUILocales)->GetList().empty()) {
     if (user->GetAccountLocale() == NULL)
       return false;  // wait until Account profile is loaded.
     account_locale = user->GetAccountLocale();
@@ -833,9 +833,9 @@
           ? Profile::APP_LOCALE_CHANGED_VIA_PUBLIC_SESSION_LOGIN
           : Profile::APP_LOCALE_CHANGED_VIA_LOGIN;
 
-  // check if pref_locale is allowed by policy (AllowedLanguages)
-  if (!chromeos::locale_util::IsAllowedUILanguage(pref_locale, prefs)) {
-    pref_locale = chromeos::locale_util::GetAllowedFallbackUILanguage(prefs);
+  // check if pref_locale is allowed by policy (AllowedUILocales)
+  if (!chromeos::locale_util::IsAllowedUILocale(pref_locale, prefs)) {
+    pref_locale = chromeos::locale_util::GetAllowedFallbackUILocale(prefs);
     app_locale_changed_via = Profile::APP_LOCALE_CHANGED_VIA_POLICY;
   }
 
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc
index 159906a..bba10ba 100644
--- a/chrome/browser/chromeos/preferences.cc
+++ b/chrome/browser/chromeos/preferences.cc
@@ -19,7 +19,6 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
-#include "chrome/browser/chromeos/base/locale_util.h"
 #include "chrome/browser/chromeos/drive/file_system_util.h"
 #include "chrome/browser/chromeos/input_method/input_method_syncer.h"
 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
@@ -327,8 +326,6 @@
   registry->RegisterStringPref(prefs::kLanguagePreviousInputMethod, "");
   registry->RegisterListPref(prefs::kLanguageAllowedInputMethods,
                              std::make_unique<base::ListValue>());
-  registry->RegisterListPref(prefs::kAllowedLanguages,
-                             std::make_unique<base::ListValue>());
   registry->RegisterStringPref(prefs::kLanguagePreferredLanguages,
                                kFallbackInputMethodLocale);
   registry->RegisterStringPref(prefs::kLanguagePreloadEngines,
@@ -544,9 +541,6 @@
                               prefs, callback);
   allowed_input_methods_.Init(prefs::kLanguageAllowedInputMethods, prefs,
                               callback);
-  allowed_languages_.Init(prefs::kAllowedLanguages, prefs, callback);
-  preferred_languages_.Init(prefs::kLanguagePreferredLanguages, prefs,
-                            callback);
   ime_menu_activated_.Init(prefs::kLanguageImeMenuActivated, prefs, callback);
   // Notifies the system tray to remove the IME items.
   if (base::FeatureList::IsEnabled(features::kOptInImeMenu) &&
@@ -817,15 +811,6 @@
           base::JoinString(ime_state_->GetActiveInputMethodIds(), ","));
     }
   }
-  if (reason != REASON_PREF_CHANGED || pref_name == prefs::kAllowedLanguages)
-    locale_util::RemoveDisallowedLanguagesFromPreferred(prefs_);
-
-  if (reason != REASON_PREF_CHANGED ||
-      pref_name == prefs::kLanguagePreferredLanguages) {
-    // In case setting has been changed with sync it can contain disallowed
-    // values.
-    locale_util::RemoveDisallowedLanguagesFromPreferred(prefs_);
-  }
 
   if (reason == REASON_INITIALIZATION)
     SetInputMethodList();
diff --git a/chrome/browser/chromeos/preferences.h b/chrome/browser/chromeos/preferences.h
index 5b5f683b..931d0d5 100644
--- a/chrome/browser/chromeos/preferences.h
+++ b/chrome/browser/chromeos/preferences.h
@@ -127,9 +127,6 @@
   BooleanPrefMember mouse_reverse_scroll_;
   FilePathPrefMember download_default_directory_;
 
-  StringListPrefMember allowed_languages_;
-  StringPrefMember preferred_languages_;
-
   // Input method preferences.
   StringPrefMember preload_engines_;
   StringPrefMember current_input_method_;
diff --git a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
index 804e993..19df435 100644
--- a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
+++ b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
@@ -87,14 +87,13 @@
 }
 
 // Returns the set of allowed UI locales.
-std::unordered_set<std::string> GetAllowedLanguages(PrefService* prefs) {
-  std::unordered_set<std::string> allowed_languages;
+std::unordered_set<std::string> GetAllowedUILocales(PrefService* prefs) {
+  std::unordered_set<std::string> allowed_ui_locales;
   const base::Value::ListStorage& pref_value =
-      prefs->GetList(prefs::kAllowedLanguages)->GetList();
+      prefs->GetList(prefs::kAllowedUILocales)->GetList();
   for (const base::Value& locale_value : pref_value)
-    allowed_languages.insert(locale_value.GetString());
-
-  return allowed_languages;
+    allowed_ui_locales.insert(locale_value.GetString());
+  return allowed_ui_locales;
 }
 
 // Sorts the input methods by the order of their associated languages. For
@@ -216,7 +215,7 @@
   std::unique_ptr<base::ListValue> language_list(new base::ListValue);
 #if defined(OS_CHROMEOS)
   const std::unordered_set<std::string> allowed_ui_locales(
-      GetAllowedLanguages(chrome_details_.GetProfile()->GetPrefs()));
+      GetAllowedUILocales(chrome_details_.GetProfile()->GetPrefs()));
 #endif  // defined(OS_CHROMEOS)
   for (const auto& entry : languages) {
     language_settings_private::Language language;
@@ -243,7 +242,7 @@
 #if defined(OS_CHROMEOS)
     if (!allowed_ui_locales.empty() &&
         allowed_ui_locales.count(language.code) == 0) {
-      language.is_prohibited_language.reset(new bool(true));
+      language.is_prohibited_ui_locale.reset(new bool(true));
     }
 #endif  // defined(OS_CHROMEOS)
 
diff --git a/chrome/browser/extensions/service_worker_apitest.cc b/chrome/browser/extensions/service_worker_apitest.cc
index 46f476a6..676fb47e2 100644
--- a/chrome/browser/extensions/service_worker_apitest.cc
+++ b/chrome/browser/extensions/service_worker_apitest.cc
@@ -987,7 +987,7 @@
     content::StoragePartition* storage_partition =
         content::BrowserContext::GetDefaultStoragePartition(
             browser()->profile());
-    content::StopServiceWorkerForPattern(
+    content::StopServiceWorkerForScope(
         storage_partition->GetServiceWorkerContext(),
         // The service worker is registered at the top level scope.
         extension->url(), run_loop.QuitClosure());
@@ -1034,7 +1034,7 @@
     content::StoragePartition* storage_partition =
         content::BrowserContext::GetDefaultStoragePartition(
             browser()->profile());
-    content::StopServiceWorkerForPattern(
+    content::StopServiceWorkerForScope(
         storage_partition->GetServiceWorkerContext(),
         // The service worker is registered at the top level scope.
         extension->url(), run_loop.QuitClosure());
@@ -1093,7 +1093,7 @@
     content::StoragePartition* storage_partition =
         content::BrowserContext::GetDefaultStoragePartition(
             browser()->profile());
-    content::StopServiceWorkerForPattern(
+    content::StopServiceWorkerForScope(
         storage_partition->GetServiceWorkerContext(),
         // The service worker is registered at the top level scope.
         extension->url(), run_loop.QuitClosure());
@@ -1387,7 +1387,7 @@
     content::StoragePartition* storage_partition =
         content::BrowserContext::GetDefaultStoragePartition(
             browser()->profile());
-    content::StopServiceWorkerForPattern(
+    content::StopServiceWorkerForScope(
         storage_partition->GetServiceWorkerContext(),
         // The service worker is registered at the top level scope.
         extension->url(), run_loop.QuitClosure());
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index b9f2c3a3d..bbcfdc28 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -660,8 +660,8 @@
   { key::kUserNativePrintersAllowed,
     prefs::kUserNativePrintersAllowed,
     base::Value::Type::BOOLEAN },
-  { key::kAllowedLanguages,
-    prefs::kAllowedLanguages,
+  { key::kAllowedUILocales,
+    prefs::kAllowedUILocales,
     base::Value::Type::LIST },
   { key::kAllowedInputMethods,
     prefs::kLanguageAllowedInputMethods,
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index ee879f58..2983f9ca 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -1235,7 +1235,7 @@
 #endif
 
 #if defined(OS_CHROMEOS)
-IN_PROC_BROWSER_TEST_F(LoginPolicyTestBase, PRE_AllowedLanguages) {
+IN_PROC_BROWSER_TEST_F(LoginPolicyTestBase, PRE_AllowedUILocales) {
   SkipToLoginScreen();
   LogIn(kAccountId, kAccountPassword, kEmptyServices);
 
@@ -1252,13 +1252,13 @@
   // Set policy to only allow "fr" as locale.
   std::unique_ptr<base::DictionaryValue> policy =
       std::make_unique<base::DictionaryValue>();
-  base::ListValue allowed_languages;
-  allowed_languages.AppendString("fr");
-  policy->SetKey(key::kAllowedLanguages, std::move(allowed_languages));
+  base::ListValue allowed_ui_locales;
+  allowed_ui_locales.AppendString("fr");
+  policy->SetKey(key::kAllowedUILocales, std::move(allowed_ui_locales));
   user_policy_helper()->UpdatePolicy(*policy, base::DictionaryValue(), profile);
 }
 
-IN_PROC_BROWSER_TEST_F(LoginPolicyTestBase, AllowedLanguages) {
+IN_PROC_BROWSER_TEST_F(LoginPolicyTestBase, AllowedUILocales) {
   LogIn(kAccountId, kAccountPassword, kEmptyServices);
 
   const user_manager::User* const user =
@@ -1287,7 +1287,7 @@
 
   // Verifiy that the enforced locale is added into the list of
   // preferred languages.
-  EXPECT_EQ("fr", prefs->GetString(prefs::kLanguagePreferredLanguages));
+  EXPECT_EQ("en-US,fr", prefs->GetString(prefs::kLanguagePreferredLanguages));
 }
 
 IN_PROC_BROWSER_TEST_F(LoginPolicyTestBase, AllowedInputMethods) {
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
index 2913a5c..3bb5207d 100644
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -181,6 +181,8 @@
   registry->RegisterStringPref(prefs::kApplicationLocaleBackup, std::string());
   registry->RegisterStringPref(prefs::kApplicationLocaleAccepted,
                                std::string());
+  registry->RegisterListPref(prefs::kAllowedUILocales,
+                             std::make_unique<base::ListValue>());
 #endif
 
   registry->RegisterBooleanPref(prefs::kDataSaverEnabled, false);
diff --git a/chrome/browser/profiles/profile.h b/chrome/browser/profiles/profile.h
index 897a23b..e52b848 100644
--- a/chrome/browser/profiles/profile.h
+++ b/chrome/browser/profiles/profile.h
@@ -232,7 +232,7 @@
     APP_LOCALE_CHANGED_VIA_LOGIN,
     // From login to a public session.
     APP_LOCALE_CHANGED_VIA_PUBLIC_SESSION_LOGIN,
-    // From AllowedLanguages policy
+    // From AllowedUILocales policy
     APP_LOCALE_CHANGED_VIA_POLICY,
     // Source unknown.
     APP_LOCALE_CHANGED_VIA_UNKNOWN
diff --git a/chrome/browser/resources/chromeos/login/screen_error_message.css b/chrome/browser/resources/chromeos/login/screen_error_message.css
index eada576..d4615c1 100644
--- a/chrome/browser/resources/chromeos/login/screen_error_message.css
+++ b/chrome/browser/resources/chromeos/login/screen_error_message.css
@@ -62,6 +62,10 @@
   text-decoration: none;
 }
 
+#error-message-md-footer {
+  overflow: scroll;
+}
+
 #offline-network-control {
   height: 200px;
   margin-bottom: 20px;
diff --git a/chrome/browser/resources/chromeos/login/screen_error_message.html b/chrome/browser/resources/chromeos/login/screen_error_message.html
index 9cdd56d..a2661f7dd 100644
--- a/chrome/browser/resources/chromeos/login/screen_error_message.html
+++ b/chrome/browser/resources/chromeos/login/screen_error_message.html
@@ -96,16 +96,6 @@
                      show-with-ui-state-supervised
                      show-with-ui-state-kiosk-mode"></span>
         </div>
-        <div id="offline-network-control-body"
-            class="show-with-ui-state-update
-                   show-with-ui-state-signin
-                   show-with-ui-state-supervised
-                   show-with-ui-state-kiosk-mode
-                   show-with-ui-state-auto-enrollment-error">
-          <network-select-login id="offline-network-control"
-              class="layout vertical flex" configure-connected>
-          </network-select-login>
-        </div>
         <div id="local-state-error-body"
             class="show-with-ui-state-local-state-error">
           <div i18n-content="localStateErrorText0"
@@ -137,6 +127,16 @@
             class="error-message-paragraph offline-login"></div>
         <div id="connecting-indicator"
             class="connecting-indicator error-message-paragraph"></div>
+        <div id="offline-network-control-body"
+            class="show-with-ui-state-update
+                   show-with-ui-state-signin
+                   show-with-ui-state-supervised
+                   show-with-ui-state-kiosk-mode
+                   show-with-ui-state-auto-enrollment-error">
+          <network-select-login id="offline-network-control"
+              class="layout vertical flex" configure-connected>
+          </network-select-login>
+        </div>
       </div>
       <div id="error-message-md-footer-spacer" class="flex"></div>
       <div id="buttons" class="layout horizontal center end-justified">
diff --git a/chrome/browser/resources/settings/languages_page/add_languages_dialog.js b/chrome/browser/resources/settings/languages_page/add_languages_dialog.js
index 610e3d7..77c6b94a 100644
--- a/chrome/browser/resources/settings/languages_page/add_languages_dialog.js
+++ b/chrome/browser/resources/settings/languages_page/add_languages_dialog.js
@@ -84,9 +84,15 @@
     const filterValue =
         this.filterValue_ ? this.filterValue_.toLowerCase() : null;
     return this.languages.supported.filter(language => {
-      if (!this.languageHelper.canEnableLanguage(language))
+      const isAvailableLanguage =
+          !this.languageHelper.isLanguageEnabled(language.code);
+
+      if (!isAvailableLanguage)
         return false;
 
+      if (this.languageHelper.isLanguageCodeForArcIme(language.code))
+        return false;  // internal use only
+
       if (filterValue === null)
         return true;
 
diff --git a/chrome/browser/resources/settings/languages_page/languages.js b/chrome/browser/resources/settings/languages_page/languages.js
index 50a2d02..6c81d0d 100644
--- a/chrome/browser/resources/settings/languages_page/languages.js
+++ b/chrome/browser/resources/settings/languages_page/languages.js
@@ -427,7 +427,7 @@
       language.supportsUI = !!language.supportsUI;
       language.supportsTranslate = !!language.supportsTranslate;
       language.supportsSpellcheck = !!language.supportsSpellcheck;
-      language.isProhibitedLanguage = !!language.isProhibitedLanguage;
+      language.isProhibitedUILocale = !!language.isProhibitedUILocale;
       this.supportedLanguageMap_.set(language.code, language);
     }
 
@@ -811,17 +811,6 @@
   },
 
   /**
-   * @param {!chrome.languageSettingsPrivate.Language} language
-   * @return {boolean} true if the given language can be enabled
-   */
-  canEnableLanguage(language) {
-    return !(
-        this.isLanguageEnabled(language.code) ||
-        language.isProhibitedLanguage ||
-        this.isLanguageCodeForArcIme(language.code) /* internal use only */);
-  },
-
-  /**
    * Moves the language in the list of enabled languages either up (toward the
    * front of the list) or down (toward the back).
    * @param {string} languageCode
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.html b/chrome/browser/resources/settings/languages_page/languages_page.html
index 948ac4ecd1..a979b391 100644
--- a/chrome/browser/resources/settings/languages_page/languages_page.html
+++ b/chrome/browser/resources/settings/languages_page/languages_page.html
@@ -177,7 +177,6 @@
             </template>
             <div class="list-item">
               <a is="action-link" class="list-button" id="addLanguages"
-                  disabled="[[!canEnableSomeSupportedLanguage_(languages)]]"
                   on-click="onAddLanguagesTap_">
                 $i18n{addLanguages}
               </a>
@@ -334,7 +333,7 @@
                       detailLanguage_, languages.prospectiveUILanguage)]]">
                 <span>$i18n{displayInThisLanguage}</span>
                 <iron-icon class="policy" icon="cr20:domain" hidden$="[[
-                    !detailLanguage_.language.isProhibitedLanguage]]">
+                    !detailLanguage_.language.isProhibitedUILocale]]">
                 </iron-icon>
               </cr-checkbox>
 </if>
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.js b/chrome/browser/resources/settings/languages_page/languages_page.js
index f365561..1e7beeb2 100644
--- a/chrome/browser/resources/settings/languages_page/languages_page.js
+++ b/chrome/browser/resources/settings/languages_page/languages_page.js
@@ -155,19 +155,6 @@
   },
 
   /**
-   * Checks if there are supported languages that are not enabled but can be
-   * enabled.
-   * @param {LanguagesModel|undefined} languages
-   * @return {boolean} True if there is at least one available language.
-   * @private
-   */
-  canEnableSomeSupportedLanguage_: function(languages) {
-    return languages == undefined || languages.supported.some(language => {
-      return this.languageHelper.canEnableLanguage(language);
-    });
-  },
-
-  /**
    * Used to determine which "Move" buttons to show for ordering enabled
    * languages.
    * @param {number} n
@@ -317,9 +304,9 @@
     if (languageState.language.code == prospectiveUILanguage)
       return true;
 
-    // Check if the language is prohibited by the current "AllowedLanguages"
+    // Check if the language is prohibited by the current "AllowedUILocales"
     // policy.
-    if (languageState.language.isProhibitedLanguage)
+    if (languageState.language.isProhibitedUILocale)
       return true;
 
     // Otherwise, the prospective language can be changed to this language.
diff --git a/chrome/browser/resources/settings/languages_page/languages_types.js b/chrome/browser/resources/settings/languages_page/languages_types.js
index e86905d..2186c69 100644
--- a/chrome/browser/resources/settings/languages_page/languages_types.js
+++ b/chrome/browser/resources/settings/languages_page/languages_types.js
@@ -132,12 +132,6 @@
   canDisableLanguage(languageCode) {}
 
   /**
-   * @param {!chrome.languageSettingsPrivate.Language} language
-   * @return {boolean} true if the given language can be enabled
-   */
-  canEnableLanguage(language) {}
-
-  /**
    * Moves the language in the list of enabled languages by the given offset.
    * @param {string} languageCode
    * @param {boolean} upDirection True if we need to move toward the front,
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html
index 3ca1d8b..397ec6d 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -96,7 +96,7 @@
             label="$i18n{signinAllowedTitle}"
             sub-label="$i18n{signinAllowedDescription}"
             on-settings-boolean-control-change="onSigninAllowedChange_"
-            disabled="[[syncStatus.signedIn]]">
+            no-set-pref>
         </settings-toggle-button>
 </if><!-- not chromeos -->
         <template is="dom-if" if="[[!unifiedConsentEnabled_]]">
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.js b/chrome/browser/resources/settings/privacy_page/privacy_page.js
index 66e99c1..bf17f64 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.js
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.js
@@ -368,7 +368,15 @@
 
   /** @private */
   onSigninAllowedChange_: function() {
-    this.showRestart_ = true;
+    if (this.syncStatus.signedIn && !this.$.signinAllowedToggle.checked) {
+      // Switch the toggle back on and route to people_page's disconnect dialog.
+      this.$.signinAllowedToggle.checked = true;
+      settings.navigateTo(settings.routes.SIGN_OUT);
+    } else {
+      /** @type {!SettingsToggleButtonElement} */ (this.$.signinAllowedToggle)
+          .sendPrefChange();
+      this.showRestart_ = true;
+    }
   },
 
   /**
diff --git a/chrome/browser/ui/views/crostini/crostini_installer_view.cc b/chrome/browser/ui/views/crostini/crostini_installer_view.cc
index b3354d2..6a08c9cb 100644
--- a/chrome/browser/ui/views/crostini/crostini_installer_view.cc
+++ b/chrome/browser/ui/views/crostini/crostini_installer_view.cc
@@ -44,7 +44,7 @@
 #include "ui/views/layout/layout_provider.h"
 #include "ui/views/window/dialog_client_view.h"
 
-using crostini::ConciergeClientResult;
+using crostini::CrostiniResult;
 
 namespace {
 CrostiniInstallerView* g_crostini_installer_view = nullptr;
@@ -200,10 +200,10 @@
   Navigate(&params);
 }
 
-void CrostiniInstallerView::OnComponentLoaded(ConciergeClientResult result) {
+void CrostiniInstallerView::OnComponentLoaded(CrostiniResult result) {
   DCHECK_EQ(state_, State::INSTALL_IMAGE_LOADER);
 
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to install the cros-termina component";
     HandleError(
         l10n_util::GetStringUTF16(IDS_CROSTINI_INSTALLER_LOAD_TERMINA_ERROR),
@@ -215,9 +215,9 @@
   StepProgress();
 }
 
-void CrostiniInstallerView::OnConciergeStarted(ConciergeClientResult result) {
+void CrostiniInstallerView::OnConciergeStarted(CrostiniResult result) {
   DCHECK_EQ(state_, State::START_CONCIERGE);
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to install start Concierge with error code: "
                << static_cast<int>(result);
     HandleError(
@@ -230,9 +230,9 @@
   StepProgress();
 }
 
-void CrostiniInstallerView::OnDiskImageCreated(ConciergeClientResult result) {
+void CrostiniInstallerView::OnDiskImageCreated(CrostiniResult result) {
   DCHECK_EQ(state_, State::CREATE_DISK_IMAGE);
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to create disk imagewith error code: "
                << static_cast<int>(result);
     HandleError(l10n_util::GetStringUTF16(
@@ -245,9 +245,9 @@
   StepProgress();
 }
 
-void CrostiniInstallerView::OnVmStarted(ConciergeClientResult result) {
+void CrostiniInstallerView::OnVmStarted(CrostiniResult result) {
   DCHECK_EQ(state_, State::START_TERMINA_VM);
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to start Termina VM with error code: "
                << static_cast<int>(result);
     HandleError(l10n_util::GetStringUTF16(
@@ -267,18 +267,18 @@
   StepProgress();
 }
 
-void CrostiniInstallerView::OnContainerCreated(ConciergeClientResult result) {
+void CrostiniInstallerView::OnContainerCreated(CrostiniResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   DCHECK_EQ(state_, State::CREATE_CONTAINER);
   UpdateState(State::START_CONTAINER);
   StepProgress();
 }
 
-void CrostiniInstallerView::OnContainerStarted(ConciergeClientResult result) {
+void CrostiniInstallerView::OnContainerStarted(CrostiniResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   DCHECK_EQ(state_, State::START_CONTAINER);
 
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to start container with error code: "
                << static_cast<int>(result);
     HandleError(
@@ -291,11 +291,11 @@
   StepProgress();
 }
 
-void CrostiniInstallerView::OnSshKeysFetched(ConciergeClientResult result) {
+void CrostiniInstallerView::OnSshKeysFetched(CrostiniResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   DCHECK_EQ(state_, State::FETCH_SSH_KEYS);
 
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to fetch ssh keys with error code: "
                << static_cast<int>(result);
     HandleError(
@@ -430,10 +430,9 @@
   GetWidget()->GetRootView()->Layout();
 }
 
-void CrostiniInstallerView::MountContainerFinished(
-    ConciergeClientResult result) {
+void CrostiniInstallerView::MountContainerFinished(CrostiniResult result) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (result != ConciergeClientResult::SUCCESS) {
+  if (result != CrostiniResult::SUCCESS) {
     LOG(ERROR) << "Failed to mount container with error code: "
                << static_cast<int>(result);
     HandleError(
diff --git a/chrome/browser/ui/views/crostini/crostini_installer_view.h b/chrome/browser/ui/views/crostini/crostini_installer_view.h
index a50a53df..ce66eb9ae 100644
--- a/chrome/browser/ui/views/crostini/crostini_installer_view.h
+++ b/chrome/browser/ui/views/crostini/crostini_installer_view.h
@@ -22,7 +22,7 @@
 }  // namespace views
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }  // namespace crostini
 
 class Profile;
@@ -66,14 +66,14 @@
   void LinkClicked(views::Link* source, int event_flags) override;
 
   // crostini::CrostiniManager::RestartObserver
-  void OnComponentLoaded(crostini::ConciergeClientResult result) override;
-  void OnConciergeStarted(crostini::ConciergeClientResult result) override;
-  void OnDiskImageCreated(crostini::ConciergeClientResult result) override;
-  void OnVmStarted(crostini::ConciergeClientResult result) override;
+  void OnComponentLoaded(crostini::CrostiniResult result) override;
+  void OnConciergeStarted(crostini::CrostiniResult result) override;
+  void OnDiskImageCreated(crostini::CrostiniResult result) override;
+  void OnVmStarted(crostini::CrostiniResult result) override;
   void OnContainerDownloading(int32_t download_percent) override;
-  void OnContainerCreated(crostini::ConciergeClientResult result) override;
-  void OnContainerStarted(crostini::ConciergeClientResult result) override;
-  void OnSshKeysFetched(crostini::ConciergeClientResult result) override;
+  void OnContainerCreated(crostini::CrostiniResult result) override;
+  void OnContainerStarted(crostini::CrostiniResult result) override;
+  void OnSshKeysFetched(crostini::CrostiniResult result) override;
 
   static CrostiniInstallerView* GetActiveViewForTesting();
 
@@ -99,7 +99,7 @@
   ~CrostiniInstallerView() override;
 
   void HandleError(const base::string16& error_message, SetupResult result);
-  void MountContainerFinished(crostini::ConciergeClientResult result);
+  void MountContainerFinished(crostini::CrostiniResult result);
   void ShowLoginShell();
   void StepProgress();
   void UpdateState(State new_state);
diff --git a/chrome/browser/ui/views/crostini/crostini_uninstaller_view.cc b/chrome/browser/ui/views/crostini/crostini_uninstaller_view.cc
index 34e4de2a..ad2d337 100644
--- a/chrome/browser/ui/views/crostini/crostini_uninstaller_view.cc
+++ b/chrome/browser/ui/views/crostini/crostini_uninstaller_view.cc
@@ -155,8 +155,8 @@
 }
 
 void CrostiniUninstallerView::UninstallCrostiniFinished(
-    crostini::ConciergeClientResult result) {
-  if (result != crostini::ConciergeClientResult::SUCCESS) {
+    crostini::CrostiniResult result) {
+  if (result != crostini::CrostiniResult::SUCCESS) {
     HandleError(l10n_util::GetStringUTF16(IDS_CROSTINI_UNINSTALLER_ERROR));
     return;
   } else {
diff --git a/chrome/browser/ui/views/crostini/crostini_uninstaller_view.h b/chrome/browser/ui/views/crostini/crostini_uninstaller_view.h
index e47c1ff..e8143e0 100644
--- a/chrome/browser/ui/views/crostini/crostini_uninstaller_view.h
+++ b/chrome/browser/ui/views/crostini/crostini_uninstaller_view.h
@@ -13,7 +13,7 @@
 }  // namespace views
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }  // namespace crostini
 
 class Profile;
@@ -55,7 +55,7 @@
   ~CrostiniUninstallerView() override;
 
   void HandleError(const base::string16& error_message);
-  void UninstallCrostiniFinished(crostini::ConciergeClientResult result);
+  void UninstallCrostiniFinished(crostini::CrostiniResult result);
   void RecordUninstallResultHistogram(UninstallResult result);
 
   State state_ = State::PROMPT;
diff --git a/chrome/browser/ui/views/crostini/crostini_upgrade_view.h b/chrome/browser/ui/views/crostini/crostini_upgrade_view.h
index 62b00963..671fa31 100644
--- a/chrome/browser/ui/views/crostini/crostini_upgrade_view.h
+++ b/chrome/browser/ui/views/crostini/crostini_upgrade_view.h
@@ -8,7 +8,7 @@
 #include "ui/views/window/dialog_delegate.h"
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }  // namespace crostini
 
 class Profile;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index 149ff54..4b8beae 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -683,8 +683,10 @@
 
 // ui::MaterialDesignControllerObserver:
 void ToolbarView::OnMdModeChanged() {
-  LoadImages();
-  PreferredSizeChanged();
+  if (is_display_mode_normal()) {
+    LoadImages();
+    PreferredSizeChanged();
+  }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -790,6 +792,8 @@
 }
 
 void ToolbarView::LoadImages() {
+  DCHECK(is_display_mode_normal());
+
   const ui::ThemeProvider* tp = GetThemeProvider();
 
   const SkColor normal_color =
diff --git a/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc b/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc
index 986898a5..908dff82 100644
--- a/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc
+++ b/chrome/browser/ui/webui/chromeos/login/discover/discover_window_manager.cc
@@ -19,6 +19,8 @@
 #include "chrome/grit/generated_resources.h"
 #include "content/public/browser/web_contents.h"
 #include "ui/aura/client/aura_constants.h"
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
 #include "ui/gfx/geometry/rect.h"
 #include "url/gurl.h"
 
@@ -87,6 +89,11 @@
   window->SetProperty(kOverrideWindowIconResourceIdKey, IDR_DISCOVER_APP_192);
   window->SetProperty(aura::client::kAppType,
                       static_cast<int>(ash::AppType::CHROME_APP));
+  // Manually position the window in center of the screen.
+  gfx::Rect center_in_screen =
+      display::Screen::GetScreen()->GetDisplayNearestWindow(window).work_area();
+  center_in_screen.ClampToCenteredSize(window->bounds().size());
+  window->SetBounds(center_in_screen);
 
   for (DiscoverWindowManagerObserver& observer : observers_)
     observer.OnNewDiscoverWindow(params.browser);
diff --git a/chrome/browser/ui/webui/settings/chromeos/crostini_handler.h b/chrome/browser/ui/webui/settings/chromeos/crostini_handler.h
index a43ff98..37b71f5 100644
--- a/chrome/browser/ui/webui/settings/chromeos/crostini_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/crostini_handler.h
@@ -11,7 +11,7 @@
 class Profile;
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }
 
 namespace chromeos {
diff --git a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc
index e2b4af3..b37092ec 100644
--- a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc
@@ -341,7 +341,7 @@
                      weak_ptr_factory_.GetWeakPtr()));
 }
 
-void StorageHandler::OnGetCrostiniSize(crostini::ConciergeClientResult result,
+void StorageHandler::OnGetCrostiniSize(crostini::CrostiniResult result,
                                        int64_t size) {
   updating_crostini_size_ = false;
   FireWebUIListener("storage-crostini-size-changed",
diff --git a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h
index 8d5f7b0..7021667 100644
--- a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.h
@@ -22,7 +22,7 @@
 class Profile;
 
 namespace crostini {
-enum class ConciergeClientResult;
+enum class CrostiniResult;
 }  // namespace crostini
 
 namespace chromeos {
@@ -94,7 +94,7 @@
   void UpdateCrostiniSize();
 
   // Callback to update the UI about Crostini VMs and their apps and cache.
-  void OnGetCrostiniSize(crostini::ConciergeClientResult result, int64_t size);
+  void OnGetCrostiniSize(crostini::CrostiniResult result, int64_t size);
 
   // Requests updating the total size of other users' data.
   void UpdateOtherUsersSize();
diff --git a/chrome/browser/ui/webui/settings/languages_handler.cc b/chrome/browser/ui/webui/settings/languages_handler.cc
index 68aa5288..0346fa1 100644
--- a/chrome/browser/ui/webui/settings/languages_handler.cc
+++ b/chrome/browser/ui/webui/settings/languages_handler.cc
@@ -70,6 +70,14 @@
   std::string language_code;
   CHECK(args->GetString(0, &language_code));
 
+#if defined(OS_CHROMEOS)
+  // check if prospectiveUILanguage is allowed by policy (AllowedUILocales)
+  if (!chromeos::locale_util::IsAllowedUILocale(language_code,
+                                                profile_->GetPrefs())) {
+    return;
+  }
+#endif
+
 #if defined(OS_WIN)
   PrefService* prefs = g_browser_process->local_state();
   prefs->SetString(language::prefs::kApplicationLocale, language_code);
diff --git a/chrome/common/extensions/api/language_settings_private.idl b/chrome/common/extensions/api/language_settings_private.idl
index e0492c4..3a30cb0 100644
--- a/chrome/common/extensions/api/language_settings_private.idl
+++ b/chrome/common/extensions/api/language_settings_private.idl
@@ -33,8 +33,8 @@
     boolean? supportsTranslate;
 
     // Whether this language is prohibited as a UI locale (not in the list of
-    // the 'AllowedLanguages' policy). Defaults to false.
-    boolean? isProhibitedLanguage;
+    // the 'AllowedUILocales' policy). Defaults to false.
+    boolean? isProhibitedUILocale;
   };
 
   dictionary SpellcheckDictionaryStatus {
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index cb67a98..df665b8 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -231,7 +231,7 @@
 
 // List of locales the UI is allowed to be displayed in by policy. The list is
 // empty if no restriction is being enforced.
-const char kAllowedLanguages[] = "intl.allowed_languages";
+const char kAllowedUILocales[] = "intl.allowed_ui_locales";
 #endif
 
 // The default character encoding to assume for a web page in the
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index b4f31a3..5864d9d 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -70,7 +70,7 @@
 extern const char kApplicationLocaleBackup[];
 extern const char kApplicationLocaleAccepted[];
 extern const char kOwnerLocale[];
-extern const char kAllowedLanguages[];
+extern const char kAllowedUILocales[];
 #endif
 
 extern const char kDefaultCharset[];
diff --git a/chrome/renderer/extensions/automation_internal_custom_bindings.cc b/chrome/renderer/extensions/automation_internal_custom_bindings.cc
index eb518ec0..dfae13e 100644
--- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc
+++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc
@@ -70,10 +70,10 @@
 }
 
 ui::AXNode* GetContainingTable(ui::AXNode* node) {
-  while (node && !ui::IsTableLikeRole(node->data().role))
+  while (node && !ui::IsTableLike(node->data().role))
     node = node->parent();
 
-  if (node && ui::IsTableLikeRole(node->data().role))
+  if (ui::IsTableLike(node->data().role))
     return node;
 
   return nullptr;
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 35a226c3..30876a0 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -3303,12 +3303,12 @@
     ]
   },
 
-  "AllowedLanguages": {
+  "AllowedUILocales": {
     "os": ["chromeos"],
     "can_be_recommended": false,
-    "test_policy": { "AllowedLanguages": ["en-US", "de"] },
+    "test_policy": { "AllowedUILocales": ["en-US", "de"] },
     "pref_mappings": [
-      { "pref": "intl.allowed_languages" }
+      { "pref": "intl.allowed_ui_locales" }
     ]
   },
 
diff --git a/chrome/test/data/webui/settings/privacy_page_test.js b/chrome/test/data/webui/settings/privacy_page_test.js
index 1333097..b14d940 100644
--- a/chrome/test/data/webui/settings/privacy_page_test.js
+++ b/chrome/test/data/webui/settings/privacy_page_test.js
@@ -125,6 +125,12 @@
 
       setup(function() {
         page = document.createElement('settings-privacy-page');
+        page.prefs = {
+          signin: {
+            allowed_on_next_startup:
+                {type: chrome.settingsPrivate.PrefType.BOOLEAN, value: true},
+          },
+        };
         document.body.appendChild(page);
       });
 
@@ -150,19 +156,44 @@
       if (!cr.isChromeOS) {
         test('signinAllowedToggle', function() {
           const toggle = page.$.signinAllowedToggle;
+
           page.syncStatus = {signedIn: false};
-          // When the user is signed out, the toggle is enabled.
-          assertFalse(toggle.disabled);
+          // Check initial setup.
+          assertTrue(toggle.checked);
+          assertTrue(page.prefs.signin.allowed_on_next_startup.value);
+          assertFalse(page.$.toast.open);
+
+          // When the user is signed out, clicking the toggle should work
+          // normally and the restart toast should be opened.
+          toggle.click();
+          assertFalse(toggle.checked);
+          assertFalse(page.prefs.signin.allowed_on_next_startup.value);
+          assertTrue(page.$.toast.open);
+
+          // Clicking it again, turns the toggle back on. The toast remains
+          // open.
+          toggle.click();
+          assertTrue(toggle.checked);
+          assertTrue(page.prefs.signin.allowed_on_next_startup.value);
+          assertTrue(page.$.toast.open);
+
+          // Reset toast.
+          page.showRestart_ = false;
+          assertFalse(page.$.toast.open);
 
           page.syncStatus = {signedIn: true};
-          // When the user is signed in, the toggle is disabled.
-          assertTrue(toggle.disabled);
+          // When the user is signed in, clicking the toggle should open the
+          // sign-out dialog. The toggle should remain checked.
+          toggle.click();
+          assertTrue(toggle.checked);
+          assertTrue(page.prefs.signin.allowed_on_next_startup.value);
+          assertFalse(page.$.toast.open);
+          assertEquals(settings.routes.SIGN_OUT, settings.getCurrentRoute());
         });
       }
     });
   }
 
-
   function registerClearBrowsingDataTestsDice() {
     suite('ClearBrowsingDataDice', function() {
       /** @type {settings.TestClearBrowsingDataBrowserProxy} */
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 2d3f4bd..082e8462 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-11143.0.0
\ No newline at end of file
+11157.0.0
\ No newline at end of file
diff --git a/cloud_print/virtual_driver/win/port_monitor/BUILD.gn b/cloud_print/virtual_driver/win/port_monitor/BUILD.gn
index f63c3f8..5d21306f 100644
--- a/cloud_print/virtual_driver/win/port_monitor/BUILD.gn
+++ b/cloud_print/virtual_driver/win/port_monitor/BUILD.gn
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//build/config/compiler/compiler.gni")
 import("//chrome/process_version_rc_template.gni")
 
 assert(is_win)
@@ -60,15 +61,28 @@
 } else {
   # Make sure that we have a copy of gcp_portmon64.dll in the root out
   # directory.
-  copy("copy_gcp_portmon_dll") {
-    if (is_clang) {
-      gcp_portmon64_toolchain = "//build/toolchain/win:win_clang_x64"
-    } else {
-      gcp_portmon64_toolchain = "//build/toolchain/win:x64"
-    }
-    gcp_portmon64_label = ":port_monitor_dll($gcp_portmon64_toolchain)"
+  if (is_clang) {
+    gcp_portmon64_toolchain = "//build/toolchain/win:win_clang_x64"
+  } else {
+    gcp_portmon64_toolchain = "//build/toolchain/win:x64"
+  }
+  gcp_portmon64_label = ":port_monitor_dll($gcp_portmon64_toolchain)"
 
-    gcp_portmon64_out_dir = get_label_info(gcp_portmon64_label, "root_out_dir")
+  gcp_portmon64_out_dir = get_label_info(gcp_portmon64_label, "root_out_dir")
+
+  copy("copy_gcp_portmon_pdb") {
+    visibility = [ ":copy_gcp_portmon_dll" ]
+    sources = [
+      "$gcp_portmon64_out_dir/gcp_portmon64.dll.pdb",
+    ]
+    outputs = [
+      "$root_out_dir/{{source_file_part}}",
+    ]
+    deps = [
+      gcp_portmon64_label,
+    ]
+  }
+  copy("copy_gcp_portmon_dll") {
     sources = [
       "$gcp_portmon64_out_dir/gcp_portmon64.dll",
     ]
@@ -78,6 +92,9 @@
     deps = [
       gcp_portmon64_label,
     ]
+    if (symbol_level > 0) {
+      deps += [ ":copy_gcp_portmon_pdb" ]
+    }
   }
 }
 
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index a4a9386..10d29f2 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -12586,13 +12586,13 @@
       This policy is not available on Windows instances that are not joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain.''',
     },
     {
-      'name': 'AllowedLanguages',
+      'name': 'AllowedUILocales',
       'type': 'list',
       'schema': {
         'type': 'array',
         'items': { 'type': 'string' },
       },
-      'supported_on': ['chrome_os:71-'],
+      'supported_on': ['chrome_os:68-'],
       'device_only': False,
       'features': {
         'dynamic_refresh': False,
@@ -12601,11 +12601,11 @@
       'example_value': [ 'en-US' ],
       'max_size': 16777216,
       'id': 444,
-      'caption': '''Configure the allowed languages in a user session''',
+      'caption': '''Configure the allowed UI locales in a user session''',
       'tags': [],
-      'desc': '''Configures the languages that can be used as the preferred languages by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.
+      'desc': '''Configures the locales <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> may be displayed in.
 
-      If this policy is set, the user can only add one of the languages listed in this policy to the list of preferred languages. If this policy is not set or set to an empty list, user can specify any languages as preferred. If this policy is set to a list with invalid values, all invalid values will be ignored. If a user previously added some languages that are not allowed by this policy to the list of preferred languages they will be removed. If the user had previously configured <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> to be displayed in one of the languages not allowed by this policy, the display language will be switched to an allowed UI language next time user signs in. Otherwise, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will switch to the first valid value specified by this policy, or to a fallback locale (currently en-US), if this policy only contains invalid entries.'''
+      If this policy is set, the user can only configure <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> to be displayed in one of the locales specified by this policy. If this policy is not set or set to an empty list, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can be displayed in all supported UI locales. If this policy is set to a list with invalid values, all invalid values will be ignored. If a user previously configured <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> to be displayed in a locale that is not allowed by this policy, the display locale will be switched to an allowed UI locale the next time the user signs in. If the user had configured preferred locales and one of the preferred locales is allowed by this policy, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will switch to this locale. Otherwise, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will switch to the first valid value specified by this policy, or to a fallback locale (currently en-US), if this policy only contains invalid entries.'''
     },
     {
       'name': 'AllowedInputMethods',
diff --git a/components/sync/driver/glue/sync_backend_host_core.cc b/components/sync/driver/glue/sync_backend_host_core.cc
index 170aa69..746ba3f 100644
--- a/components/sync/driver/glue/sync_backend_host_core.cc
+++ b/components/sync/driver/glue/sync_backend_host_core.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
+#include "base/metrics/histogram_macros.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/memory_dump_manager.h"
@@ -248,6 +249,9 @@
       DLOG(WARNING) << "Notification has invalid id: "
                     << ObjectIdToString(object_id);
     } else {
+      UMA_HISTOGRAM_ENUMERATION("Sync.InvalidationPerModelType",
+                                ModelTypeToHistogramInt(type),
+                                static_cast<int>(MODEL_TYPE_COUNT));
       SingleObjectInvalidationSet invalidation_set =
           invalidation_map.ForObject(object_id);
       for (Invalidation invalidation : invalidation_set) {
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index 9300667..0497ca37 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -777,7 +777,7 @@
 }
 
 bool BrowserAccessibility::IsClickable() const {
-  return ui::IsRoleClickable(GetRole());
+  return ui::IsClickable(GetRole());
 }
 
 bool BrowserAccessibility::IsPlainTextField() const {
diff --git a/content/browser/accessibility/browser_accessibility_android.cc b/content/browser/accessibility/browser_accessibility_android.cc
index 95b60d9..910bb9b 100644
--- a/content/browser/accessibility/browser_accessibility_android.cc
+++ b/content/browser/accessibility/browser_accessibility_android.cc
@@ -194,8 +194,7 @@
 
 // TODO(dougt) Move to ax_role_properties?
 bool BrowserAccessibilityAndroid::IsCollection() const {
-  return (ui::IsTableLikeRole(GetRole()) ||
-          GetRole() == ax::mojom::Role::kList ||
+  return (ui::IsTableLike(GetRole()) || GetRole() == ax::mojom::Role::kList ||
           GetRole() == ax::mojom::Role::kListBox ||
           GetRole() == ax::mojom::Role::kDescriptionList ||
           GetRole() == ax::mojom::Role::kTree);
@@ -1326,7 +1325,7 @@
 }
 
 int BrowserAccessibilityAndroid::RowCount() const {
-  if (ui::IsTableLikeRole(GetRole())) {
+  if (ui::IsTableLike(GetRole())) {
     ui::AXTableInfo* table_info = manager()->ax_tree()->GetTableInfo(node());
     if (table_info)
       return table_info->row_count;
@@ -1343,7 +1342,7 @@
 }
 
 int BrowserAccessibilityAndroid::ColumnCount() const {
-  if (ui::IsTableLikeRole(GetRole())) {
+  if (ui::IsTableLike(GetRole())) {
     ui::AXTableInfo* table_info = manager()->ax_tree()->GetTableInfo(node());
     if (table_info)
       return table_info->col_count;
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index ec60dd6b..3a8574c6 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -711,7 +711,7 @@
 }
 
 - (NSNumber*)ariaColumnCount {
-  if (!ui::IsTableLikeRole(owner_->GetRole()))
+  if (!ui::IsTableLike(owner_->GetRole()))
     return nil;
   int count = -1;
   if (!owner_->GetIntAttribute(ax::mojom::IntAttribute::kAriaColumnCount,
@@ -722,7 +722,7 @@
 }
 
 - (NSNumber*)ariaColumnIndex {
-  if (!ui::IsCellOrTableHeaderRole(owner_->GetRole()))
+  if (!ui::IsCellOrTableHeader(owner_->GetRole()))
     return nil;
   int index = -1;
   if (!owner_->GetIntAttribute(ax::mojom::IntAttribute::kAriaCellColumnIndex,
@@ -754,7 +754,7 @@
 }
 
 - (NSNumber*)ariaRowCount {
-  if (!ui::IsTableLikeRole(owner_->GetRole()))
+  if (!ui::IsTableLike(owner_->GetRole()))
     return nil;
   int count = -1;
   if (!owner_->GetIntAttribute(ax::mojom::IntAttribute::kAriaRowCount,
@@ -765,7 +765,7 @@
 }
 
 - (NSNumber*)ariaRowIndex {
-  if (!ui::IsCellOrTableHeaderRole(owner_->GetRole()))
+  if (!ui::IsCellOrTableHeader(owner_->GetRole()))
     return nil;
   int index = -1;
   if (!owner_->GetIntAttribute(ax::mojom::IntAttribute::kAriaCellRowIndex,
@@ -884,8 +884,8 @@
   if (![self instanceActive])
     return nil;
 
-  bool is_cell_or_table_header = ui::IsCellOrTableHeaderRole(owner_->GetRole());
-  bool is_table_like = ui::IsTableLikeRole(owner_->GetRole());
+  bool is_cell_or_table_header = ui::IsCellOrTableHeader(owner_->GetRole());
+  bool is_table_like = ui::IsTableLike(owner_->GetRole());
   if (!is_table_like && !is_cell_or_table_header)
     return nil;
   BrowserAccessibility* table = [self containingTable];
@@ -927,7 +927,7 @@
 - (NSValue*)columnIndexRange {
   if (![self instanceActive])
     return nil;
-  if (!ui::IsCellOrTableHeaderRole(owner_->GetRole()))
+  if (!ui::IsCellOrTableHeader(owner_->GetRole()))
     return nil;
 
   int column = -1;
@@ -954,7 +954,7 @@
 
 - (BrowserAccessibility*)containingTable {
   BrowserAccessibility* table = owner_;
-  while (table && !ui::IsTableLikeRole(table->GetRole())) {
+  while (table && !ui::IsTableLike(table->GetRole())) {
     table = table->PlatformGetParent();
   }
   return table;
@@ -1201,7 +1201,7 @@
   if (![self instanceActive])
     return nil;
   int headerElementId = -1;
-  if (ui::IsTableLikeRole(owner_->GetRole())) {
+  if (ui::IsTableLike(owner_->GetRole())) {
     // The table header container is always the last child of the table,
     // if it exists. The table header container is a special node in the
     // accessibility tree only used on macOS. It has all of the table
@@ -1479,7 +1479,7 @@
 
   BrowserAccessibility* container = activeDescendant->PlatformGetParent();
   while (container &&
-         !ui::IsContainerWithSelectableChildrenRole(container->GetRole()))
+         !ui::IsContainerWithSelectableChildren(container->GetRole()))
     container = container->PlatformGetParent();
   if (!container)
     return nil;
@@ -1862,8 +1862,8 @@
   if (![self instanceActive])
     return nil;
 
-  bool is_cell_or_table_header = ui::IsCellOrTableHeaderRole(owner_->GetRole());
-  bool is_table_like = ui::IsTableLikeRole(owner_->GetRole());
+  bool is_cell_or_table_header = ui::IsCellOrTableHeader(owner_->GetRole());
+  bool is_table_like = ui::IsTableLike(owner_->GetRole());
   if (!is_table_like && !is_cell_or_table_header)
     return nil;
   BrowserAccessibility* table = [self containingTable];
@@ -1904,7 +1904,7 @@
 - (NSValue*)rowIndexRange {
   if (![self instanceActive])
     return nil;
-  if (!ui::IsCellOrTableHeaderRole(owner_->GetRole()))
+  if (!ui::IsCellOrTableHeader(owner_->GetRole()))
     return nil;
 
   int row = -1;
@@ -2524,7 +2524,7 @@
            j < child->PlatformChildCount();
            ++j) {
         BrowserAccessibility* cell = child->PlatformGetChild(j);
-        if (!ui::IsCellOrTableHeaderRole(cell->GetRole()))
+        if (!ui::IsCellOrTableHeader(cell->GetRole()))
           continue;
         int colIndex;
         if (!cell->GetIntAttribute(
diff --git a/content/browser/accessibility/browser_accessibility_com_win.cc b/content/browser/accessibility/browser_accessibility_com_win.cc
index edcd56c..95f9195 100644
--- a/content/browser/accessibility/browser_accessibility_com_win.cc
+++ b/content/browser/accessibility/browser_accessibility_com_win.cc
@@ -1593,7 +1593,7 @@
       return E_NOINTERFACE;
     }
   } else if (iid == IID_IAccessibleTableCell) {
-    if (!ui::IsCellOrTableHeaderRole(accessibility->owner()->GetRole())) {
+    if (!ui::IsCellOrTableHeader(accessibility->owner()->GetRole())) {
       *object = nullptr;
       return E_NOINTERFACE;
     }
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
index ace4792..e61ed97 100644
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
@@ -234,7 +234,7 @@
       mac_notification = NSAccessibilityInvalidStatusChangedNotification;
       break;
     case Event::SELECTED_CHILDREN_CHANGED:
-      if (ui::IsTableLikeRole(node->GetRole())) {
+      if (ui::IsTableLike(node->GetRole())) {
         mac_notification = NSAccessibilitySelectedRowsChangedNotification;
       } else {
         mac_notification = NSAccessibilitySelectedChildrenChangedNotification;
diff --git a/content/browser/accessibility/one_shot_accessibility_tree_search.cc b/content/browser/accessibility/one_shot_accessibility_tree_search.cc
index 0a80995..cf4dad95 100644
--- a/content/browser/accessibility/one_shot_accessibility_tree_search.cc
+++ b/content/browser/accessibility/one_shot_accessibility_tree_search.cc
@@ -424,7 +424,7 @@
 
 bool AccessibilityTablePredicate(
     BrowserAccessibility* start, BrowserAccessibility* node) {
-  return ui::IsTableLikeRole(node->GetRole());
+  return ui::IsTableLike(node->GetRole());
 }
 
 bool AccessibilityTextfieldPredicate(
diff --git a/content/browser/background_fetch/background_fetch_data_manager_unittest.cc b/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
index 3003797..8c423cf 100644
--- a/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager_unittest.cc
@@ -28,6 +28,7 @@
 #include "content/browser/cache_storage/cache_storage_cache_handle.h"
 #include "content/browser/cache_storage/cache_storage_manager.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/service_worker_utils.h"
 #include "content/public/browser/background_fetch_response.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/storage_partition.h"
@@ -1920,8 +1921,10 @@
               init_request_info->download_guid());
     EXPECT_EQ(request_info->request_index(),
               init_request_info->request_index());
-    EXPECT_EQ(request_info->fetch_request().Serialize(),
-              init_request_info->fetch_request().Serialize());
+    EXPECT_EQ(ServiceWorkerUtils::SerializeFetchRequestToString(
+                  request_info->fetch_request()),
+              ServiceWorkerUtils::SerializeFetchRequestToString(
+                  init_request_info->fetch_request()));
   }
 
   // Create another registration.
diff --git a/content/browser/background_fetch/background_fetch_test_base.cc b/content/browser/background_fetch/background_fetch_test_base.cc
index f09f7a3..73955f0 100644
--- a/content/browser/background_fetch/background_fetch_test_base.cc
+++ b/content/browser/background_fetch/background_fetch_test_base.cc
@@ -67,7 +67,7 @@
   std::move(quit_closure).Run();
 }
 
-GURL GetPatternForId(int64_t id) {
+GURL GetScopeForId(int64_t id) {
   return GURL(kTestOrigin + base::IntToString(id));
 }
 
@@ -103,7 +103,7 @@
 
   {
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = GetPatternForId(next_pattern_id_++);
+    options.scope = GetScopeForId(next_pattern_id_++);
     base::RunLoop run_loop;
     embedded_worker_test_helper_.context()->RegisterServiceWorker(
         script_url, options,
@@ -150,7 +150,7 @@
     int64_t service_worker_registration_id) {
   base::RunLoop run_loop;
   embedded_worker_test_helper_.context()->UnregisterServiceWorker(
-      GetPatternForId(service_worker_registration_id),
+      GetScopeForId(service_worker_registration_id),
       base::BindOnce(&DidUnregisterServiceWorker, run_loop.QuitClosure()));
   run_loop.Run();
 }
diff --git a/content/browser/background_fetch/storage/create_metadata_task.cc b/content/browser/background_fetch/storage/create_metadata_task.cc
index 93c37d4..b6ed085 100644
--- a/content/browser/background_fetch/storage/create_metadata_task.cc
+++ b/content/browser/background_fetch/storage/create_metadata_task.cc
@@ -15,6 +15,7 @@
 #include "content/browser/background_fetch/storage/database_helpers.h"
 #include "content/browser/background_fetch/storage/image_helpers.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/service_worker_utils.h"
 #include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
 
 namespace content {
@@ -317,7 +318,8 @@
     proto::BackgroundFetchPendingRequest pending_request_proto;
     pending_request_proto.set_unique_id(registration_id_.unique_id());
     pending_request_proto.set_request_index(i);
-    pending_request_proto.set_serialized_request(requests_[i].Serialize());
+    pending_request_proto.set_serialized_request(
+        ServiceWorkerUtils::SerializeFetchRequestToString(requests_[i]));
     entries.emplace_back(PendingRequestKey(registration_id_.unique_id(), i),
                          pending_request_proto.SerializeAsString());
   }
diff --git a/content/browser/background_fetch/storage/get_initialization_data_task.cc b/content/browser/background_fetch/storage/get_initialization_data_task.cc
index a5c1e3b5..b3a47ad2 100644
--- a/content/browser/background_fetch/storage/get_initialization_data_task.cc
+++ b/content/browser/background_fetch/storage/get_initialization_data_task.cc
@@ -15,6 +15,7 @@
 #include "content/browser/background_fetch/storage/image_helpers.h"
 #include "content/browser/background_fetch/storage/mark_registration_for_deletion_task.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/service_worker_utils.h"
 #include "third_party/blink/public/common/manifest/manifest.h"
 #include "ui/gfx/image/image.h"
 #include "url/origin.h"
@@ -237,7 +238,7 @@
 
       auto request_info = base::MakeRefCounted<BackgroundFetchRequestInfo>(
           active_request.request_index(),
-          ServiceWorkerFetchRequest::ParseFromString(
+          ServiceWorkerUtils::DeserializeFetchRequestFromString(
               active_request.serialized_request()));
       request_info->SetDownloadGuid(active_request.download_guid());
 
diff --git a/content/browser/background_fetch/storage/get_settled_fetches_task.cc b/content/browser/background_fetch/storage/get_settled_fetches_task.cc
index ee60d40..e4e1d46 100644
--- a/content/browser/background_fetch/storage/get_settled_fetches_task.cc
+++ b/content/browser/background_fetch/storage/get_settled_fetches_task.cc
@@ -9,6 +9,7 @@
 #include "content/browser/background_fetch/storage/database_helpers.h"
 #include "content/browser/cache_storage/cache_storage_manager.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/service_worker_utils.h"
 #include "services/network/public/cpp/cors/cors.h"
 
 namespace content {
@@ -120,8 +121,8 @@
     for (const auto& completed_request : completed_requests_) {
       settled_fetches_.emplace_back();
       settled_fetches_.back().request =
-          std::move(ServiceWorkerFetchRequest::ParseFromString(
-              completed_request.serialized_request()));
+          ServiceWorkerUtils::DeserializeFetchRequestFromString(
+              completed_request.serialized_request());
       FillResponse(&settled_fetches_.back(), barrier_closure);
     }
     return;
diff --git a/content/browser/background_fetch/storage/mark_request_complete_task.cc b/content/browser/background_fetch/storage/mark_request_complete_task.cc
index a941ac2..fcdcf7f4 100644
--- a/content/browser/background_fetch/storage/mark_request_complete_task.cc
+++ b/content/browser/background_fetch/storage/mark_request_complete_task.cc
@@ -14,6 +14,7 @@
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
 #include "content/browser/cache_storage/cache_storage_manager.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/service_worker_utils.h"
 #include "services/network/public/cpp/cors/cors.h"
 #include "storage/browser/blob/blob_data_builder.h"
 #include "storage/browser/blob/blob_impl.h"
@@ -216,7 +217,8 @@
   completed_request_.set_unique_id(registration_id_.unique_id());
   completed_request_.set_request_index(request_info_->request_index());
   completed_request_.set_serialized_request(
-      request_info_->fetch_request().Serialize());
+      ServiceWorkerUtils::SerializeFetchRequestToString(
+          request_info_->fetch_request()));
   completed_request_.set_download_guid(request_info_->download_guid());
   completed_request_.set_succeeded(is_response_successful_);
 
diff --git a/content/browser/background_fetch/storage/start_next_pending_request_task.cc b/content/browser/background_fetch/storage/start_next_pending_request_task.cc
index a28ed8a..469ce26 100644
--- a/content/browser/background_fetch/storage/start_next_pending_request_task.cc
+++ b/content/browser/background_fetch/storage/start_next_pending_request_task.cc
@@ -9,6 +9,7 @@
 #include "content/browser/background_fetch/background_fetch_data_manager_observer.h"
 #include "content/browser/background_fetch/storage/database_helpers.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/service_worker_utils.h"
 
 namespace content {
 
@@ -98,7 +99,7 @@
 
   next_request_ = base::MakeRefCounted<BackgroundFetchRequestInfo>(
       active_request_.request_index(),
-      ServiceWorkerFetchRequest::ParseFromString(
+      ServiceWorkerUtils::DeserializeFetchRequestFromString(
           active_request_.serialized_request()));
   next_request_->SetDownloadGuid(active_request_.download_guid());
 
diff --git a/content/browser/background_sync/background_sync_manager.cc b/content/browser/background_sync/background_sync_manager.cc
index 73d01cf..3bd378c1 100644
--- a/content/browser/background_sync/background_sync_manager.cc
+++ b/content/browser/background_sync/background_sync_manager.cc
@@ -449,7 +449,7 @@
   }
 
   HasMainFrameProviderHost(
-      sw_registration->pattern().GetOrigin(),
+      sw_registration->scope().GetOrigin(),
       base::BindOnce(&BackgroundSyncManager::RegisterDidCheckIfMainFrame,
                      weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
                      options, std::move(callback)));
@@ -500,7 +500,7 @@
       FROM_HERE, {BrowserThread::UI},
       base::BindOnce(&GetBackgroundSyncPermissionOnUIThread,
                      service_worker_context_,
-                     sw_registration->pattern().GetOrigin()),
+                     sw_registration->scope().GetOrigin()),
       base::BindOnce(&BackgroundSyncManager::RegisterDidAskForPermission,
                      weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
                      options, std::move(callback)));
@@ -533,7 +533,7 @@
       FROM_HERE, {BrowserThread::UI},
       base::BindOnce(&NotifyBackgroundSyncRegisteredOnUIThread,
                      service_worker_context_,
-                     sw_registration->pattern().GetOrigin()));
+                     sw_registration->scope().GetOrigin()));
 
   BackgroundSyncRegistration* existing_registration =
       LookupActiveRegistration(sw_registration_id, options.tag);
@@ -570,8 +570,7 @@
   new_registration.set_id(registrations->next_id++);
 
   AddActiveRegistration(sw_registration_id,
-                        sw_registration->pattern().GetOrigin(),
-                        new_registration);
+                        sw_registration->scope().GetOrigin(), new_registration);
 
   StoreRegistrations(
       sw_registration_id,
@@ -1029,7 +1028,7 @@
       registration->num_attempts() == parameters_->max_sync_attempts - 1;
 
   HasMainFrameProviderHost(
-      service_worker_registration->pattern().GetOrigin(),
+      service_worker_registration->scope().GetOrigin(),
       base::BindOnce(&BackgroundSyncMetrics::RecordEventStarted));
 
   DispatchSyncEvent(registration->options()->tag,
@@ -1108,7 +1107,7 @@
       service_worker_context_->GetLiveRegistration(service_worker_id);
   if (sw_registration) {
     HasMainFrameProviderHost(
-        sw_registration->pattern().GetOrigin(),
+        sw_registration->scope().GetOrigin(),
         base::BindOnce(&BackgroundSyncMetrics::RecordEventResult,
                        status_code == blink::ServiceWorkerStatusCode::kOk));
   }
diff --git a/content/browser/background_sync/background_sync_manager_unittest.cc b/content/browser/background_sync/background_sync_manager_unittest.cc
index f700aca..28207e10 100644
--- a/content/browser/background_sync/background_sync_manager_unittest.cc
+++ b/content/browser/background_sync/background_sync_manager_unittest.cc
@@ -50,8 +50,8 @@
 using ::testing::Return;
 using ::testing::_;
 
-const char kPattern1[] = "https://example.com/a";
-const char kPattern2[] = "https://example.com/b";
+const char kScope1[] = "https://example.com/a";
+const char kScope2[] = "https://example.com/b";
 const char kScript1[] = "https://example.com/a/script.js";
 const char kScript2[] = "https://example.com/b/script.js";
 
@@ -135,9 +135,9 @@
     bool called_1 = false;
     bool called_2 = false;
     blink::mojom::ServiceWorkerRegistrationOptions options1;
-    options1.scope = GURL(kPattern1);
+    options1.scope = GURL(kScope1);
     blink::mojom::ServiceWorkerRegistrationOptions options2;
-    options2.scope = GURL(kPattern2);
+    options2.scope = GURL(kScope2);
     helper_->context()->RegisterServiceWorker(
         GURL(kScript1), options1,
         base::BindOnce(&RegisterServiceWorkerCallback, &called_1,
@@ -154,12 +154,12 @@
     // Hang onto the registrations as they need to be "live" when
     // calling BackgroundSyncManager::Register.
     helper_->context_wrapper()->FindReadyRegistrationForId(
-        sw_registration_id_1_, GURL(kPattern1).GetOrigin(),
+        sw_registration_id_1_, GURL(kScope1).GetOrigin(),
         base::BindOnce(FindServiceWorkerRegistrationCallback,
                        &sw_registration_1_));
 
     helper_->context_wrapper()->FindReadyRegistrationForId(
-        sw_registration_id_2_, GURL(kPattern1).GetOrigin(),
+        sw_registration_id_2_, GURL(kScope1).GetOrigin(),
         base::BindOnce(FindServiceWorkerRegistrationCallback,
                        &sw_registration_2_));
     base::RunLoop().RunUntilIdle();
@@ -330,16 +330,16 @@
   void UnregisterServiceWorker(uint64_t sw_registration_id) {
     bool called = false;
     helper_->context()->UnregisterServiceWorker(
-        PatternForSWId(sw_registration_id),
+        ScopeForSWId(sw_registration_id),
         base::BindOnce(&UnregisterServiceWorkerCallback, &called));
     base::RunLoop().RunUntilIdle();
     EXPECT_TRUE(called);
   }
 
-  GURL PatternForSWId(int64_t sw_id) {
+  GURL ScopeForSWId(int64_t sw_id) {
     EXPECT_TRUE(sw_id == sw_registration_id_1_ ||
                 sw_id == sw_registration_id_2_);
-    return sw_id == sw_registration_id_1_ ? GURL(kPattern1) : GURL(kPattern2);
+    return sw_id == sw_registration_id_1_ ? GURL(kScope1) : GURL(kScope2);
   }
 
   void SetupForSyncEvent(
@@ -481,7 +481,7 @@
 }
 
 TEST_F(BackgroundSyncManagerTest, RegisterPermissionDenied) {
-  GURL expected_origin = GURL(kPattern1).GetOrigin();
+  GURL expected_origin = GURL(kScope1).GetOrigin();
   MockPermissionManager* mock_permission_manager =
       GetPermissionControllerDelegate();
 
@@ -493,7 +493,7 @@
 }
 
 TEST_F(BackgroundSyncManagerTest, RegisterPermissionGranted) {
-  GURL expected_origin = GURL(kPattern1).GetOrigin();
+  GURL expected_origin = GURL(kScope1).GetOrigin();
   MockPermissionManager* mock_permission_manager =
       GetPermissionControllerDelegate();
 
@@ -1124,7 +1124,7 @@
   EXPECT_EQ(0, GetController()->registration_count());
   EXPECT_TRUE(Register(sync_options_1_));
   EXPECT_EQ(1, GetController()->registration_count());
-  EXPECT_EQ(GURL(kPattern1).GetOrigin().spec(),
+  EXPECT_EQ(GURL(kScope1).GetOrigin().spec(),
             GetController()->registration_origin().spec());
 }
 
diff --git a/content/browser/background_sync/background_sync_service_impl_unittest.cc b/content/browser/background_sync/background_sync_service_impl_unittest.cc
index a1dd3ef..9a84601 100644
--- a/content/browser/background_sync/background_sync_service_impl_unittest.cc
+++ b/content/browser/background_sync/background_sync_service_impl_unittest.cc
@@ -34,7 +34,7 @@
 
 using ::testing::_;
 
-const char kServiceWorkerPattern[] = "https://example.com/a";
+const char kServiceWorkerScope[] = "https://example.com/a";
 const char kServiceWorkerScript[] = "https://example.com/a/script.js";
 
 // Callbacks from SetUp methods
@@ -164,7 +164,7 @@
   void CreateServiceWorkerRegistration() {
     bool called = false;
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = GURL(kServiceWorkerPattern);
+    options.scope = GURL(kServiceWorkerScope);
     embedded_worker_helper_->context()->RegisterServiceWorker(
         GURL(kServiceWorkerScript), options,
         base::BindOnce(&RegisterServiceWorkerCallback, &called,
@@ -173,7 +173,7 @@
     EXPECT_TRUE(called);
 
     embedded_worker_helper_->context_wrapper()->FindReadyRegistrationForId(
-        sw_registration_id_, GURL(kServiceWorkerPattern).GetOrigin(),
+        sw_registration_id_, GURL(kServiceWorkerScope).GetOrigin(),
         base::BindOnce(FindServiceWorkerRegistrationCallback,
                        &sw_registration_));
     base::RunLoop().RunUntilIdle();
diff --git a/content/browser/cookie_store/cookie_store_manager.cc b/content/browser/cookie_store/cookie_store_manager.cc
index 717c5d0..8ec46290 100644
--- a/content/browser/cookie_store/cookie_store_manager.cc
+++ b/content/browser/cookie_store/cookie_store_manager.cc
@@ -182,7 +182,7 @@
           service_worker_registration_id);
   if (!service_worker_registration ||
       !origin.IsSameOriginWith(
-          url::Origin::Create(service_worker_registration->pattern()))) {
+          url::Origin::Create(service_worker_registration->scope()))) {
     // This error case is a good fit for mojo::ReportBadMessage(), because the
     // renderer has passed an invalid registration ID. However, the code here
     // might run without a mojo call context, if the original call was delayed
diff --git a/content/browser/devtools/protocol/service_worker_handler.cc b/content/browser/devtools/protocol/service_worker_handler.cc
index 0164e28..37edf0b 100644
--- a/content/browser/devtools/protocol/service_worker_handler.cc
+++ b/content/browser/devtools/protocol/service_worker_handler.cc
@@ -362,12 +362,12 @@
       protocol::Array<Registration>::create();
   for (const auto& registration : registrations) {
     result->addItem(Registration::Create()
-        .SetRegistrationId(
-            base::Int64ToString(registration.registration_id))
-        .SetScopeURL(registration.pattern.spec())
-        .SetIsDeleted(registration.delete_flag ==
-                      ServiceWorkerRegistrationInfo::IS_DELETED)
-        .Build());
+                        .SetRegistrationId(
+                            base::Int64ToString(registration.registration_id))
+                        .SetScopeURL(registration.scope.spec())
+                        .SetIsDeleted(registration.delete_flag ==
+                                      ServiceWorkerRegistrationInfo::IS_DELETED)
+                        .Build());
   }
   frontend_->WorkerRegistrationUpdated(std::move(result));
 }
diff --git a/content/browser/frame_host/cross_process_frame_connector.cc b/content/browser/frame_host/cross_process_frame_connector.cc
index ae85a159..1490ddc65 100644
--- a/content/browser/frame_host/cross_process_frame_connector.cc
+++ b/content/browser/frame_host/cross_process_frame_connector.cc
@@ -279,8 +279,7 @@
   DCHECK(event.GetType() == blink::WebInputEvent::kGestureScrollBegin ||
          event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
          event.GetType() == blink::WebInputEvent::kGestureScrollEnd ||
-         event.GetType() == blink::WebInputEvent::kGestureFlingStart ||
-         event.GetType() == blink::WebInputEvent::kGestureFlingCancel);
+         event.GetType() == blink::WebInputEvent::kGestureFlingStart);
   auto* parent_view = GetParentRenderWidgetHostView();
 
   if (!parent_view)
@@ -303,9 +302,7 @@
   if (event.GetType() == blink::WebInputEvent::kGestureScrollBegin) {
     event_router->BubbleScrollEvent(parent_view, resent_gesture_event, view_);
     is_scroll_bubbling_ = true;
-  } else if (is_scroll_bubbling_ ||
-             event.GetType() == blink::WebInputEvent::kGestureFlingCancel) {
-    // For GFC events the router decides whether to bubble them or not.
+  } else if (is_scroll_bubbling_) {
     event_router->BubbleScrollEvent(parent_view, resent_gesture_event, view_);
   }
   if (event.GetType() == blink::WebInputEvent::kGestureScrollEnd ||
diff --git a/content/browser/notifications/blink_notification_service_impl.cc b/content/browser/notifications/blink_notification_service_impl.cc
index 2a4592f1..8d742bb1 100644
--- a/content/browser/notifications/blink_notification_service_impl.cc
+++ b/content/browser/notifications/blink_notification_service_impl.cc
@@ -259,13 +259,13 @@
   // Display the notification if the Service Worker's origin matches the origin
   // of the notification's sender.
   if (service_worker_status == blink::ServiceWorkerStatusCode::kOk &&
-      registration->pattern().GetOrigin() == origin_.GetURL()) {
+      registration->scope().GetOrigin() == origin_.GetURL()) {
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::UI},
         base::BindOnce(
             &PlatformNotificationService::DisplayPersistentNotification,
             base::Unretained(GetNotificationService()), browser_context_,
-            notification_id, registration->pattern(), origin_.GetURL(),
+            notification_id, registration->scope(), origin_.GetURL(),
             platform_notification_data, notification_resources));
 
     error = PersistentNotificationError::NONE;
diff --git a/content/browser/payments/payment_app_database.cc b/content/browser/payments/payment_app_database.cc
index 043c5b0..4184308 100644
--- a/content/browser/payments/payment_app_database.cc
+++ b/content/browser/payments/payment_app_database.cc
@@ -146,7 +146,7 @@
     DeletePaymentInstrumentCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(
           &PaymentAppDatabase::DidFindRegistrationToDeletePaymentInstrument,
@@ -159,7 +159,7 @@
     ReadPaymentInstrumentCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(
           &PaymentAppDatabase::DidFindRegistrationToReadPaymentInstrument,
@@ -171,7 +171,7 @@
     KeysOfPaymentInstrumentsCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(&PaymentAppDatabase::DidFindRegistrationToGetKeys,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
@@ -183,7 +183,7 @@
     HasPaymentInstrumentCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(
           &PaymentAppDatabase::DidFindRegistrationToHasPaymentInstrument,
@@ -206,7 +206,7 @@
                        weak_ptr_factory_.GetWeakPtr(), scope, instrument_key,
                        std::move(instrument), std::move(callback)));
   } else {
-    service_worker_context_->FindReadyRegistrationForPattern(
+    service_worker_context_->FindReadyRegistrationForScope(
         scope,
         base::BindOnce(
             &PaymentAppDatabase::DidFindRegistrationToWritePaymentInstrument,
@@ -228,7 +228,7 @@
     return;
   }
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(
           &PaymentAppDatabase::DidFindRegistrationToWritePaymentInstrument,
@@ -255,7 +255,7 @@
     std::unique_ptr<PaymentAppInfoFetcher::PaymentAppInfo> app_info) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope, base::BindOnce(
                  &PaymentAppDatabase::DidFindRegistrationToUpdatePaymentAppInfo,
                  weak_ptr_factory_.GetWeakPtr(), std::move(callback),
@@ -274,7 +274,7 @@
   }
 
   service_worker_context_->GetRegistrationUserDataByKeyPrefix(
-      registration->id(), CreatePaymentAppKey(registration->pattern().spec()),
+      registration->id(), CreatePaymentAppKey(registration->scope().spec()),
       base::BindOnce(
           &PaymentAppDatabase::DidGetPaymentAppInfoToUpdatePaymentAppInfo,
           weak_ptr_factory_.GetWeakPtr(), std::move(callback),
@@ -299,7 +299,7 @@
     payment_app_proto.ParseFromString(data[0]);
   }
   payment_app_proto.set_registration_id(registration->id());
-  payment_app_proto.set_scope(registration->pattern().spec());
+  payment_app_proto.set_scope(registration->scope().spec());
   // Do not override name and icon if they are invalid.
   if (!app_info->name.empty()) {
     payment_app_proto.set_name(app_info->name);
@@ -321,8 +321,8 @@
   DCHECK(success);
 
   service_worker_context_->StoreRegistrationUserData(
-      registration->id(), registration->pattern().GetOrigin(),
-      {{CreatePaymentAppKey(registration->pattern().spec()),
+      registration->id(), registration->scope().GetOrigin(),
+      {{CreatePaymentAppKey(registration->scope().spec()),
         serialized_payment_app}},
       base::BindOnce(&PaymentAppDatabase::DidUpdatePaymentApp,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback),
@@ -350,7 +350,7 @@
     ClearPaymentInstrumentsCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(
           &PaymentAppDatabase::DidFindRegistrationToClearPaymentInstruments,
@@ -361,7 +361,7 @@
                                                const std::string& user_hint) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  service_worker_context_->FindReadyRegistrationForPattern(
+  service_worker_context_->FindReadyRegistrationForScope(
       scope,
       base::BindOnce(
           &PaymentAppDatabase::DidFindRegistrationToSetPaymentAppUserHint,
@@ -377,10 +377,10 @@
     return;
 
   service_worker_context_->GetRegistrationUserDataByKeyPrefix(
-      registration->id(), CreatePaymentAppKey(registration->pattern().spec()),
+      registration->id(), CreatePaymentAppKey(registration->scope().spec()),
       base::BindOnce(&PaymentAppDatabase::DidGetPaymentAppInfoToSetUserHint,
                      weak_ptr_factory_.GetWeakPtr(), user_hint,
-                     registration->id(), registration->pattern()));
+                     registration->id(), registration->scope()));
 }
 
 void PaymentAppDatabase::DidGetPaymentAppInfoToSetUserHint(
@@ -450,7 +450,7 @@
 
   StoredPaymentAppProto payment_app_proto;
   payment_app_proto.set_registration_id(registration->id());
-  payment_app_proto.set_scope(registration->pattern().spec());
+  payment_app_proto.set_scope(registration->scope().spec());
   payment_app_proto.set_name(name);
   payment_app_proto.set_icon(icon);
 
@@ -461,8 +461,8 @@
   // Constructing registration_id, registration_origin and storage_key before
   // moving registration.
   int64_t registration_id = registration->id();
-  GURL registration_origin = registration->pattern().GetOrigin();
-  std::string storage_key = CreatePaymentAppKey(registration->pattern().spec());
+  GURL registration_origin = registration->scope().GetOrigin();
+  std::string storage_key = CreatePaymentAppKey(registration->scope().spec());
   service_worker_context_->StoreRegistrationUserData(
       registration_id, registration_origin,
       {{storage_key, serialized_payment_app}},
@@ -504,7 +504,7 @@
   DCHECK(success);
 
   service_worker_context_->StoreRegistrationUserData(
-      registration->id(), registration->pattern().GetOrigin(),
+      registration->id(), registration->scope().GetOrigin(),
       {{CreatePaymentInstrumentKey(instrument_key), serialized_instrument},
        {CreatePaymentInstrumentKeyInfoKey(instrument_key),
         serialized_key_info}},
@@ -791,7 +791,7 @@
   DCHECK(success);
 
   service_worker_context_->StoreRegistrationUserData(
-      registration->id(), registration->pattern().GetOrigin(),
+      registration->id(), registration->scope().GetOrigin(),
       {{CreatePaymentInstrumentKey(instrument_key), serialized_instrument},
        {CreatePaymentInstrumentKeyInfoKey(instrument_key),
         serialized_key_info}},
@@ -847,8 +847,7 @@
   }
 
   // Clear payment app info after clearing all payment instruments.
-  keys_with_prefix.push_back(
-      CreatePaymentAppKey(registration->pattern().spec()));
+  keys_with_prefix.push_back(CreatePaymentAppKey(registration->scope().spec()));
 
   service_worker_context_->ClearRegistrationUserData(
       registration->id(), keys_with_prefix,
diff --git a/content/browser/payments/payment_app_installer.cc b/content/browser/payments/payment_app_installer.cc
index 9ec51d43..c2ee504cd 100644
--- a/content/browser/payments/payment_app_installer.cc
+++ b/content/browser/payments/payment_app_installer.cc
@@ -84,9 +84,8 @@
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
     for (const auto& worker : info) {
-      if (worker.pattern.EqualsIgnoringRef(scope_)) {
+      if (worker.scope.EqualsIgnoringRef(scope_))
         registration_id_ = worker.registration_id;
-      }
     }
   }
 
diff --git a/content/browser/payments/payment_manager_unittest.cc b/content/browser/payments/payment_manager_unittest.cc
index 6a19821..952ada00 100644
--- a/content/browser/payments/payment_manager_unittest.cc
+++ b/content/browser/payments/payment_manager_unittest.cc
@@ -18,7 +18,7 @@
 using ::payments::mojom::PaymentInstrument;
 using ::payments::mojom::PaymentInstrumentPtr;
 
-const char kServiceWorkerPattern[] = "https://example.com/a";
+const char kServiceWorkerScope[] = "https://example.com/a";
 const char kServiceWorkerScript[] = "https://example.com/a/script.js";
 
 void DeletePaymentInstrumentCallback(PaymentHandlerStatus* out_status,
@@ -62,7 +62,7 @@
 class PaymentManagerTest : public PaymentAppContentUnitTestBase {
  public:
   PaymentManagerTest() {
-    manager_ = CreatePaymentManager(GURL(kServiceWorkerPattern),
+    manager_ = CreatePaymentManager(GURL(kServiceWorkerScope),
                                     GURL(kServiceWorkerScript));
     EXPECT_NE(nullptr, manager_);
   }
diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc
index 267d942..2af523b 100644
--- a/content/browser/push_messaging/push_messaging_manager.cc
+++ b/content/browser/push_messaging/push_messaging_manager.cc
@@ -323,7 +323,7 @@
                           mojom::PushRegistrationStatus::NO_SERVICE_WORKER);
     return;
   }
-  data.requesting_origin = service_worker_registration->pattern().GetOrigin();
+  data.requesting_origin = service_worker_registration->scope().GetOrigin();
 
   DCHECK(!(data.options.sender_info.empty() && data.FromDocument()));
 
@@ -623,7 +623,7 @@
       base::BindOnce(&PushMessagingManager::UnsubscribeHavingGottenSenderId,
                      weak_factory_io_to_io_.GetWeakPtr(), std::move(callback),
                      service_worker_registration_id,
-                     service_worker_registration->pattern().GetOrigin()));
+                     service_worker_registration->scope().GetOrigin()));
 }
 
 void PushMessagingManager::UnsubscribeHavingGottenSenderId(
@@ -768,7 +768,7 @@
         break;
       }
 
-      const GURL origin = registration->pattern().GetOrigin();
+      const GURL origin = registration->scope().GetOrigin();
 
       const bool uses_standard_protocol = IsApplicationServerKey(sender_info);
       const GURL endpoint =
diff --git a/content/browser/renderer_host/input/fling_browsertest.cc b/content/browser/renderer_host/input/fling_browsertest.cc
index d586560..14afc422 100644
--- a/content/browser/renderer_host/input/fling_browsertest.cc
+++ b/content/browser/renderer_host/input/fling_browsertest.cc
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "build/build_config.h"
 #include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/test/browser_test_utils.h"
@@ -93,7 +92,7 @@
   void LoadPageWithOOPIF() {
     // navigate main frame to URL.
     GURL main_url(embedded_test_server()->GetURL(
-        "a.com", "/frame_tree/scrollable_page_with_positioned_frame.html"));
+        "a.com", "/frame_tree/page_with_positioned_frame.html"));
     EXPECT_TRUE(NavigateToURL(shell(), main_url));
 
     // Navigate oopif to URL.
@@ -120,29 +119,17 @@
         iframe_node->current_frame_host()->GetRenderWidgetHost()->GetView());
   }
 
-  void SimulateTouchscreenFling(
-      RenderWidgetHostImpl* render_widget_host,
-      RenderWidgetHostImpl* parent_render_widget_host = nullptr,
-      const gfx::Vector2dF& fling_velocity = gfx::Vector2dF(0.f, -2000.f)) {
+  void SimulateTouchscreenFling(RenderWidgetHostImpl* render_widget_host) {
     DCHECK(render_widget_host);
-    // Send a GSB to start scrolling sequence. In case of scroll bubbling wait
-    // for the parent to receive the GSB before sending the GFS.
-    auto input_msg_watcher =
-        parent_render_widget_host
-            ? std::make_unique<InputMsgWatcher>(
-                  parent_render_widget_host,
-                  blink::WebInputEvent::kGestureScrollBegin)
-            : std::make_unique<InputMsgWatcher>(
-                  render_widget_host,
-                  blink::WebInputEvent::kGestureScrollBegin);
+    // Send a GSB to start scrolling sequence.
     blink::WebGestureEvent gesture_scroll_begin(
         blink::WebGestureEvent::kGestureScrollBegin,
         blink::WebInputEvent::kNoModifiers, ui::EventTimeForNow());
     gesture_scroll_begin.SetSourceDevice(blink::kWebGestureDeviceTouchscreen);
     gesture_scroll_begin.data.scroll_begin.delta_hint_units =
         blink::WebGestureEvent::ScrollUnits::kPrecisePixels;
-    gesture_scroll_begin.data.scroll_begin.delta_x_hint = fling_velocity.x();
-    gesture_scroll_begin.data.scroll_begin.delta_y_hint = fling_velocity.y();
+    gesture_scroll_begin.data.scroll_begin.delta_x_hint = 0.f;
+    gesture_scroll_begin.data.scroll_begin.delta_y_hint = -5.f;
     const gfx::PointF scroll_location_in_widget(1, 1);
     const gfx::PointF scroll_location_in_root =
         child_view_ ? child_view_->TransformPointToRootCoordSpaceF(
@@ -155,39 +142,26 @@
     gesture_scroll_begin.SetPositionInWidget(scroll_location_in_widget);
     gesture_scroll_begin.SetPositionInScreen(scroll_location_in_screen);
     render_widget_host->ForwardGestureEvent(gesture_scroll_begin);
-    input_msg_watcher->GetAckStateWaitIfNecessary();
 
     //  Send a GFS.
     blink::WebGestureEvent gesture_fling_start(
         blink::WebGestureEvent::kGestureFlingStart,
         blink::WebInputEvent::kNoModifiers, ui::EventTimeForNow());
     gesture_fling_start.SetSourceDevice(blink::kWebGestureDeviceTouchscreen);
-    gesture_fling_start.data.fling_start.velocity_x = fling_velocity.x();
-    gesture_fling_start.data.fling_start.velocity_y = fling_velocity.y();
+    gesture_fling_start.data.fling_start.velocity_x = 0.f;
+    gesture_fling_start.data.fling_start.velocity_y = -2000.f;
     gesture_fling_start.SetPositionInWidget(scroll_location_in_widget);
     gesture_fling_start.SetPositionInScreen(scroll_location_in_screen);
     render_widget_host->ForwardGestureEvent(gesture_fling_start);
   }
 
-  void SimulateTouchpadFling(
-      RenderWidgetHostImpl* render_widget_host,
-      RenderWidgetHostImpl* parent_render_widget_host = nullptr,
-      const gfx::Vector2dF& fling_velocity = gfx::Vector2dF(0.f, -2000.f)) {
+  void SimulateTouchpadFling(RenderWidgetHostImpl* render_widget_host) {
     DCHECK(render_widget_host);
-    // Send a wheel event to start scrolling sequence. In case of scroll
-    // bubbling wait for the parent to receive the GSB before sending the GFS.
-    auto input_msg_watcher =
-        parent_render_widget_host
-            ? std::make_unique<InputMsgWatcher>(
-                  parent_render_widget_host,
-                  blink::WebInputEvent::kGestureScrollBegin)
-            : std::make_unique<InputMsgWatcher>(
-                  render_widget_host,
-                  blink::WebInputEvent::kGestureScrollBegin);
+    // Send a wheel event to start scrolling sequence.
+    auto input_msg_watcher = std::make_unique<InputMsgWatcher>(
+        GetWidgetHost(), blink::WebInputEvent::kMouseWheel);
     blink::WebMouseWheelEvent wheel_event =
-        SyntheticWebMouseWheelEventBuilder::Build(
-            10, 10, fling_velocity.x() / 1000, fling_velocity.y() / 1000, 0,
-            true);
+        SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, -53, 0, true);
     wheel_event.phase = blink::WebMouseWheelEvent::kPhaseBegan;
     const gfx::PointF position_in_widget(1, 1);
     const gfx::PointF position_in_root =
@@ -201,15 +175,15 @@
     wheel_event.SetPositionInWidget(position_in_widget);
     wheel_event.SetPositionInScreen(position_in_screen);
     render_widget_host->ForwardWheelEvent(wheel_event);
-    input_msg_watcher->GetAckStateWaitIfNecessary();
+    input_msg_watcher->WaitForAck();
 
     //  Send a GFS.
     blink::WebGestureEvent gesture_fling_start(
         blink::WebGestureEvent::kGestureFlingStart,
         blink::WebInputEvent::kNoModifiers, ui::EventTimeForNow());
     gesture_fling_start.SetSourceDevice(blink::kWebGestureDeviceTouchpad);
-    gesture_fling_start.data.fling_start.velocity_x = fling_velocity.x();
-    gesture_fling_start.data.fling_start.velocity_y = fling_velocity.y();
+    gesture_fling_start.data.fling_start.velocity_x = 0.f;
+    gesture_fling_start.data.fling_start.velocity_y = -2000.f;
     gesture_fling_start.SetPositionInWidget(position_in_widget);
     gesture_fling_start.SetPositionInScreen(position_in_screen);
     render_widget_host->ForwardGestureEvent(gesture_fling_start);
@@ -238,36 +212,25 @@
     run_loop.Run();
   }
 
-  void WaitForFrameScroll(FrameTreeNode* iframe_node,
-                          int target_scroll_offset = 100,
-                          bool upward = false) {
-    DCHECK(iframe_node);
-    double scroll_top =
-        EvalJs(iframe_node->current_frame_host(), "window.scrollY")
-            .ExtractDouble();
+  void WaitForChildScroll() {
+    FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents())
+                              ->GetFrameTree()
+                              ->root();
+    ASSERT_EQ(1U, root->child_count());
+    FrameTreeNode* iframe_node = root->child_at(0);
+    int scroll_top = EvalJs(iframe_node->current_frame_host(), "window.scrollY")
+                         .ExtractDouble();
     // scrollTop > 0 is not enough since the first progressFling is called from
-    // FlingController::ProcessGestureFlingStart. Wait for scrollTop to reach
-    // target_scroll_offset to make sure that ProgressFling has been called
-    // through FlingScheduler at least once.
-    while ((upward && scroll_top > target_scroll_offset) ||
-           (!upward && scroll_top < target_scroll_offset)) {
+    // FlingController::ProcessGestureFlingStart. Wait for scrollTop to exceed
+    // 100 pixels to make sure that ProgressFling has been called through
+    // FlingScheduler at least once.
+    while (scroll_top < 100) {
       GiveItSomeTime();
       scroll_top = EvalJs(iframe_node->current_frame_host(), "window.scrollY")
                        .ExtractDouble();
     }
   }
 
-  FrameTreeNode* GetRootNode() {
-    return static_cast<WebContentsImpl*>(shell()->web_contents())
-        ->GetFrameTree()
-        ->root();
-  }
-
-  FrameTreeNode* GetChildNode() {
-    FrameTreeNode* root = GetRootNode();
-    return root->child_at(0);
-  }
-
   std::unique_ptr<base::RunLoop> run_loop_;
   RenderWidgetHostViewBase* child_view_ = nullptr;
   RenderWidgetHostViewBase* root_view_ = nullptr;
@@ -276,10 +239,6 @@
   DISALLOW_COPY_AND_ASSIGN(BrowserSideFlingBrowserTest);
 };
 
-// On Mac we don't have any touchscreen/touchpad fling events (GFS/GFC).
-// Instead, the OS keeps sending wheel events when the user lifts their fingers
-// from touchpad.
-#if !defined(OS_MACOSX)
 IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest, TouchscreenFling) {
   LoadURL(kBrowserFlingDataURL);
   SimulateTouchscreenFling(GetWidgetHost());
@@ -322,88 +281,23 @@
 IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest, TouchscreenFlingInOOPIF) {
   LoadPageWithOOPIF();
   SimulateTouchscreenFling(child_view_->host());
-  WaitForFrameScroll(GetChildNode());
+  WaitForChildScroll();
 }
 IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest, TouchpadFlingInOOPIF) {
   LoadPageWithOOPIF();
-  SimulateTouchpadFling(child_view_->host());
-  WaitForFrameScroll(GetChildNode());
-}
-IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest,
-                       TouchscreenFlingBubblesFromOOPIF) {
-  LoadPageWithOOPIF();
-  // Scroll the parent down so that it is scrollable upward.
-  EXPECT_TRUE(
-      ExecJs(GetRootNode()->current_frame_host(), "window.scrollTo(0, 20)"));
-  // We expect to have window.scrollY == 20 after scrolling but with zoom for
-  // dsf enabled on android we get window.scrollY == 19 (see
-  // https://crbug.com/891860).
-  WaitForFrameScroll(GetRootNode(), 19);
-
-  // Fling and wait for the parent to scroll upward.
-  gfx::Vector2d fling_velocity(0, 2000);
-  SimulateTouchscreenFling(child_view_->host(), GetWidgetHost(),
-                           fling_velocity);
-  WaitForFrameScroll(GetRootNode(), 15, true /* upward */);
+  SimulateTouchscreenFling(child_view_->host());
+  WaitForChildScroll();
 }
 
-// Flaky, probably because of https://crbug.com/892656
-#define MAYBE_TouchpadFlingBubblesFromOOPIF \
-  DISABLED_TouchpadFlingBubblesFromOOPIF
-IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest,
-                       MAYBE_TouchpadFlingBubblesFromOOPIF) {
-  LoadPageWithOOPIF();
-  // Scroll the parent down so that it is scrollable upward.
-  EXPECT_TRUE(
-      ExecJs(GetRootNode()->current_frame_host(), "window.scrollTo(0, 20)"));
-  // We expect to have window.scrollY == 20 after scrolling but with zoom for
-  // dsf enabled on android we get window.scrollY == 19 (see
-  // https://crbug.com/891860).
-  WaitForFrameScroll(GetRootNode(), 19);
-
-  // Fling and wait for the parent to scroll upward.
-  gfx::Vector2d fling_velocity(0, 2000);
-  SimulateTouchpadFling(child_view_->host(), GetWidgetHost(), fling_velocity);
-  WaitForFrameScroll(GetRootNode(), 15, true /* upward */);
-}
-IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest, GFCGetsBubbledFromOOPIF) {
-  LoadPageWithOOPIF();
-  // Scroll the parent down so that it is scrollable upward.
-  EXPECT_TRUE(
-      ExecJs(GetRootNode()->current_frame_host(), "window.scrollTo(0, 20)"));
-  // We expect to have window.scrollY == 20 after scrolling but with zoom for
-  // dsf enabled on android we get window.scrollY == 19 (see
-  // https://crbug.com/891860).
-  WaitForFrameScroll(GetRootNode(), 19);
-
-  // Fling and wait for the parent to scroll upward.
-  gfx::Vector2d fling_velocity(0, 2000);
-  SimulateTouchscreenFling(child_view_->host(), GetWidgetHost(),
-                           fling_velocity);
-  WaitForFrameScroll(GetRootNode(), 15, true /* upward */);
-
-  // Send a GFC to the child and wait for it to get bubbled.
-  auto input_msg_watcher = std::make_unique<InputMsgWatcher>(
-      GetWidgetHost(), blink::WebInputEvent::kGestureFlingCancel);
-  blink::WebGestureEvent gesture_fling_cancel(
-      blink::WebGestureEvent::kGestureFlingCancel,
-      blink::WebInputEvent::kNoModifiers, ui::EventTimeForNow());
-  gesture_fling_cancel.SetSourceDevice(blink::kWebGestureDeviceTouchscreen);
-
-  const gfx::PointF location_in_widget(1, 1);
-  const gfx::PointF location_in_root =
-      child_view_->TransformPointToRootCoordSpaceF(location_in_widget);
-  const gfx::PointF location_in_screen =
-      location_in_root + root_view_->GetViewBounds().OffsetFromOrigin();
-  gesture_fling_cancel.SetPositionInWidget(location_in_widget);
-  gesture_fling_cancel.SetPositionInScreen(location_in_screen);
-  child_view_->host()->ForwardGestureEvent(gesture_fling_cancel);
-  input_msg_watcher->GetAckStateWaitIfNecessary();
-}
-
+// Disabled on MacOS because it doesn't support touchscreen scroll.
+#if defined(OS_MACOSX)
+#define MAYBE_ScrollEndGeneratedForFilteredFling \
+  DISABLED_ScrollEndGeneratedForFilteredFling
+#else
 // Flaky, see https://crbug.com/850455
 #define MAYBE_ScrollEndGeneratedForFilteredFling \
   DISABLED_ScrollEndGeneratedForFilteredFling
+#endif
 IN_PROC_BROWSER_TEST_F(BrowserSideFlingBrowserTest,
                        MAYBE_ScrollEndGeneratedForFilteredFling) {
   LoadURL(kTouchActionFilterDataURL);
@@ -454,6 +348,5 @@
   EXPECT_EQ(InputEventAckSource::BROWSER,
             scroll_end_watcher->last_event_ack_source());
 }
-#endif  // !defined(OS_MACOSX)
 
 }  // namespace content
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc
index bdcdf6b..db3a1e9 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.cc
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -293,9 +293,6 @@
   if (view == last_fling_start_target_)
     last_fling_start_target_ = nullptr;
 
-  if (view == last_fling_start_bubbled_target_)
-    last_fling_start_bubbled_target_ = nullptr;
-
   event_targeter_->ViewWillBeDestroyed(view);
 }
 
@@ -1004,8 +1001,7 @@
   DCHECK(event.GetType() == blink::WebInputEvent::kGestureScrollBegin ||
          event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
          event.GetType() == blink::WebInputEvent::kGestureScrollEnd ||
-         event.GetType() == blink::WebInputEvent::kGestureFlingStart ||
-         event.GetType() == blink::WebInputEvent::kGestureFlingCancel);
+         event.GetType() == blink::WebInputEvent::kGestureFlingStart);
 
   ui::LatencyInfo latency_info =
       ui::WebInputEventTraits::CreateLatencyInfoForWebGestureEvent(event);
@@ -1034,26 +1030,7 @@
     }
 
     bubbling_gesture_scroll_target_.target = target_view;
-  } else if (event.GetType() == blink::WebInputEvent::kGestureFlingCancel) {
-    // TODO(828422): Remove once this issue no longer occurs.
-    if (resending_view == last_fling_start_bubbled_target_) {
-      ReportBubblingScrollToSameView(event, resending_view);
-      last_fling_start_bubbled_target_ = nullptr;
-      return;
-    }
-    // GFC event must get bubbled to the same target view that the last GFS has
-    // been bubbled.
-    if (last_fling_start_bubbled_target_) {
-      last_fling_start_bubbled_target_->ProcessGestureEvent(
-          GestureEventInTarget(event, last_fling_start_bubbled_target_),
-          latency_info);
-      last_fling_start_bubbled_target_ = nullptr;
-    }
-    return;
   } else {  // !(event.GetType() == blink::WebInputEvent::kGestureScrollBegin)
-            // && !(event.GetType() ==
-            // blink::WebInputEvent::kGestureFlingCancel)
-
     if (!bubbling_gesture_scroll_target_.target) {
       // The GestureScrollBegin event is not bubbled, don't bubble the rest of
       // the scroll events.
@@ -1085,12 +1062,6 @@
   bubbling_gesture_scroll_target_.target->ProcessGestureEvent(
       GestureEventInTarget(event, bubbling_gesture_scroll_target_.target),
       latency_info);
-
-  // The GFC should be sent to the view that handles the GFS.
-  if (event.GetType() == blink::WebInputEvent::kGestureFlingStart) {
-    last_fling_start_bubbled_target_ = bubbling_gesture_scroll_target_.target;
-  }
-
   if (event.GetType() == blink::WebInputEvent::kGestureScrollEnd ||
       event.GetType() == blink::WebInputEvent::kGestureFlingStart) {
     first_bubbling_scroll_target_.target = nullptr;
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.h b/content/browser/renderer_host/render_widget_host_input_event_router.h
index 4e6d5a81..a453fcb 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.h
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.h
@@ -308,12 +308,6 @@
   // Tracked for the purpose of targeting subsequent fling cancel events.
   RenderWidgetHostViewBase* last_fling_start_target_ = nullptr;
 
-  // During scroll bubbling we bubble the GFS to the target view so that its
-  // fling controller takes care of flinging. In this case we should also send
-  // the GFC to the bubbling target so that the fling controller currently in
-  // charge of the fling progress could handle the fling cancellelation as well.
-  RenderWidgetHostViewBase* last_fling_start_bubbled_target_ = nullptr;
-
   // Tracked for the purpose of providing a root_view when dispatching emulated
   // touch/gesture events.
   RenderWidgetHostViewBase* last_emulated_event_root_view_;
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
index 31b467e..40164dd7 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -528,24 +528,6 @@
       ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS ||
       ack_result == INPUT_EVENT_ACK_STATE_CONSUMED_SHOULD_BUBBLE;
 
-// The inertial events on Mac should still get bubbled since there is no GFS to
-// bubble and the inertial events are received from the OS.
-#if !defined(OS_MACOSX)
-  // When a GFS is bubbled, we still send it to the fling controller of the
-  // child view to finish the scroll sequence. However the GSU and GSE events
-  // that are generated by the child view's fling controller do not need to get
-  // bubbled since the GFS event itself is bubbled and the target's fling
-  // controller will take care of flinging.
-  if ((event.GetType() == blink::WebInputEvent::kGestureScrollEnd &&
-       event.data.scroll_end.inertial_phase ==
-           blink::WebGestureEvent::kMomentumPhase) ||
-      (event.GetType() == blink::WebInputEvent::kGestureScrollUpdate &&
-       event.data.scroll_update.inertial_phase ==
-           blink::WebGestureEvent::kMomentumPhase)) {
-    return;
-  }
-#endif  // defined(OS_MACOSX)
-
   if ((event.GetType() == blink::WebInputEvent::kGestureScrollBegin) &&
       should_bubble) {
     DCHECK(!is_scroll_sequence_bubbling_);
@@ -564,8 +546,7 @@
        should_bubble) ||
       event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
       event.GetType() == blink::WebInputEvent::kGestureScrollEnd ||
-      event.GetType() == blink::WebInputEvent::kGestureFlingStart ||
-      event.GetType() == blink::WebInputEvent::kGestureFlingCancel) {
+      event.GetType() == blink::WebInputEvent::kGestureFlingStart) {
     frame_connector_->BubbleScrollEvent(event);
   }
 }
diff --git a/content/browser/service_worker/embedded_worker_instance_unittest.cc b/content/browser/service_worker/embedded_worker_instance_unittest.cc
index eb96a73..10d12ea 100644
--- a/content/browser/service_worker/embedded_worker_instance_unittest.cc
+++ b/content/browser/service_worker/embedded_worker_instance_unittest.cc
@@ -290,10 +290,10 @@
 };
 
 TEST_P(EmbeddedWorkerInstanceTest, StartAndStop) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status());
@@ -329,10 +329,10 @@
 // Test that a worker that failed twice will use a new render process
 // on the next attempt.
 TEST_P(EmbeddedWorkerInstanceTest, ForceNewProcess) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   const int64_t service_worker_version_id = pair.second->version_id();
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
@@ -367,10 +367,10 @@
 }
 
 TEST_P(EmbeddedWorkerInstanceTest, StopWhenDevToolsAttached) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status());
@@ -406,15 +406,13 @@
 // Test that the removal of a worker from the registry doesn't remove
 // other workers in the same process.
 TEST_P(EmbeddedWorkerInstanceTest, RemoveWorkerInSharedProcess) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
-  RegistrationAndVersionPair pair1 =
-      PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair1 = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker1 =
       embedded_worker_registry()->CreateWorker(pair1.second.get());
-  RegistrationAndVersionPair pair2 =
-      PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair2 = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker2 =
       embedded_worker_registry()->CreateWorker(pair2.second.get());
 
@@ -634,10 +632,10 @@
 }
 
 TEST_P(EmbeddedWorkerInstanceTest, Detach) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   worker->AddObserver(this);
@@ -660,13 +658,13 @@
 
 // Test for when sending the start IPC failed.
 TEST_P(EmbeddedWorkerInstanceTest, FailToSendStartIPC) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
   // Let StartWorker fail; mojo IPC fails to connect to a remote interface.
   helper_->RegisterMockInstanceClient(nullptr);
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   worker->AddObserver(this);
@@ -706,7 +704,7 @@
 };
 
 TEST_P(EmbeddedWorkerInstanceTest, RemoveRemoteInterface) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
 
   // Let StartWorker fail; binding is discarded in the middle of IPC
@@ -715,7 +713,7 @@
           helper_->AsWeakPtr()));
   ASSERT_EQ(mock_instance_clients()->size(), 1UL);
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   worker->AddObserver(this);
@@ -760,7 +758,7 @@
 };
 
 TEST_P(EmbeddedWorkerInstanceTest, AddMessageToConsole) {
-  const GURL pattern("http://example.com/");
+  const GURL scope("http://example.com/");
   const GURL url("http://example.com/worker.js");
   std::unique_ptr<StoreMessageInstanceClient> instance_client =
       std::make_unique<StoreMessageInstanceClient>(helper_->AsWeakPtr());
@@ -768,7 +766,7 @@
   helper_->RegisterMockInstanceClient(std::move(instance_client));
   ASSERT_EQ(mock_instance_clients()->size(), 1UL);
 
-  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(pattern, url);
+  RegistrationAndVersionPair pair = PrepareRegistrationAndVersion(scope, url);
   std::unique_ptr<EmbeddedWorkerInstance> worker =
       embedded_worker_registry()->CreateWorker(pair.second.get());
   worker->AddObserver(this);
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index 078dc4f..cd6cead 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -642,9 +642,9 @@
 
   void SetUpRegistrationOnIOThread(const std::string& worker_url) {
     ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
-    const GURL pattern = embedded_test_server()->GetURL("/service_worker/");
+    const GURL scope = embedded_test_server()->GetURL("/service_worker/");
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = pattern;
+    options.scope = scope;
     registration_ = new ServiceWorkerRegistration(
         options, wrapper()->context()->storage()->NewRegistrationId(),
         wrapper()->context()->AsWeakPtr());
@@ -1120,8 +1120,7 @@
   // the stored one.
   RunOnIOThread(base::BindOnce(&self::RemoveLiveRegistrationOnIOThread,
                                base::Unretained(this), registration_->id()));
-  FindRegistrationForId(registration_->id(),
-                        registration_->pattern().GetOrigin(),
+  FindRegistrationForId(registration_->id(), registration_->scope().GetOrigin(),
                         blink::ServiceWorkerStatusCode::kErrorNotFound);
 }
 
@@ -1163,8 +1162,7 @@
   // the stored one.
   RunOnIOThread(base::BindOnce(&self::RemoveLiveRegistrationOnIOThread,
                                base::Unretained(this), registration_->id()));
-  FindRegistrationForId(registration_->id(),
-                        registration_->pattern().GetOrigin(),
+  FindRegistrationForId(registration_->id(), registration_->scope().GetOrigin(),
                         blink::ServiceWorkerStatusCode::kOk);
 }
 
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
index e7e9dfa0..c7ab050f 100644
--- a/content/browser/service_worker/service_worker_context_core.cc
+++ b/content/browser/service_worker/service_worker_context_core.cc
@@ -155,7 +155,7 @@
     }
     for (const auto& registration_info : registrations) {
       context->UnregisterServiceWorker(
-          registration_info.pattern,
+          registration_info.scope,
           base::BindOnce(&ClearAllServiceWorkersHelper::OnResult, this));
     }
   }
@@ -481,12 +481,12 @@
 }
 
 void ServiceWorkerContextCore::UnregisterServiceWorker(
-    const GURL& pattern,
+    const GURL& scope,
     UnregistrationCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   job_coordinator_->Unregister(
-      pattern, base::BindOnce(&ServiceWorkerContextCore::UnregistrationComplete,
-                              AsWeakPtr(), pattern, std::move(callback)));
+      scope, base::BindOnce(&ServiceWorkerContextCore::UnregistrationComplete,
+                            AsWeakPtr(), scope, std::move(callback)));
 }
 
 void ServiceWorkerContextCore::DeleteForOrigin(const GURL& origin,
@@ -523,7 +523,7 @@
       barrier.Run();
     }
     UnregisterServiceWorker(
-        registration->pattern(),
+        registration->scope(),
         base::BindOnce(&SuccessCollectorCallback, barrier, overall_success));
   }
 }
@@ -535,7 +535,7 @@
 }
 
 void ServiceWorkerContextCore::RegistrationComplete(
-    const GURL& pattern,
+    const GURL& scope,
     ServiceWorkerContextCore::RegistrationCallback callback,
     blink::ServiceWorkerStatusCode status,
     const std::string& status_message,
@@ -553,7 +553,7 @@
   // persisted anything to storage yet.
   observer_list_->Notify(
       FROM_HERE, &ServiceWorkerContextCoreObserver::OnRegistrationCompleted,
-      registration->id(), pattern);
+      registration->id(), scope);
 }
 
 void ServiceWorkerContextCore::UpdateComplete(
@@ -573,7 +573,7 @@
 }
 
 void ServiceWorkerContextCore::UnregistrationComplete(
-    const GURL& pattern,
+    const GURL& scope,
     ServiceWorkerContextCore::UnregistrationCallback callback,
     int64_t registration_id,
     blink::ServiceWorkerStatusCode status) {
@@ -581,7 +581,7 @@
   if (status == blink::ServiceWorkerStatusCode::kOk) {
     observer_list_->Notify(
         FROM_HERE, &ServiceWorkerContextCoreObserver::OnRegistrationDeleted,
-        registration_id, pattern);
+        registration_id, scope);
   }
 }
 
@@ -617,7 +617,7 @@
   live_registrations_[registration->id()] = registration;
   observer_list_->Notify(
       FROM_HERE, &ServiceWorkerContextCoreObserver::OnNewLiveRegistration,
-      registration->id(), registration->pattern());
+      registration->id(), registration->scope());
 }
 
 void ServiceWorkerContextCore::RemoveLiveRegistration(int64_t id) {
@@ -758,11 +758,11 @@
 }
 
 void ServiceWorkerContextCore::NotifyRegistrationStored(int64_t registration_id,
-                                                        const GURL& pattern) {
+                                                        const GURL& scope) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   observer_list_->Notify(
       FROM_HERE, &ServiceWorkerContextCoreObserver::OnRegistrationStored,
-      registration_id, pattern);
+      registration_id, scope);
 }
 
 void ServiceWorkerContextCore::OnStorageWiped() {
@@ -872,7 +872,7 @@
     return;
   }
 
-  if (!ServiceWorkerUtils::ScopeMatches(registration->pattern(), other_url)) {
+  if (!ServiceWorkerUtils::ScopeMatches(registration->scope(), other_url)) {
     std::move(callback).Run(ServiceWorkerCapability::NO_SERVICE_WORKER);
     return;
   }
diff --git a/content/browser/service_worker/service_worker_context_core.h b/content/browser/service_worker/service_worker_context_core.h
index e75d5b6f..282becd 100644
--- a/content/browser/service_worker/service_worker_context_core.h
+++ b/content/browser/service_worker/service_worker_context_core.h
@@ -203,7 +203,7 @@
       const GURL& script_url,
       const blink::mojom::ServiceWorkerRegistrationOptions& options,
       RegistrationCallback callback);
-  void UnregisterServiceWorker(const GURL& pattern,
+  void UnregisterServiceWorker(const GURL& scope,
                                UnregistrationCallback callback);
 
   // Callback is called after all deletions occured. The status code is
@@ -279,7 +279,7 @@
   int GetVersionFailureCount(int64_t version_id);
 
   // Called by ServiceWorkerStorage when StoreRegistration() succeeds.
-  void NotifyRegistrationStored(int64_t registration_id, const GURL& pattern);
+  void NotifyRegistrationStored(int64_t registration_id, const GURL& scope);
 
   URLLoaderFactoryGetter* loader_factory_getter() {
     return loader_factory_getter_.get();
@@ -303,7 +303,7 @@
 
   ProviderMap* GetProviderMapForProcess(int process_id);
 
-  void RegistrationComplete(const GURL& pattern,
+  void RegistrationComplete(const GURL& scope,
                             RegistrationCallback callback,
                             blink::ServiceWorkerStatusCode status,
                             const std::string& status_message,
@@ -314,7 +314,7 @@
                       const std::string& status_message,
                       ServiceWorkerRegistration* registration);
 
-  void UnregistrationComplete(const GURL& pattern,
+  void UnregistrationComplete(const GURL& scope,
                               UnregistrationCallback callback,
                               int64_t registration_id,
                               blink::ServiceWorkerStatusCode status);
diff --git a/content/browser/service_worker/service_worker_context_core_observer.h b/content/browser/service_worker/service_worker_context_core_observer.h
index cc4a5d6..7145c623 100644
--- a/content/browser/service_worker/service_worker_context_core_observer.h
+++ b/content/browser/service_worker/service_worker_context_core_observer.h
@@ -59,7 +59,7 @@
     const GURL source_url;
   };
   virtual void OnNewLiveRegistration(int64_t registration_id,
-                                     const GURL& pattern) {}
+                                     const GURL& scope) {}
   virtual void OnNewLiveVersion(const ServiceWorkerVersionInfo& version_info) {}
   virtual void OnRunningStateChanged(int64_t version_id,
                                      EmbeddedWorkerStatus running_status) {}
@@ -90,16 +90,16 @@
   // storage. The implementation cannot assume that the ServiceWorkerContextCore
   // will find the registration at this point.
   virtual void OnRegistrationCompleted(int64_t registration_id,
-                                       const GURL& pattern) {}
+                                       const GURL& scope) {}
   // Called after a service worker registration is persisted to storage.
   //
   // This happens after OnRegistrationCompleted(). The implementation can assume
   // that ServiceWorkerContextCore will find the registration, and can safely
   // add user data to the registration.
   virtual void OnRegistrationStored(int64_t registration_id,
-                                    const GURL& pattern) {}
+                                    const GURL& scope) {}
   virtual void OnRegistrationDeleted(int64_t registration_id,
-                                     const GURL& pattern) {}
+                                     const GURL& scope) {}
 
   // Notified when the storage corruption recovery is completed and all stored
   // data is wiped out.
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index acf4e1d..25d9dfe5 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -119,7 +119,7 @@
 
 struct NotificationLog {
   NotificationType type;
-  GURL pattern;
+  GURL scope;
   int64_t registration_id;
 };
 
@@ -140,26 +140,26 @@
 
   // ServiceWorkerContextCoreObserver overrides.
   void OnRegistrationCompleted(int64_t registration_id,
-                               const GURL& pattern) override {
+                               const GURL& scope) override {
     NotificationLog log;
     log.type = REGISTRATION_COMPLETED;
-    log.pattern = pattern;
+    log.scope = scope;
     log.registration_id = registration_id;
     notifications_.push_back(log);
   }
   void OnRegistrationStored(int64_t registration_id,
-                            const GURL& pattern) override {
+                            const GURL& scope) override {
     NotificationLog log;
     log.type = REGISTRATION_STORED;
-    log.pattern = pattern;
+    log.scope = scope;
     log.registration_id = registration_id;
     notifications_.push_back(log);
   }
   void OnRegistrationDeleted(int64_t registration_id,
-                             const GURL& pattern) override {
+                             const GURL& scope) override {
     NotificationLog log;
     log.type = REGISTRATION_DELETED;
-    log.pattern = pattern;
+    log.scope = scope;
     log.registration_id = registration_id;
     notifications_.push_back(log);
   }
@@ -273,10 +273,10 @@
 
 // Make sure OnRegistrationCompleted is called on observer.
 TEST_F(ServiceWorkerContextTest, RegistrationCompletedObserver) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   TestServiceWorkerContextObserver observer(context_wrapper());
 
@@ -291,18 +291,18 @@
   ASSERT_EQ(2u, observer.events().size());
   EXPECT_EQ(TestServiceWorkerContextObserver::EventType::RegistrationCompleted,
             observer.events()[0].type);
-  EXPECT_EQ(pattern, observer.events()[0].url);
+  EXPECT_EQ(scope, observer.events()[0].url);
   EXPECT_EQ(TestServiceWorkerContextObserver::EventType::VersionActivated,
             observer.events()[1].type);
-  EXPECT_EQ(pattern, observer.events()[1].url);
+  EXPECT_EQ(scope, observer.events()[1].url);
 }
 
 // Make sure OnNoControllees is called on observer.
 TEST_F(ServiceWorkerContextTest, NoControlleesObserver) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   auto registration = base::MakeRefCounted<ServiceWorkerRegistration>(
       options, 1l /* dummy registration id */, context()->AsWeakPtr());
@@ -327,16 +327,16 @@
   ASSERT_EQ(1u, observer.events().size());
   EXPECT_EQ(TestServiceWorkerContextObserver::EventType::NoControllees,
             observer.events()[0].type);
-  EXPECT_EQ(pattern, observer.events()[0].url);
+  EXPECT_EQ(scope, observer.events()[0].url);
   EXPECT_EQ(2l, observer.events()[0].version_id);
 }
 
 // Make sure OnVersionActivated is called on observer.
 TEST_F(ServiceWorkerContextTest, VersionActivatedObserver) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   auto registration = base::MakeRefCounted<ServiceWorkerRegistration>(
       options, 1l /* dummy registration id */, context()->AsWeakPtr());
@@ -360,10 +360,10 @@
 
 // Make sure OnVersionRedundant is called on observer.
 TEST_F(ServiceWorkerContextTest, VersionRedundantObserver) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   auto registration = base::MakeRefCounted<ServiceWorkerRegistration>(
       options, 1l /* dummy registration id */, context()->AsWeakPtr());
@@ -387,10 +387,10 @@
 
 // Make sure basic registration is working.
 TEST_F(ServiceWorkerContextTest, Register) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   RecordableEmbeddedWorkerInstanceClient* client = nullptr;
   client = helper_->CreateAndRegisterMockInstanceClient<
@@ -418,14 +418,14 @@
 
   ASSERT_EQ(2u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(registration_id, notifications_[0].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
-  EXPECT_EQ(pattern, notifications_[1].pattern);
+  EXPECT_EQ(scope, notifications_[1].scope);
   EXPECT_EQ(registration_id, notifications_[1].registration_id);
 
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -436,10 +436,10 @@
 // registration callback should indicate success, but there should be no waiting
 // or active worker in the registration.
 TEST_F(ServiceWorkerContextTest, Register_RejectInstall) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   helper_.reset();  // Make sure the process lookups stay overridden.
   helper_.reset(new RejectInstallTestHelper);
@@ -471,11 +471,11 @@
 
   ASSERT_EQ(1u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(registration_id, notifications_[0].registration_id);
 
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
@@ -485,10 +485,10 @@
 // Test registration when the service worker rejects the activate event. The
 // worker should be activated anyway.
 TEST_F(ServiceWorkerContextTest, Register_RejectActivate) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   helper_.reset();
   helper_.reset(new RejectActivateTestHelper);
@@ -520,14 +520,14 @@
 
   ASSERT_EQ(2u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(registration_id, notifications_[0].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
-  EXPECT_EQ(pattern, notifications_[1].pattern);
+  EXPECT_EQ(scope, notifications_[1].scope);
   EXPECT_EQ(registration_id, notifications_[1].registration_id);
 
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -536,9 +536,9 @@
 
 // Make sure registrations are cleaned up when they are unregistered.
 TEST_F(ServiceWorkerContextTest, Unregister) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   bool called = false;
   int64_t registration_id = blink::mojom::kInvalidServiceWorkerRegistrationId;
@@ -552,15 +552,14 @@
   EXPECT_NE(blink::mojom::kInvalidServiceWorkerRegistrationId, registration_id);
 
   called = false;
-  context()->UnregisterServiceWorker(pattern,
-                                     MakeUnregisteredCallback(&called));
+  context()->UnregisterServiceWorker(scope, MakeUnregisteredCallback(&called));
 
   ASSERT_FALSE(called);
   base::RunLoop().RunUntilIdle();
   ASSERT_TRUE(called);
 
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
@@ -568,22 +567,22 @@
 
   ASSERT_EQ(3u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(registration_id, notifications_[0].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
-  EXPECT_EQ(pattern, notifications_[1].pattern);
+  EXPECT_EQ(scope, notifications_[1].scope);
   EXPECT_EQ(registration_id, notifications_[1].registration_id);
   EXPECT_EQ(REGISTRATION_DELETED, notifications_[2].type);
-  EXPECT_EQ(pattern, notifications_[2].pattern);
+  EXPECT_EQ(scope, notifications_[2].scope);
   EXPECT_EQ(registration_id, notifications_[2].registration_id);
 }
 
 // Make sure registrations are cleaned up when they are unregistered in bulk.
 TEST_F(ServiceWorkerContextTest, UnregisterMultiple) {
-  GURL origin1_p1("https://www.example.com/test");
-  GURL origin1_p2("https://www.example.com/hello");
-  GURL origin2_p1("https://www.example.com:8080/again");
-  GURL origin3_p1("https://www.other.com/");
+  GURL origin1_s1("https://www.example.com/test");
+  GURL origin1_s2("https://www.example.com/hello");
+  GURL origin2_s1("https://www.example.com:8080/again");
+  GURL origin3_s1("https://www.other.com/");
   int64_t registration_id1 = blink::mojom::kInvalidServiceWorkerRegistrationId;
   int64_t registration_id2 = blink::mojom::kInvalidServiceWorkerRegistrationId;
   int64_t registration_id3 = blink::mojom::kInvalidServiceWorkerRegistrationId;
@@ -592,7 +591,7 @@
   {
     bool called = false;
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = origin1_p1;
+    options.scope = origin1_s1;
     context()->RegisterServiceWorker(
         GURL("https://www.example.com/service_worker.js"), options,
         MakeRegisteredCallback(&called, &registration_id1));
@@ -604,7 +603,7 @@
   {
     bool called = false;
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = origin1_p2;
+    options.scope = origin1_s2;
     context()->RegisterServiceWorker(
         GURL("https://www.example.com/service_worker2.js"), options,
         MakeRegisteredCallback(&called, &registration_id2));
@@ -616,7 +615,7 @@
   {
     bool called = false;
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = origin2_p1;
+    options.scope = origin2_s1;
     context()->RegisterServiceWorker(
         GURL("https://www.example.com:8080/service_worker3.js"), options,
         MakeRegisteredCallback(&called, &registration_id3));
@@ -628,7 +627,7 @@
   {
     bool called = false;
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = origin3_p1;
+    options.scope = origin3_s1;
     context()->RegisterServiceWorker(
         GURL("https://www.other.com/service_worker4.js"), options,
         MakeRegisteredCallback(&called, &registration_id4));
@@ -647,7 +646,7 @@
             registration_id4);
 
   bool called = false;
-  context()->DeleteForOrigin(origin1_p1.GetOrigin(),
+  context()->DeleteForOrigin(origin1_s1.GetOrigin(),
                              MakeUnregisteredCallback(&called));
 
   ASSERT_FALSE(called);
@@ -655,23 +654,23 @@
   ASSERT_TRUE(called);
 
   context()->storage()->FindRegistrationForId(
-      registration_id1, origin1_p1.GetOrigin(),
+      registration_id1, origin1_s1.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
   context()->storage()->FindRegistrationForId(
-      registration_id2, origin1_p2.GetOrigin(),
+      registration_id2, origin1_s2.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
   context()->storage()->FindRegistrationForId(
-      registration_id3, origin2_p1.GetOrigin(),
+      registration_id3, origin2_s1.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
 
   context()->storage()->FindRegistrationForId(
-      registration_id4, origin3_p1.GetOrigin(),
+      registration_id4, origin3_s1.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -681,41 +680,41 @@
   ASSERT_EQ(10u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
   EXPECT_EQ(registration_id1, notifications_[0].registration_id);
-  EXPECT_EQ(origin1_p1, notifications_[0].pattern);
+  EXPECT_EQ(origin1_s1, notifications_[0].scope);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
   EXPECT_EQ(registration_id1, notifications_[1].registration_id);
-  EXPECT_EQ(origin1_p1, notifications_[1].pattern);
+  EXPECT_EQ(origin1_s1, notifications_[1].scope);
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[2].type);
-  EXPECT_EQ(origin1_p2, notifications_[2].pattern);
+  EXPECT_EQ(origin1_s2, notifications_[2].scope);
   EXPECT_EQ(registration_id2, notifications_[2].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[3].type);
-  EXPECT_EQ(origin1_p2, notifications_[3].pattern);
+  EXPECT_EQ(origin1_s2, notifications_[3].scope);
   EXPECT_EQ(registration_id2, notifications_[3].registration_id);
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[4].type);
-  EXPECT_EQ(origin2_p1, notifications_[4].pattern);
+  EXPECT_EQ(origin2_s1, notifications_[4].scope);
   EXPECT_EQ(registration_id3, notifications_[4].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[5].type);
-  EXPECT_EQ(origin2_p1, notifications_[5].pattern);
+  EXPECT_EQ(origin2_s1, notifications_[5].scope);
   EXPECT_EQ(registration_id3, notifications_[5].registration_id);
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[6].type);
-  EXPECT_EQ(origin3_p1, notifications_[6].pattern);
+  EXPECT_EQ(origin3_s1, notifications_[6].scope);
   EXPECT_EQ(registration_id4, notifications_[6].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[7].type);
-  EXPECT_EQ(origin3_p1, notifications_[7].pattern);
+  EXPECT_EQ(origin3_s1, notifications_[7].scope);
   EXPECT_EQ(registration_id4, notifications_[7].registration_id);
   EXPECT_EQ(REGISTRATION_DELETED, notifications_[8].type);
-  EXPECT_EQ(origin1_p1, notifications_[8].pattern);
+  EXPECT_EQ(origin1_s1, notifications_[8].scope);
   EXPECT_EQ(registration_id1, notifications_[8].registration_id);
   EXPECT_EQ(REGISTRATION_DELETED, notifications_[9].type);
-  EXPECT_EQ(origin1_p2, notifications_[9].pattern);
+  EXPECT_EQ(origin1_s2, notifications_[9].scope);
   EXPECT_EQ(registration_id2, notifications_[9].registration_id);
 }
 
 // Make sure registering a new script shares an existing registration.
 TEST_F(ServiceWorkerContextTest, RegisterNewScript) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   bool called = false;
   int64_t old_registration_id =
@@ -747,26 +746,26 @@
 
   ASSERT_EQ(4u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(old_registration_id, notifications_[0].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
-  EXPECT_EQ(pattern, notifications_[1].pattern);
+  EXPECT_EQ(scope, notifications_[1].scope);
   EXPECT_EQ(old_registration_id, notifications_[1].registration_id);
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[2].type);
-  EXPECT_EQ(pattern, notifications_[2].pattern);
+  EXPECT_EQ(scope, notifications_[2].scope);
   EXPECT_EQ(new_registration_id, notifications_[2].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[3].type);
-  EXPECT_EQ(pattern, notifications_[3].pattern);
+  EXPECT_EQ(scope, notifications_[3].scope);
   EXPECT_EQ(new_registration_id, notifications_[3].registration_id);
 }
 
-// Make sure that when registering a duplicate pattern+script_url
+// Make sure that when registering a duplicate scope+script_url
 // combination, that the same registration is used.
 TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   bool called = false;
   int64_t old_registration_id =
@@ -795,13 +794,13 @@
 
   ASSERT_EQ(3u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(old_registration_id, notifications_[0].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
-  EXPECT_EQ(pattern, notifications_[1].pattern);
+  EXPECT_EQ(scope, notifications_[1].scope);
   EXPECT_EQ(old_registration_id, notifications_[1].registration_id);
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[2].type);
-  EXPECT_EQ(pattern, notifications_[2].pattern);
+  EXPECT_EQ(scope, notifications_[2].scope);
   EXPECT_EQ(old_registration_id, notifications_[2].registration_id);
 }
 
@@ -912,10 +911,10 @@
 };
 
 TEST_P(ServiceWorkerContextRecoveryTest, DeleteAndStartOver) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = pattern;
+  options.scope = scope;
 
   if (is_storage_on_disk()) {
     // Reinitialize the helper to test on-disk storage.
@@ -935,7 +934,7 @@
   EXPECT_TRUE(called);
 
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -946,7 +945,7 @@
   // The storage is disabled while the recovery process is running, so the
   // operation should be aborted.
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorAbort,
                      false /* expect_waiting */, true /* expect_active */));
@@ -955,7 +954,7 @@
   // The context started over and the storage was re-initialized, so the
   // registration should not be found.
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, true /* expect_active */));
@@ -970,7 +969,7 @@
   EXPECT_TRUE(called);
 
   context()->storage()->FindRegistrationForId(
-      registration_id, pattern.GetOrigin(),
+      registration_id, scope.GetOrigin(),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -978,17 +977,17 @@
 
   ASSERT_EQ(5u, notifications_.size());
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[0].type);
-  EXPECT_EQ(pattern, notifications_[0].pattern);
+  EXPECT_EQ(scope, notifications_[0].scope);
   EXPECT_EQ(registration_id, notifications_[0].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[1].type);
-  EXPECT_EQ(pattern, notifications_[1].pattern);
+  EXPECT_EQ(scope, notifications_[1].scope);
   EXPECT_EQ(registration_id, notifications_[1].registration_id);
   EXPECT_EQ(STORAGE_RECOVERED, notifications_[2].type);
   EXPECT_EQ(REGISTRATION_COMPLETED, notifications_[3].type);
-  EXPECT_EQ(pattern, notifications_[3].pattern);
+  EXPECT_EQ(scope, notifications_[3].scope);
   EXPECT_EQ(registration_id, notifications_[3].registration_id);
   EXPECT_EQ(REGISTRATION_STORED, notifications_[4].type);
-  EXPECT_EQ(pattern, notifications_[4].pattern);
+  EXPECT_EQ(scope, notifications_[4].scope);
   EXPECT_EQ(registration_id, notifications_[4].registration_id);
 }
 
diff --git a/content/browser/service_worker/service_worker_context_watcher.cc b/content/browser/service_worker/service_worker_context_watcher.cc
index 594ed900..9009603 100644
--- a/content/browser/service_worker/service_worker_context_watcher.cc
+++ b/content/browser/service_worker/service_worker_context_watcher.cc
@@ -148,7 +148,7 @@
 
 void ServiceWorkerContextWatcher::SendRegistrationInfo(
     int64_t registration_id,
-    const GURL& pattern,
+    const GURL& scope,
     ServiceWorkerRegistrationInfo::DeleteFlag delete_flag) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   std::unique_ptr<std::vector<ServiceWorkerRegistrationInfo>> registrations =
@@ -159,7 +159,7 @@
     registrations->push_back(registration->GetInfo());
   } else {
     registrations->push_back(
-        ServiceWorkerRegistrationInfo(pattern, registration_id, delete_flag));
+        ServiceWorkerRegistrationInfo(scope, registration_id, delete_flag));
   }
   base::PostTaskWithTraits(
       FROM_HERE, {BrowserThread::UI},
@@ -208,9 +208,9 @@
 }
 
 void ServiceWorkerContextWatcher::OnNewLiveRegistration(int64_t registration_id,
-                                                        const GURL& pattern) {
+                                                        const GURL& scope) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  SendRegistrationInfo(registration_id, pattern,
+  SendRegistrationInfo(registration_id, scope,
                        ServiceWorkerRegistrationInfo::IS_NOT_DELETED);
 }
 
@@ -361,16 +361,16 @@
 
 void ServiceWorkerContextWatcher::OnRegistrationCompleted(
     int64_t registration_id,
-    const GURL& pattern) {
+    const GURL& scope) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  SendRegistrationInfo(registration_id, pattern,
+  SendRegistrationInfo(registration_id, scope,
                        ServiceWorkerRegistrationInfo::IS_NOT_DELETED);
 }
 
 void ServiceWorkerContextWatcher::OnRegistrationDeleted(int64_t registration_id,
-                                                        const GURL& pattern) {
+                                                        const GURL& scope) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  SendRegistrationInfo(registration_id, pattern,
+  SendRegistrationInfo(registration_id, scope,
                        ServiceWorkerRegistrationInfo::IS_DELETED);
 }
 
diff --git a/content/browser/service_worker/service_worker_context_watcher.h b/content/browser/service_worker/service_worker_context_watcher.h
index 3d3e20c..756ab37 100644
--- a/content/browser/service_worker/service_worker_context_watcher.h
+++ b/content/browser/service_worker/service_worker_context_watcher.h
@@ -67,7 +67,7 @@
 
   void SendRegistrationInfo(
       int64_t registration_id,
-      const GURL& pattern,
+      const GURL& scope,
       ServiceWorkerRegistrationInfo::DeleteFlag delete_flag);
   void SendVersionInfo(const ServiceWorkerVersionInfo& version);
 
@@ -82,7 +82,7 @@
 
   // ServiceWorkerContextCoreObserver implements
   void OnNewLiveRegistration(int64_t registration_id,
-                             const GURL& pattern) override;
+                             const GURL& scope) override;
   void OnNewLiveVersion(const ServiceWorkerVersionInfo& version_info) override;
   void OnRunningStateChanged(
       int64_t version_id,
@@ -110,9 +110,9 @@
                            const GURL& scope,
                            const std::string& uuid) override;
   void OnRegistrationCompleted(int64_t registration_id,
-                               const GURL& pattern) override;
+                               const GURL& scope) override;
   void OnRegistrationDeleted(int64_t registration_id,
-                             const GURL& pattern) override;
+                             const GURL& scope) override;
 
   std::unordered_map<int64_t, std::unique_ptr<ServiceWorkerVersionInfo>>
       version_info_map_;
diff --git a/content/browser/service_worker/service_worker_context_watcher_unittest.cc b/content/browser/service_worker/service_worker_context_watcher_unittest.cc
index 5ba18ee1..9505282 100644
--- a/content/browser/service_worker/service_worker_context_watcher_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_watcher_unittest.cc
@@ -212,9 +212,9 @@
 
   ASSERT_EQ(2u, watcher_callback.registrations().size());
   EXPECT_EQ(scope_1,
-            watcher_callback.registrations().at(registration_id_1).pattern);
+            watcher_callback.registrations().at(registration_id_1).scope);
   EXPECT_EQ(scope_2,
-            watcher_callback.registrations().at(registration_id_2).pattern);
+            watcher_callback.registrations().at(registration_id_2).scope);
   ASSERT_EQ(2u, watcher_callback.versions().size());
   EXPECT_EQ(script_1, watcher_callback.versions()
                           .at(registration_id_1)
@@ -243,7 +243,7 @@
   base::RunLoop().RunUntilIdle();
   ASSERT_EQ(1u, watcher_callback.registrations().size());
   EXPECT_EQ(scope_1,
-            watcher_callback.registrations().at(registration_id_1).pattern);
+            watcher_callback.registrations().at(registration_id_1).scope);
   ASSERT_EQ(1u, watcher_callback.versions().size());
   EXPECT_EQ(script_1, watcher_callback.versions()
                           .at(registration_id_1)
@@ -256,9 +256,9 @@
   int64_t registration_id_2 = RegisterServiceWorker(scope_2, script_2);
   ASSERT_EQ(2u, watcher_callback.registrations().size());
   EXPECT_EQ(scope_1,
-            watcher_callback.registrations().at(registration_id_1).pattern);
+            watcher_callback.registrations().at(registration_id_1).scope);
   EXPECT_EQ(scope_2,
-            watcher_callback.registrations().at(registration_id_2).pattern);
+            watcher_callback.registrations().at(registration_id_2).scope);
   ASSERT_EQ(2u, watcher_callback.versions().size());
   EXPECT_EQ(script_1, watcher_callback.versions()
                           .at(registration_id_1)
@@ -292,9 +292,9 @@
 
   ASSERT_EQ(2u, watcher_callback.registrations().size());
   EXPECT_EQ(scope_1,
-            watcher_callback.registrations().at(registration_id_1).pattern);
+            watcher_callback.registrations().at(registration_id_1).scope);
   EXPECT_EQ(scope_2,
-            watcher_callback.registrations().at(registration_id_2).pattern);
+            watcher_callback.registrations().at(registration_id_2).scope);
   ASSERT_EQ(2u, watcher_callback.versions().size());
 
   ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
@@ -302,7 +302,7 @@
 
   ASSERT_EQ(1u, watcher_callback.registrations().size());
   EXPECT_EQ(scope_2,
-            watcher_callback.registrations().at(registration_id_2).pattern);
+            watcher_callback.registrations().at(registration_id_2).scope);
 
   watcher->Stop();
   base::RunLoop().RunUntilIdle();
@@ -319,8 +319,7 @@
       watcher_callback.StartWatch(context_wrapper());
   base::RunLoop().RunUntilIdle();
   ASSERT_EQ(1u, watcher_callback.registrations().size());
-  EXPECT_EQ(scope,
-            watcher_callback.registrations().at(registration_id).pattern);
+  EXPECT_EQ(scope, watcher_callback.registrations().at(registration_id).scope);
   ASSERT_EQ(1u, watcher_callback.versions().size());
   EXPECT_EQ(script, watcher_callback.versions()
                         .at(registration_id)
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
index 7809aa3d..07f805bb 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -114,7 +114,7 @@
   ServiceWorkerVersion* version_ptr = registration->active_version()
                                           ? registration->active_version()
                                           : registration->installing_version();
-  // Since FindRegistrationForPattern returned
+  // Since FindRegistrationForScope returned
   // blink::ServiceWorkerStatusCode::kOk, there must be either: -
   // an active version, which optionally might have activated from a waiting
   //   version (as DidFindRegistrationForFindImpl will activate any waiting
@@ -272,9 +272,9 @@
 
 void ServiceWorkerContextWrapper::OnRegistrationCompleted(
     int64_t registration_id,
-    const GURL& pattern) {
+    const GURL& scope) {
   for (auto& observer : observer_list_)
-    observer.OnRegistrationCompleted(pattern);
+    observer.OnRegistrationCompleted(scope);
 }
 
 void ServiceWorkerContextWrapper::OnNoControllees(int64_t version_id,
@@ -331,13 +331,13 @@
 }
 
 void ServiceWorkerContextWrapper::UnregisterServiceWorker(
-    const GURL& pattern,
+    const GURL& scope,
     ResultCallback callback) {
   if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::IO},
         base::BindOnce(&ServiceWorkerContextWrapper::UnregisterServiceWorker,
-                       this, pattern, std::move(callback)));
+                       this, scope, std::move(callback)));
     return;
   }
   if (!context_core_) {
@@ -347,7 +347,7 @@
   }
 
   context()->UnregisterServiceWorker(
-      net::SimplifyUrlForRequest(pattern),
+      net::SimplifyUrlForRequest(scope),
       base::BindOnce(&FinishUnregistrationOnIO, std::move(callback)));
 }
 
@@ -459,20 +459,20 @@
   context_core_->ClearAllServiceWorkersForTest(std::move(callback));
 }
 
-void ServiceWorkerContextWrapper::StartWorkerForPattern(
-    const GURL& pattern,
+void ServiceWorkerContextWrapper::StartWorkerForScope(
+    const GURL& scope,
     StartWorkerCallback info_callback,
     base::OnceClosure failure_callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  FindRegistrationForPattern(
-      pattern,
+  FindRegistrationForScope(
+      scope,
       base::BindOnce(&FoundRegistrationForStartWorker, std::move(info_callback),
                      std::move(failure_callback)));
 }
 
 void ServiceWorkerContextWrapper::
     StartServiceWorkerAndDispatchLongRunningMessage(
-        const GURL& pattern,
+        const GURL& scope,
         blink::TransferableMessage message,
         ResultCallback result_callback) {
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
@@ -488,11 +488,11 @@
     return;
   }
 
-  context_core_->storage()->FindRegistrationForPattern(
-      net::SimplifyUrlForRequest(pattern),
+  context_core_->storage()->FindRegistrationForScope(
+      net::SimplifyUrlForRequest(scope),
       base::BindOnce(&ServiceWorkerContextWrapper::
                          DidFindRegistrationForLongRunningMessage,
-                     this, std::move(message), pattern,
+                     this, std::move(message), scope,
                      std::move(result_callback)));
 }
 
@@ -680,20 +680,20 @@
           std::move(callback)));
 }
 
-void ServiceWorkerContextWrapper::FindReadyRegistrationForPattern(
+void ServiceWorkerContextWrapper::FindReadyRegistrationForScope(
     const GURL& scope,
     FindRegistrationCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  FindRegistrationForPatternImpl(scope, false /* include_installing_version */,
-                                 std::move(callback));
+  FindRegistrationForScopeImpl(scope, false /* include_installing_version */,
+                               std::move(callback));
 }
 
-void ServiceWorkerContextWrapper::FindRegistrationForPattern(
+void ServiceWorkerContextWrapper::FindRegistrationForScope(
     const GURL& scope,
     FindRegistrationCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  FindRegistrationForPatternImpl(scope, true /* include_installing_version */,
-                                 std::move(callback));
+  FindRegistrationForScopeImpl(scope, true /* include_installing_version */,
+                               std::move(callback));
 }
 
 void ServiceWorkerContextWrapper::FindReadyRegistrationForId(
@@ -887,13 +887,13 @@
       key_prefix, std::move(callback));
 }
 
-void ServiceWorkerContextWrapper::StartServiceWorker(const GURL& pattern,
+void ServiceWorkerContextWrapper::StartServiceWorker(const GURL& scope,
                                                      StatusCallback callback) {
   if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::IO},
         base::BindOnce(&ServiceWorkerContextWrapper::StartServiceWorker, this,
-                       pattern, std::move(callback)));
+                       scope, std::move(callback)));
     return;
   }
   if (!context_core_) {
@@ -903,38 +903,38 @@
                        blink::ServiceWorkerStatusCode::kErrorAbort));
     return;
   }
-  context_core_->storage()->FindRegistrationForPattern(
-      net::SimplifyUrlForRequest(pattern),
+  context_core_->storage()->FindRegistrationForScope(
+      net::SimplifyUrlForRequest(scope),
       base::BindOnce(&StartActiveWorkerOnIO, std::move(callback)));
 }
 
-void ServiceWorkerContextWrapper::SkipWaitingWorker(const GURL& pattern) {
+void ServiceWorkerContextWrapper::SkipWaitingWorker(const GURL& scope) {
   if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::IO},
         base::BindOnce(&ServiceWorkerContextWrapper::SkipWaitingWorker, this,
-                       pattern));
+                       scope));
     return;
   }
   if (!context_core_)
     return;
-  context_core_->storage()->FindRegistrationForPattern(
-      net::SimplifyUrlForRequest(pattern),
+  context_core_->storage()->FindRegistrationForScope(
+      net::SimplifyUrlForRequest(scope),
       base::BindOnce(&SkipWaitingWorkerOnIO));
 }
 
-void ServiceWorkerContextWrapper::UpdateRegistration(const GURL& pattern) {
+void ServiceWorkerContextWrapper::UpdateRegistration(const GURL& scope) {
   if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::IO},
         base::BindOnce(&ServiceWorkerContextWrapper::UpdateRegistration, this,
-                       pattern));
+                       scope));
     return;
   }
   if (!context_core_)
     return;
-  context_core_->storage()->FindRegistrationForPattern(
-      net::SimplifyUrlForRequest(pattern),
+  context_core_->storage()->FindRegistrationForScope(
+      net::SimplifyUrlForRequest(scope),
       base::BindOnce(&ServiceWorkerContextWrapper::DidFindRegistrationForUpdate,
                      this));
 }
@@ -1010,7 +1010,7 @@
       this);
 }
 
-void ServiceWorkerContextWrapper::FindRegistrationForPatternImpl(
+void ServiceWorkerContextWrapper::FindRegistrationForScopeImpl(
     const GURL& scope,
     bool include_installing_version,
     FindRegistrationCallback callback) {
@@ -1022,7 +1022,7 @@
                        blink::ServiceWorkerStatusCode::kErrorAbort, nullptr));
     return;
   }
-  context_core_->storage()->FindRegistrationForPattern(
+  context_core_->storage()->FindRegistrationForScope(
       net::SimplifyUrlForRequest(scope),
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidFindRegistrationForFindImpl, this,
@@ -1123,12 +1123,12 @@
 
   std::map<GURL, ServiceWorkerUsageInfo> origins;
   for (const auto& registration_info : registrations) {
-    GURL origin = registration_info.pattern.GetOrigin();
+    GURL origin = registration_info.scope.GetOrigin();
 
     ServiceWorkerUsageInfo& usage_info = origins[origin];
     if (usage_info.origin.is_empty())
       usage_info.origin = origin;
-    usage_info.scopes.push_back(registration_info.pattern);
+    usage_info.scopes.push_back(registration_info.scope);
     usage_info.total_size_bytes += registration_info.stored_version_size_bytes;
   }
 
@@ -1240,16 +1240,15 @@
       ServiceWorkerMetrics::EventType::NAVIGATION_HINT,
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidStartServiceWorkerForNavigationHint,
-          this, registration->pattern(), std::move(callback)));
+          this, registration->scope(), std::move(callback)));
 }
 
 void ServiceWorkerContextWrapper::DidStartServiceWorkerForNavigationHint(
-    const GURL& pattern,
+    const GURL& scope,
     StartServiceWorkerForNavigationHintCallback callback,
     blink::ServiceWorkerStatusCode code) {
   TRACE_EVENT2("ServiceWorker", "DidStartServiceWorkerForNavigationHint", "url",
-               pattern.spec(), "code",
-               blink::ServiceWorkerStatusToString(code));
+               scope.spec(), "code", blink::ServiceWorkerStatusToString(code));
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   std::move(callback).Run(
       code == blink::ServiceWorkerStatusCode::kOk
diff --git a/content/browser/service_worker/service_worker_context_wrapper.h b/content/browser/service_worker/service_worker_context_wrapper.h
index a137985..4e31edf 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.h
+++ b/content/browser/service_worker/service_worker_context_wrapper.h
@@ -107,7 +107,7 @@
 
   // ServiceWorkerContextCoreObserver implementation:
   void OnRegistrationCompleted(int64_t registration_id,
-                               const GURL& pattern) override;
+                               const GURL& scope) override;
   void OnNoControllees(int64_t version_id, const GURL& scope) override;
   void OnVersionStateChanged(int64_t version_id,
                              const GURL& scope,
@@ -135,11 +135,11 @@
                              const GURL& other_url,
                              CheckHasServiceWorkerCallback callback) override;
   void ClearAllServiceWorkersForTest(base::OnceClosure callback) override;
-  void StartWorkerForPattern(const GURL& pattern,
-                             StartWorkerCallback info_callback,
-                             base::OnceClosure failure_callback) override;
+  void StartWorkerForScope(const GURL& scope,
+                           StartWorkerCallback info_callback,
+                           base::OnceClosure failure_callback) override;
   void StartServiceWorkerAndDispatchLongRunningMessage(
-      const GURL& pattern,
+      const GURL& scope,
       blink::TransferableMessage message,
       ResultCallback result_callback) override;
   void StartServiceWorkerForNavigationHint(
@@ -187,14 +187,14 @@
   //    activated.
   //
   // Must be called from the IO thread.
-  void FindReadyRegistrationForPattern(const GURL& scope,
-                                       FindRegistrationCallback callback);
+  void FindReadyRegistrationForScope(const GURL& scope,
+                                     FindRegistrationCallback callback);
 
-  // Similar to FindReadyRegistrationForPattern, but in the case no waiting or
+  // Similar to FindReadyRegistrationForScope, but in the case no waiting or
   // active worker is found (i.e., there is only an installing worker),
   // |callback| is called without waiting for the worker to reach active.
-  void FindRegistrationForPattern(const GURL& scope,
-                                  FindRegistrationCallback callback);
+  void FindRegistrationForScope(const GURL& scope,
+                                FindRegistrationCallback callback);
 
   // Returns the registration for |registration_id|. It is guaranteed that the
   // returned registration has the activated worker.
@@ -264,11 +264,11 @@
 
   // This function can be called from any thread, but the callback will always
   // be called on the UI thread.
-  void StartServiceWorker(const GURL& pattern, StatusCallback callback);
+  void StartServiceWorker(const GURL& scope, StatusCallback callback);
 
   // These methods can be called from any thread.
-  void SkipWaitingWorker(const GURL& pattern);
-  void UpdateRegistration(const GURL& pattern);
+  void SkipWaitingWorker(const GURL& scope);
+  void UpdateRegistration(const GURL& scope);
   void SetForceUpdateOnPageLoad(bool force_update_on_page_load);
   // Different from AddObserver/RemoveObserver(ServiceWorkerContextObserver*).
   // But we must keep the same name, or else base::ScopedObserver breaks.
@@ -314,9 +314,9 @@
 
   // If |include_installing_version| is true, |callback| is called if there is
   // an installing version with no waiting or active version.
-  void FindRegistrationForPatternImpl(const GURL& scope,
-                                      bool include_installing_version,
-                                      FindRegistrationCallback callback);
+  void FindRegistrationForScopeImpl(const GURL& scope,
+                                    bool include_installing_version,
+                                    FindRegistrationCallback callback);
 
   void DidFindRegistrationForFindReady(
       FindRegistrationCallback callback,
@@ -358,7 +358,7 @@
       scoped_refptr<ServiceWorkerRegistration> registration);
 
   void DidStartServiceWorkerForNavigationHint(
-      const GURL& pattern,
+      const GURL& scope,
       StartServiceWorkerForNavigationHintCallback callback,
       blink::ServiceWorkerStatusCode code);
 
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
index d4415e7..e09617e 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -446,7 +446,7 @@
   }
 
   if (!GetContentClient()->browser()->AllowServiceWorker(
-          registration->pattern(), provider_host_->topmost_frame_url(),
+          registration->scope(), provider_host_->topmost_frame_url(),
           resource_context_, provider_host_->web_contents_getter())) {
     tracker_->RecordDestination(
         ServiceWorkerMetrics::MainResourceRequestDestination::
diff --git a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
index ed9fb83..10d6416 100644
--- a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
@@ -274,7 +274,7 @@
 }
 
 TEST_F(ServiceWorkerDispatcherHostTest, CleanupOnRendererCrash) {
-  GURL pattern = GURL("https://www.example.com/");
+  GURL scope = GURL("https://www.example.com/");
   GURL script_url = GURL("https://www.example.com/service_worker.js");
   int process_id = helper_->mock_render_process_id();
 
@@ -285,7 +285,7 @@
       SendProviderCreated(std::move(host_info_1));
   ServiceWorkerProviderHost* provider_host = context()->GetProviderHost(
       helper_->mock_render_process_id(), kProviderId);
-  SetUpRegistration(pattern, script_url);
+  SetUpRegistration(scope, script_url);
   EXPECT_EQ(kProviderId, provider_host->provider_id());
 
   // Start up the worker.
diff --git a/content/browser/service_worker/service_worker_info.cc b/content/browser/service_worker/service_worker_info.cc
index 0b2b3486..3de06976 100644
--- a/content/browser/service_worker/service_worker_info.cc
+++ b/content/browser/service_worker/service_worker_info.cc
@@ -58,10 +58,10 @@
       navigation_preload_header_length(0) {}
 
 ServiceWorkerRegistrationInfo::ServiceWorkerRegistrationInfo(
-    const GURL& pattern,
+    const GURL& scope,
     int64_t registration_id,
     DeleteFlag delete_flag)
-    : pattern(pattern),
+    : scope(scope),
       registration_id(registration_id),
       delete_flag(delete_flag),
       stored_version_size_bytes(0),
@@ -69,7 +69,7 @@
       navigation_preload_header_length(0) {}
 
 ServiceWorkerRegistrationInfo::ServiceWorkerRegistrationInfo(
-    const GURL& pattern,
+    const GURL& scope,
     blink::mojom::ServiceWorkerUpdateViaCache update_via_cache,
     int64_t registration_id,
     DeleteFlag delete_flag,
@@ -79,7 +79,7 @@
     int64_t stored_version_size_bytes,
     bool navigation_preload_enabled,
     size_t navigation_preload_header_length)
-    : pattern(pattern),
+    : scope(scope),
       update_via_cache(update_via_cache),
       registration_id(registration_id),
       delete_flag(delete_flag),
diff --git a/content/browser/service_worker/service_worker_info.h b/content/browser/service_worker/service_worker_info.h
index 1da804e..8e324d21 100644
--- a/content/browser/service_worker/service_worker_info.h
+++ b/content/browser/service_worker/service_worker_info.h
@@ -58,11 +58,11 @@
  public:
   enum DeleteFlag { IS_NOT_DELETED, IS_DELETED };
   ServiceWorkerRegistrationInfo();
-  ServiceWorkerRegistrationInfo(const GURL& pattern,
+  ServiceWorkerRegistrationInfo(const GURL& scope,
                                 int64_t registration_id,
                                 DeleteFlag delete_flag);
   ServiceWorkerRegistrationInfo(
-      const GURL& pattern,
+      const GURL& scope,
       blink::mojom::ServiceWorkerUpdateViaCache update_via_cache,
       int64_t registration_id,
       DeleteFlag delete_flag,
@@ -75,7 +75,7 @@
   ServiceWorkerRegistrationInfo(const ServiceWorkerRegistrationInfo& other);
   ~ServiceWorkerRegistrationInfo();
 
-  GURL pattern;
+  GURL scope;
   blink::mojom::ServiceWorkerUpdateViaCache update_via_cache;
   int64_t registration_id;
   DeleteFlag delete_flag;
diff --git a/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc b/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc
index 9a11be1b..3937a82 100644
--- a/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc
+++ b/content/browser/service_worker/service_worker_installed_scripts_sender_unittest.cc
@@ -176,9 +176,9 @@
     context()->storage()->LazyInitializeForTest(base::DoNothing());
     base::RunLoop().RunUntilIdle();
 
-    pattern_ = GURL("http://www.example.com/test/");
+    scope_ = GURL("http://www.example.com/test/");
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = pattern_;
+    options.scope = scope_;
     registration_ = base::MakeRefCounted<ServiceWorkerRegistration>(
         options, 1L, context()->AsWeakPtr());
     version_ = base::MakeRefCounted<ServiceWorkerVersion>(
@@ -204,7 +204,7 @@
   TestBrowserThreadBundle thread_bundle_;
   std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
 
-  GURL pattern_;
+  GURL scope_;
   scoped_refptr<ServiceWorkerRegistration> registration_;
   scoped_refptr<ServiceWorkerVersion> version_;
 };
diff --git a/content/browser/service_worker/service_worker_internals_ui.cc b/content/browser/service_worker/service_worker_internals_ui.cc
index 926a0559..9d13274 100644
--- a/content/browser/service_worker/service_worker_internals_ui.cc
+++ b/content/browser/service_worker/service_worker_internals_ui.cc
@@ -160,7 +160,7 @@
   for (auto it = registrations.begin(); it != registrations.end(); ++it) {
     const ServiceWorkerRegistrationInfo& registration = *it;
     auto registration_info = std::make_unique<DictionaryValue>();
-    registration_info->SetString("scope", registration.pattern.spec());
+    registration_info->SetString("scope", registration.scope.spec());
     registration_info->SetString(
         "registration_id", base::Int64ToString(registration.registration_id));
     registration_info->SetBoolean("navigation_preload_enabled",
@@ -296,15 +296,15 @@
         "serviceworker.onConsoleMessageReported", ConvertToRawPtrVector(args));
   }
   void OnRegistrationCompleted(int64_t registration_id,
-                               const GURL& pattern) override {
+                               const GURL& scope) override {
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     web_ui_->CallJavascriptFunctionUnsafe(
-        "serviceworker.onRegistrationCompleted", Value(pattern.spec()));
+        "serviceworker.onRegistrationCompleted", Value(scope.spec()));
   }
   void OnRegistrationDeleted(int64_t registration_id,
-                             const GURL& pattern) override {
+                             const GURL& scope) override {
     web_ui_->CallJavascriptFunctionUnsafe("serviceworker.onRegistrationDeleted",
-                                          Value(pattern.spec()));
+                                          Value(scope.spec()));
   }
   int partition_id() const { return partition_id_; }
 
diff --git a/content/browser/service_worker/service_worker_job_coordinator.cc b/content/browser/service_worker/service_worker_job_coordinator.cc
index c8ea110..98c9fe1 100644
--- a/content/browser/service_worker/service_worker_job_coordinator.cc
+++ b/content/browser/service_worker/service_worker_job_coordinator.cc
@@ -114,13 +114,13 @@
 }
 
 void ServiceWorkerJobCoordinator::Unregister(
-    const GURL& pattern,
+    const GURL& scope,
     ServiceWorkerUnregisterJob::UnregistrationCallback callback) {
   std::unique_ptr<ServiceWorkerRegisterJobBase> job(
-      new ServiceWorkerUnregisterJob(context_, pattern));
+      new ServiceWorkerUnregisterJob(context_, scope));
   ServiceWorkerUnregisterJob* queued_job =
       static_cast<ServiceWorkerUnregisterJob*>(
-          job_queues_[pattern].Push(std::move(job)));
+          job_queues_[scope].Push(std::move(job)));
   queued_job->AddCallback(std::move(callback));
 }
 
@@ -128,7 +128,7 @@
     ServiceWorkerRegistration* registration,
     bool force_bypass_cache) {
   DCHECK(registration);
-  job_queues_[registration->pattern()].Push(
+  job_queues_[registration->scope()].Push(
       base::WrapUnique<ServiceWorkerRegisterJobBase>(
           new ServiceWorkerRegisterJob(context_, registration,
                                        force_bypass_cache,
@@ -142,7 +142,7 @@
     ServiceWorkerRegisterJob::RegistrationCallback callback) {
   DCHECK(registration);
   ServiceWorkerRegisterJob* queued_job = static_cast<ServiceWorkerRegisterJob*>(
-      job_queues_[registration->pattern()].Push(
+      job_queues_[registration->scope()].Push(
           base::WrapUnique<ServiceWorkerRegisterJobBase>(
               new ServiceWorkerRegisterJob(context_, registration,
                                            force_bypass_cache,
@@ -156,9 +156,9 @@
   job_queues_.clear();
 }
 
-void ServiceWorkerJobCoordinator::FinishJob(const GURL& pattern,
+void ServiceWorkerJobCoordinator::FinishJob(const GURL& scope,
                                             ServiceWorkerRegisterJobBase* job) {
-  auto pending_jobs = job_queues_.find(pattern);
+  auto pending_jobs = job_queues_.find(scope);
   DCHECK(pending_jobs != job_queues_.end()) << "Deleting non-existent job.";
   pending_jobs->second.Pop(job);
   if (pending_jobs->second.empty())
diff --git a/content/browser/service_worker/service_worker_job_coordinator.h b/content/browser/service_worker/service_worker_job_coordinator.h
index cae8d52..2f31b48 100644
--- a/content/browser/service_worker/service_worker_job_coordinator.h
+++ b/content/browser/service_worker/service_worker_job_coordinator.h
@@ -31,7 +31,7 @@
                 const blink::mojom::ServiceWorkerRegistrationOptions& options,
                 ServiceWorkerRegisterJob::RegistrationCallback callback);
 
-  void Unregister(const GURL& pattern,
+  void Unregister(const GURL& scope,
                   ServiceWorkerUnregisterJob::UnregistrationCallback callback);
 
   void Update(ServiceWorkerRegistration* registration, bool force_bypass_cache);
@@ -46,7 +46,7 @@
 
   // Removes the job. A job that was not aborted must call FinishJob when it is
   // done.
-  void FinishJob(const GURL& pattern, ServiceWorkerRegisterJobBase* job);
+  void FinishJob(const GURL& scope, ServiceWorkerRegisterJobBase* job);
 
  private:
   class JobQueue {
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index 5ff941b..8fd78294 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -135,11 +135,11 @@
       const blink::mojom::ServiceWorkerRegistrationOptions& options,
       blink::ServiceWorkerStatusCode expected_status =
           blink::ServiceWorkerStatusCode::kOk);
-  void RunUnregisterJob(const GURL& pattern,
+  void RunUnregisterJob(const GURL& scope,
                         blink::ServiceWorkerStatusCode expected_status =
                             blink::ServiceWorkerStatusCode::kOk);
-  scoped_refptr<ServiceWorkerRegistration> FindRegistrationForPattern(
-      const GURL& pattern,
+  scoped_refptr<ServiceWorkerRegistration> FindRegistrationForScope(
+      const GURL& scope,
       blink::ServiceWorkerStatusCode expected_status =
           blink::ServiceWorkerStatusCode::kOk);
   ServiceWorkerProviderHost* CreateControllee();
@@ -165,10 +165,10 @@
 }
 
 void ServiceWorkerJobTest::RunUnregisterJob(
-    const GURL& pattern,
+    const GURL& scope,
     blink::ServiceWorkerStatusCode expected_status) {
   bool called;
-  job_coordinator()->Unregister(pattern,
+  job_coordinator()->Unregister(scope,
                                 SaveUnregistration(expected_status, &called));
   EXPECT_FALSE(called);
   base::RunLoop().RunUntilIdle();
@@ -176,14 +176,13 @@
 }
 
 scoped_refptr<ServiceWorkerRegistration>
-ServiceWorkerJobTest::FindRegistrationForPattern(
-    const GURL& pattern,
+ServiceWorkerJobTest::FindRegistrationForScope(
+    const GURL& scope,
     blink::ServiceWorkerStatusCode expected_status) {
   bool called;
   scoped_refptr<ServiceWorkerRegistration> registration;
-  storage()->FindRegistrationForPattern(
-      pattern,
-      SaveFoundRegistration(expected_status, &called, &registration));
+  storage()->FindRegistrationForScope(
+      scope, SaveFoundRegistration(expected_status, &called, &registration));
 
   EXPECT_FALSE(called);
   base::RunLoop().RunUntilIdle();
@@ -341,16 +340,16 @@
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version->running_status());
   EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version->status());
 
-  registration = FindRegistrationForPattern(
+  registration = FindRegistrationForScope(
       options.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   EXPECT_FALSE(registration);
 }
 
 TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
 
-  RunUnregisterJob(pattern, blink::ServiceWorkerStatusCode::kErrorNotFound);
+  RunUnregisterJob(scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
 }
 
 // Make sure registering a new script creates a new version and shares an
@@ -362,24 +361,24 @@
   scoped_refptr<ServiceWorkerRegistration> old_registration = RunRegisterJob(
       GURL("https://www.example.com/service_worker.js"), options);
 
-  scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern =
-      FindRegistrationForPattern(options.scope);
+  scoped_refptr<ServiceWorkerRegistration> old_registration_by_scope =
+      FindRegistrationForScope(options.scope);
 
-  ASSERT_EQ(old_registration, old_registration_by_pattern);
-  old_registration_by_pattern = nullptr;
+  ASSERT_EQ(old_registration, old_registration_by_scope);
+  old_registration_by_scope = nullptr;
 
   scoped_refptr<ServiceWorkerRegistration> new_registration = RunRegisterJob(
       GURL("https://www.example.com/service_worker_new.js"), options);
 
   ASSERT_EQ(old_registration, new_registration);
 
-  scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern =
-      FindRegistrationForPattern(options.scope);
+  scoped_refptr<ServiceWorkerRegistration> new_registration_by_scope =
+      FindRegistrationForScope(options.scope);
 
-  ASSERT_EQ(new_registration, new_registration_by_pattern);
+  ASSERT_EQ(new_registration, new_registration_by_scope);
 }
 
-// Make sure that when registering a duplicate pattern+script_url
+// Make sure that when registering a duplicate scope+script_url
 // combination, that the same registration is used.
 TEST_F(ServiceWorkerJobTest, RegisterDuplicateScript) {
   GURL script_url("https://www.example.com/service_worker.js");
@@ -404,10 +403,10 @@
   EXPECT_EQ(0UL, provider_host->registration_object_hosts_.size());
   ASSERT_TRUE(old_registration->HasOneRef());
 
-  scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern =
-      FindRegistrationForPattern(options.scope);
+  scoped_refptr<ServiceWorkerRegistration> old_registration_by_scope =
+      FindRegistrationForScope(options.scope);
 
-  ASSERT_TRUE(old_registration_by_pattern.get());
+  ASSERT_TRUE(old_registration_by_scope.get());
 
   scoped_refptr<ServiceWorkerRegistration> new_registration =
       RunRegisterJob(script_url, options);
@@ -416,14 +415,14 @@
 
   ASSERT_FALSE(old_registration->HasOneRef());
 
-  scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern =
-      FindRegistrationForPattern(options.scope);
+  scoped_refptr<ServiceWorkerRegistration> new_registration_by_scope =
+      FindRegistrationForScope(options.scope);
 
-  EXPECT_EQ(new_registration_by_pattern, old_registration);
+  EXPECT_EQ(new_registration_by_scope, old_registration);
 }
 
 // Make sure that the same registration is used and the update_via_cache value
-// is updated when registering a duplicate pattern+script_url with a different
+// is updated when registering a duplicate scope+script_url with a different
 // update_via_cache value.
 TEST_F(ServiceWorkerJobTest, RegisterWithDifferentUpdateViaCache) {
   GURL script_url("https://www.example.com/service_worker.js");
@@ -451,10 +450,10 @@
   EXPECT_EQ(0UL, provider_host->registration_object_hosts_.size());
   ASSERT_TRUE(old_registration->HasOneRef());
 
-  scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern =
-      FindRegistrationForPattern(options.scope);
+  scoped_refptr<ServiceWorkerRegistration> old_registration_by_scope =
+      FindRegistrationForScope(options.scope);
 
-  ASSERT_TRUE(old_registration_by_pattern.get());
+  ASSERT_TRUE(old_registration_by_scope.get());
 
   options.update_via_cache = blink::mojom::ServiceWorkerUpdateViaCache::kNone;
   scoped_refptr<ServiceWorkerRegistration> new_registration =
@@ -467,10 +466,10 @@
 
   ASSERT_FALSE(old_registration->HasOneRef());
 
-  scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern =
-      FindRegistrationForPattern(options.scope);
+  scoped_refptr<ServiceWorkerRegistration> new_registration_by_scope =
+      FindRegistrationForScope(options.scope);
 
-  EXPECT_EQ(new_registration_by_pattern, old_registration);
+  EXPECT_EQ(new_registration_by_scope, old_registration);
 }
 
 class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
@@ -508,7 +507,7 @@
   ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(nullptr), registration);
 }
 
-// Register and then unregister the pattern, in parallel. Job coordinator should
+// Register and then unregister the scope, in parallel. Job coordinator should
 // process jobs until the last job.
 TEST_F(ServiceWorkerJobTest, ParallelRegUnreg) {
   GURL script_url("https://www.example.com/service_worker.js");
@@ -533,17 +532,17 @@
   ASSERT_TRUE(registration_called);
   ASSERT_TRUE(unregistration_called);
 
-  registration = FindRegistrationForPattern(
+  registration = FindRegistrationForScope(
       options.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
 }
 
-// Register conflicting scripts for the same pattern. The most recent
+// Register conflicting scripts for the same scope. The most recent
 // registration should win, and the old registration should have been
 // shutdown.
 TEST_F(ServiceWorkerJobTest, ParallelRegNewScript) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
 
   GURL script_url1("https://www.example.com/service_worker1.js");
   bool registration1_called = false;
@@ -551,7 +550,7 @@
   job_coordinator()->Register(
       script_url1,
       blink::mojom::ServiceWorkerRegistrationOptions(
-          pattern, blink::mojom::ScriptType::kClassic,
+          scope, blink::mojom::ScriptType::kClassic,
           blink::mojom::ServiceWorkerUpdateViaCache::kNone),
       SaveRegistration(blink::ServiceWorkerStatusCode::kOk,
                        &registration1_called, &registration1));
@@ -562,7 +561,7 @@
   job_coordinator()->Register(
       script_url2,
       blink::mojom::ServiceWorkerRegistrationOptions(
-          pattern, blink::mojom::ScriptType::kClassic,
+          scope, blink::mojom::ScriptType::kClassic,
           blink::mojom::ServiceWorkerUpdateViaCache::kAll),
       SaveRegistration(blink::ServiceWorkerStatusCode::kOk,
                        &registration2_called, &registration2));
@@ -574,12 +573,12 @@
   ASSERT_TRUE(registration2_called);
 
   scoped_refptr<ServiceWorkerRegistration> registration =
-      FindRegistrationForPattern(pattern);
+      FindRegistrationForScope(scope);
 
   ASSERT_EQ(registration2, registration);
 }
 
-// Register the exact same pattern + script. Requests should be
+// Register the exact same scope + script. Requests should be
 // coalesced such that both callers get the exact same registration
 // object.
 TEST_F(ServiceWorkerJobTest, ParallelRegSameScript) {
@@ -610,27 +609,25 @@
   ASSERT_EQ(registration1, registration2);
 
   scoped_refptr<ServiceWorkerRegistration> registration =
-      FindRegistrationForPattern(options.scope);
+      FindRegistrationForScope(options.scope);
 
   ASSERT_EQ(registration, registration1);
 }
 
 // Call simulataneous unregister calls.
 TEST_F(ServiceWorkerJobTest, ParallelUnreg) {
-  GURL pattern("https://www.example.com/");
+  GURL scope("https://www.example.com/");
 
   GURL script_url("https://www.example.com/service_worker.js");
   bool unregistration1_called = false;
   job_coordinator()->Unregister(
-      pattern,
-      SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorNotFound,
-                         &unregistration1_called));
+      scope, SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorNotFound,
+                                &unregistration1_called));
 
   bool unregistration2_called = false;
   job_coordinator()->Unregister(
-      pattern,
-      SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorNotFound,
-                         &unregistration2_called));
+      scope, SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorNotFound,
+                                &unregistration2_called));
 
   ASSERT_FALSE(unregistration1_called);
   ASSERT_FALSE(unregistration2_called);
@@ -642,8 +639,8 @@
   // but we can make sure they can exist simultaneously without
   // crashing.
   scoped_refptr<ServiceWorkerRegistration> registration =
-      FindRegistrationForPattern(
-          pattern, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      FindRegistrationForScope(scope,
+                               blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
 }
@@ -680,13 +677,13 @@
   ASSERT_TRUE(registration_called2);
 
   bool find_called1 = false;
-  storage()->FindRegistrationForPattern(
+  storage()->FindRegistrationForScope(
       options1.scope,
       SaveFoundRegistration(blink::ServiceWorkerStatusCode::kErrorNotFound,
                             &find_called1, &registration1));
 
   bool find_called2 = false;
-  storage()->FindRegistrationForPattern(
+  storage()->FindRegistrationForScope(
       options2.scope,
       SaveFoundRegistration(blink::ServiceWorkerStatusCode::kErrorNotFound,
                             &find_called2, &registration2));
@@ -699,19 +696,19 @@
 }
 
 TEST_F(ServiceWorkerJobTest, AbortAll_Unregister) {
-  GURL pattern1("https://www1.example.com/");
-  GURL pattern2("https://www2.example.com/");
+  GURL scope1("https://www1.example.com/");
+  GURL scope2("https://www2.example.com/");
 
   bool unregistration_called1 = false;
   scoped_refptr<ServiceWorkerRegistration> registration1;
   job_coordinator()->Unregister(
-      pattern1, SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorAbort,
-                                   &unregistration_called1));
+      scope1, SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorAbort,
+                                 &unregistration_called1));
 
   bool unregistration_called2 = false;
   job_coordinator()->Unregister(
-      pattern2, SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorAbort,
-                                   &unregistration_called2));
+      scope2, SaveUnregistration(blink::ServiceWorkerStatusCode::kErrorAbort,
+                                 &unregistration_called2));
 
   ASSERT_FALSE(unregistration_called1);
   ASSERT_FALSE(unregistration_called2);
@@ -748,7 +745,7 @@
   ASSERT_TRUE(registration_called);
   ASSERT_TRUE(unregistration_called);
 
-  registration = FindRegistrationForPattern(
+  registration = FindRegistrationForScope(
       options.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   EXPECT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
@@ -1490,7 +1487,7 @@
 
   EXPECT_EQ(registration, RunRegisterJob(script2, options));
 
-  EXPECT_EQ(registration, FindRegistrationForPattern(options.scope));
+  EXPECT_EQ(registration, FindRegistrationForScope(options.scope));
   scoped_refptr<ServiceWorkerVersion> new_version =
       registration->waiting_version();
   ASSERT_TRUE(new_version);
@@ -1501,8 +1498,8 @@
   RunUnregisterJob(options.scope,
                    blink::ServiceWorkerStatusCode::kErrorNotFound);
 
-  FindRegistrationForPattern(options.scope,
-                             blink::ServiceWorkerStatusCode::kErrorNotFound);
+  FindRegistrationForScope(options.scope,
+                           blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_TRUE(registration->is_uninstalling());
   EXPECT_EQ(old_version, registration->active_version());
 
@@ -1713,7 +1710,7 @@
   EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status());
   EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status());
 
-  EXPECT_EQ(registration, FindRegistrationForPattern(options.scope));
+  EXPECT_EQ(registration, FindRegistrationForScope(options.scope));
 }
 
 TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringRejectedInstall) {
@@ -1751,8 +1748,8 @@
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, old_version->running_status());
   EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, old_version->status());
 
-  FindRegistrationForPattern(options.scope,
-                             blink::ServiceWorkerStatusCode::kErrorNotFound);
+  FindRegistrationForScope(options.scope,
+                           blink::ServiceWorkerStatusCode::kErrorNotFound);
 }
 
 TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall_RejectActivate) {
@@ -1790,8 +1787,7 @@
   EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, old_version->running_status());
   EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, old_version->status());
 
-  FindRegistrationForPattern(options.scope,
-                             blink::ServiceWorkerStatusCode::kOk);
+  FindRegistrationForScope(options.scope, blink::ServiceWorkerStatusCode::kOk);
 }
 
 TEST_F(ServiceWorkerJobTest, HasFetchHandler) {
@@ -1805,14 +1801,14 @@
 
   helper->set_has_fetch_handler(true);
   RunRegisterJob(script, options);
-  registration = FindRegistrationForPattern(options.scope);
+  registration = FindRegistrationForScope(options.scope);
   EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::EXISTS,
             registration->active_version()->fetch_handler_existence());
   RunUnregisterJob(options.scope);
 
   helper->set_has_fetch_handler(false);
   RunRegisterJob(script, options);
-  registration = FindRegistrationForPattern(options.scope);
+  registration = FindRegistrationForScope(options.scope);
   EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::DOES_NOT_EXIST,
             registration->active_version()->fetch_handler_existence());
   RunUnregisterJob(options.scope);
diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
index fbcb6c0..35e1376 100644
--- a/content/browser/service_worker/service_worker_object_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
@@ -215,10 +215,10 @@
 
 TEST_F(ServiceWorkerObjectHostTest, OnVersionStateChanged) {
   const int64_t kProviderId = 99;
-  const GURL pattern("https://www.example.com/");
+  const GURL scope("https://www.example.com/");
   const GURL script_url("https://www.example.com/service_worker.js");
   Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
-  SetUpRegistration(pattern, script_url);
+  SetUpRegistration(scope, script_url);
   registration_->SetInstallingVersion(version_);
 
   ServiceWorkerRemoteProviderEndpoint remote_endpoint;
@@ -227,9 +227,9 @@
           helper_->mock_render_process_id(), kProviderId,
           true /* is_parent_frame_secure */, helper_->context()->AsWeakPtr(),
           &remote_endpoint);
-  provider_host->SetDocumentUrl(pattern);
+  provider_host->SetDocumentUrl(scope);
   blink::mojom::ServiceWorkerRegistrationObjectInfoPtr registration_info =
-      GetRegistrationFromRemote(remote_endpoint.host_ptr()->get(), pattern);
+      GetRegistrationFromRemote(remote_endpoint.host_ptr()->get(), scope);
   // |version_| is the installing version of |registration_| now.
   EXPECT_TRUE(registration_info->installing);
   EXPECT_EQ(version_->version_id(), registration_info->installing->version_id);
@@ -246,10 +246,10 @@
 
 TEST_F(ServiceWorkerObjectHostTest,
        DispatchExtendableMessageEvent_FromServiceWorker) {
-  const GURL pattern("https://www.example.com/");
+  const GURL scope("https://www.example.com/");
   const GURL script_url("https://www.example.com/service_worker.js");
   Initialize(std::make_unique<ExtendableMessageEventTestHelper>());
-  SetUpRegistration(pattern, script_url);
+  SetUpRegistration(scope, script_url);
 
   base::SimpleTestTickClock tick_clock;
   // Set mock clock on version_ to check timeout behavior.
@@ -321,10 +321,10 @@
 
 TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_FromClient) {
   const int64_t kProviderId = 99;
-  const GURL pattern("https://www.example.com/");
+  const GURL scope("https://www.example.com/");
   const GURL script_url("https://www.example.com/service_worker.js");
   Initialize(std::make_unique<ExtendableMessageEventTestHelper>());
-  SetUpRegistration(pattern, script_url);
+  SetUpRegistration(scope, script_url);
 
   // Prepare a ServiceWorkerProviderHost for a window client. A
   // WebContents/RenderFrameHost must be created too because it's needed for
@@ -340,7 +340,7 @@
       ServiceWorkerProviderHost::Create(frame_host->GetProcess()->GetID(),
                                         std::move(provider_host_info),
                                         helper_->context()->AsWeakPtr());
-  provider_host->SetDocumentUrl(pattern);
+  provider_host->SetDocumentUrl(scope);
   // Prepare a ServiceWorkerObjectHost for the above |provider_host|.
   blink::mojom::ServiceWorkerObjectInfoPtr info =
       provider_host->GetOrCreateServiceWorkerObjectHost(version_)
@@ -376,10 +376,10 @@
 
 TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_Fail) {
   const int64_t kProviderId = 99;
-  const GURL pattern("https://www.example.com/");
+  const GURL scope("https://www.example.com/");
   const GURL script_url("https://www.example.com/service_worker.js");
   Initialize(std::make_unique<FailToStartWorkerTestHelper>());
-  SetUpRegistration(pattern, script_url);
+  SetUpRegistration(scope, script_url);
 
   // Prepare a ServiceWorkerProviderHost for a window client. A
   // WebContents/RenderFrameHost must be created too because it's needed for
@@ -395,7 +395,7 @@
       ServiceWorkerProviderHost::Create(frame_host->GetProcess()->GetID(),
                                         std::move(provider_host_info),
                                         helper_->context()->AsWeakPtr());
-  provider_host->SetDocumentUrl(pattern);
+  provider_host->SetDocumentUrl(scope);
   // Prepare a ServiceWorkerObjectHost for the above |provider_host|.
   blink::mojom::ServiceWorkerObjectInfoPtr info =
       provider_host->GetOrCreateServiceWorkerObjectHost(version_)
diff --git a/content/browser/service_worker/service_worker_process_manager.cc b/content/browser/service_worker/service_worker_process_manager.cc
index 403f8b6..bb51fbc 100644
--- a/content/browser/service_worker/service_worker_process_manager.cc
+++ b/content/browser/service_worker/service_worker_process_manager.cc
@@ -82,7 +82,7 @@
 blink::ServiceWorkerStatusCode
 ServiceWorkerProcessManager::AllocateWorkerProcess(
     int embedded_worker_id,
-    const GURL& pattern,
+    const GURL& scope,
     const GURL& script_url,
     bool can_use_existing_process,
     AllocatedProcessInfo* out_info) {
diff --git a/content/browser/service_worker/service_worker_process_manager.h b/content/browser/service_worker/service_worker_process_manager.h
index f768781..0973fcd8 100644
--- a/content/browser/service_worker/service_worker_process_manager.h
+++ b/content/browser/service_worker/service_worker_process_manager.h
@@ -59,7 +59,7 @@
   bool IsShutdown();
 
   // Returns a reference to a renderer process suitable for starting the service
-  // worker described by |emdedded_worker_id|, |pattern|, and |script_url|. The
+  // worker described by |emdedded_worker_id|, |scope|, and |script_url|. The
   // process will be kept alive until ReleaseWorkerProcess() is called.
   //
   // An existing process is used when possible. If |can_use_existing_process| is
@@ -72,7 +72,7 @@
   // Called on the UI thread.
   blink::ServiceWorkerStatusCode AllocateWorkerProcess(
       int embedded_worker_id,
-      const GURL& pattern,
+      const GURL& scope,
       const GURL& script_url,
       bool can_use_existing_process,
       AllocatedProcessInfo* out_info);
diff --git a/content/browser/service_worker/service_worker_process_manager_unittest.cc b/content/browser/service_worker/service_worker_process_manager_unittest.cc
index edc8d043..29ced729 100644
--- a/content/browser/service_worker/service_worker_process_manager_unittest.cc
+++ b/content/browser/service_worker/service_worker_process_manager_unittest.cc
@@ -66,7 +66,7 @@
     browser_context_.reset(new TestBrowserContext);
     process_manager_.reset(
         new ServiceWorkerProcessManager(browser_context_.get()));
-    pattern_ = GURL("http://www.example.com/");
+    scope_ = GURL("http://www.example.com/");
     script_url_ = GURL("http://www.example.com/sw.js");
     render_process_host_factory_.reset(
         new SiteInstanceRenderProcessHostFactory());
@@ -93,7 +93,7 @@
   content::TestBrowserThreadBundle thread_bundle_;
   std::unique_ptr<TestBrowserContext> browser_context_;
   std::unique_ptr<ServiceWorkerProcessManager> process_manager_;
-  GURL pattern_;
+  GURL scope_;
   GURL script_url_;
   std::unique_ptr<SiteInstanceRenderProcessHostFactory>
       render_process_host_factory_;
@@ -107,7 +107,7 @@
   const int kEmbeddedWorkerId = 100;
   const GURL kSiteUrl = GURL("http://example.com");
 
-  // Create a process that is hosting a frame with URL |pattern_|.
+  // Create a process that is hosting a frame with URL |scope_|.
   std::unique_ptr<MockRenderProcessHost> host(CreateRenderProcessHost());
   host->Init();
   RenderProcessHostImpl::AddFrameWithSite(browser_context_.get(), host.get(),
@@ -121,7 +121,7 @@
   ServiceWorkerProcessManager::AllocatedProcessInfo process_info;
   blink::ServiceWorkerStatusCode status =
       process_manager_->AllocateWorkerProcess(
-          kEmbeddedWorkerId, pattern_, script_url_,
+          kEmbeddedWorkerId, scope_, script_url_,
           true /* can_use_existing_process */, &process_info);
 
   // An existing process should be allocated to the worker.
@@ -149,7 +149,7 @@
   const int kEmbeddedWorkerId = 100;
   const GURL kSiteUrl = GURL("http://example.com");
 
-  // Create a process that is hosting a frame with URL |pattern_|.
+  // Create a process that is hosting a frame with URL |scope_|.
   std::unique_ptr<MockRenderProcessHost> host(CreateRenderProcessHost());
   RenderProcessHostImpl::AddFrameWithSite(browser_context_.get(), host.get(),
                                           kSiteUrl);
@@ -162,7 +162,7 @@
   ServiceWorkerProcessManager::AllocatedProcessInfo process_info;
   blink::ServiceWorkerStatusCode status =
       process_manager_->AllocateWorkerProcess(
-          kEmbeddedWorkerId, pattern_, script_url_,
+          kEmbeddedWorkerId, scope_, script_url_,
           false /* can_use_existing_process */, &process_info);
 
   // A new process should be allocated to the worker.
@@ -191,7 +191,7 @@
   ServiceWorkerProcessManager::AllocatedProcessInfo process_info;
   blink::ServiceWorkerStatusCode status =
       process_manager_->AllocateWorkerProcess(
-          1, pattern_, script_url_, true /* can_use_existing_process */,
+          1, scope_, script_url_, true /* can_use_existing_process */,
           &process_info);
 
   // Allocating a process in shutdown should abort.
@@ -218,7 +218,7 @@
     ServiceWorkerProcessManager::AllocatedProcessInfo process_info;
     blink::ServiceWorkerStatusCode status =
         process_manager_->AllocateWorkerProcess(
-            kEmbeddedWorkerId, pattern_, script_url_,
+            kEmbeddedWorkerId, scope_, script_url_,
             true /* can_use_existing_process */, &process_info);
     EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status);
     // Instead of testing the input to the CreateRenderProcessHost(), it'd be
@@ -254,7 +254,7 @@
     ServiceWorkerProcessManager::AllocatedProcessInfo process_info;
     blink::ServiceWorkerStatusCode status =
         process_manager_->AllocateWorkerProcess(
-            kEmbeddedWorkerId, pattern_, script_url_,
+            kEmbeddedWorkerId, scope_, script_url_,
             true /* can_use_existing_process */, &process_info);
     EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, status);
     EXPECT_EQ(
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc
index ec2bf0f5..ab04932 100644
--- a/content/browser/service_worker/service_worker_provider_host.cc
+++ b/content/browser/service_worker/service_worker_provider_host.cc
@@ -562,10 +562,10 @@
 void ServiceWorkerProviderHost::AddMatchingRegistration(
     ServiceWorkerRegistration* registration) {
   DCHECK(
-      ServiceWorkerUtils::ScopeMatches(registration->pattern(), document_url_));
+      ServiceWorkerUtils::ScopeMatches(registration->scope(), document_url_));
   if (!IsContextSecureForServiceWorker())
     return;
-  size_t key = registration->pattern().spec().size();
+  size_t key = registration->scope().spec().size();
   if (base::ContainsKey(matching_registrations_, key))
     return;
   registration->AddListener(this);
@@ -581,7 +581,7 @@
 #endif  // DCHECK_IS_ON()
 
   registration->RemoveListener(this);
-  size_t key = registration->pattern().spec().size();
+  size_t key = registration->scope().spec().size();
   matching_registrations_.erase(key);
 }
 
@@ -840,8 +840,7 @@
   for (const auto& key_registration : registrations) {
     ServiceWorkerRegistration* registration = key_registration.second;
     if (!registration->is_uninstalled() &&
-        ServiceWorkerUtils::ScopeMatches(registration->pattern(),
-                                         document_url_))
+        ServiceWorkerUtils::ScopeMatches(registration->scope(), document_url_))
       AddMatchingRegistration(registration);
   }
 }
@@ -849,7 +848,7 @@
 #if DCHECK_IS_ON()
 bool ServiceWorkerProviderHost::IsMatchingRegistration(
     ServiceWorkerRegistration* registration) const {
-  std::string spec = registration->pattern().spec();
+  std::string spec = registration->scope().spec();
   size_t key = spec.size();
 
   auto iter = matching_registrations_.find(key);
diff --git a/content/browser/service_worker/service_worker_provider_host.h b/content/browser/service_worker/service_worker_provider_host.h
index 801a78dc..c8b23a3 100644
--- a/content/browser/service_worker/service_worker_provider_host.h
+++ b/content/browser/service_worker/service_worker_provider_host.h
@@ -615,7 +615,7 @@
   // Keyed by registration scope URL length.
   using ServiceWorkerRegistrationMap =
       std::map<size_t, scoped_refptr<ServiceWorkerRegistration>>;
-  // Contains all living registrations whose pattern this document's URL
+  // Contains all living registrations whose scope this document's URL
   // starts with, used for .ready and claim(). It is empty if
   // IsContextSecureForServiceWorker() is false. See also
   // AddMatchingRegistration().
diff --git a/content/browser/service_worker/service_worker_provider_host_unittest.cc b/content/browser/service_worker/service_worker_provider_host_unittest.cc
index a4c9a82..5d73cbc2 100644
--- a/content/browser/service_worker/service_worker_provider_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc
@@ -184,12 +184,12 @@
 
   blink::mojom::ServiceWorkerErrorType Register(
       mojom::ServiceWorkerContainerHost* container_host,
-      GURL pattern,
+      GURL scope,
       GURL worker_url) {
     blink::mojom::ServiceWorkerErrorType error =
         blink::mojom::ServiceWorkerErrorType::kUnknown;
     auto options = blink::mojom::ServiceWorkerRegistrationOptions::New();
-    options->scope = pattern;
+    options->scope = scope;
     container_host->Register(
         worker_url, std::move(options),
         base::BindOnce([](blink::mojom::ServiceWorkerErrorType* out_error,
diff --git a/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc b/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc
index 188907a1..aef2b350 100644
--- a/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_read_from_cache_job_unittest.cc
@@ -161,7 +161,7 @@
     blink::ServiceWorkerStatusCode status =
         blink::ServiceWorkerStatusCode::kErrorFailed;
     context()->storage()->FindRegistrationForId(
-        registration_->id(), registration_->pattern().GetOrigin(),
+        registration_->id(), registration_->scope().GetOrigin(),
         base::BindOnce(&DidFindRegistration, &status, run_loop.QuitClosure()));
     run_loop.Run();
     return status;
diff --git a/content/browser/service_worker/service_worker_register_job.cc b/content/browser/service_worker/service_worker_register_job.cc
index 2c38456a..eee62d6 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -40,7 +40,7 @@
     const blink::mojom::ServiceWorkerRegistrationOptions& options)
     : context_(context),
       job_type_(REGISTRATION_JOB),
-      pattern_(options.scope),
+      scope_(options.scope),
       script_url_(script_url),
       worker_script_type_(options.type),
       update_via_cache_(options.update_via_cache),
@@ -60,7 +60,7 @@
     bool skip_script_comparison)
     : context_(context),
       job_type_(UPDATE_JOB),
-      pattern_(registration->pattern()),
+      scope_(registration->scope()),
       update_via_cache_(registration->update_via_cache()),
       phase_(INITIAL),
       doom_installing_worker_(false),
@@ -117,15 +117,14 @@
   }
 
   scoped_refptr<ServiceWorkerRegistration> registration =
-      context_->storage()->GetUninstallingRegistration(pattern_);
+      context_->storage()->GetUninstallingRegistration(scope_);
   if (registration.get())
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(next_step),
                        blink::ServiceWorkerStatusCode::kOk, registration));
   else
-    context_->storage()->FindRegistrationForPattern(pattern_,
-                                                    std::move(next_step));
+    context_->storage()->FindRegistrationForScope(scope_, std::move(next_step));
 }
 
 void ServiceWorkerRegisterJob::Abort() {
@@ -141,9 +140,9 @@
   ServiceWorkerRegisterJob* register_job =
       static_cast<ServiceWorkerRegisterJob*>(job);
   if (job_type_ == UPDATE_JOB)
-    return register_job->pattern_ == pattern_;
+    return register_job->scope_ == scope_;
   DCHECK_EQ(REGISTRATION_JOB, job_type_);
-  return register_job->pattern_ == pattern_ &&
+  return register_job->scope_ == scope_ &&
          register_job->script_url_ == script_url_;
 }
 
@@ -345,7 +344,7 @@
   }
 
   blink::mojom::ServiceWorkerRegistrationOptions options(
-      pattern_, worker_script_type_, update_via_cache_);
+      scope_, worker_script_type_, update_via_cache_);
   set_registration(
       new ServiceWorkerRegistration(options, registration_id, context_));
   AddRegistrationToMatchingProviderHosts(registration());
@@ -582,7 +581,7 @@
 void ServiceWorkerRegisterJob::Complete(blink::ServiceWorkerStatusCode status,
                                         const std::string& status_message) {
   CompleteInternal(status, status_message);
-  context_->job_coordinator()->FinishJob(pattern_, this);
+  context_->job_coordinator()->FinishJob(scope_, this);
 }
 
 void ServiceWorkerRegisterJob::CompleteInternal(
@@ -610,7 +609,7 @@
           !registration()->active_version()) {
         registration()->NotifyRegistrationFailed();
         context_->storage()->DeleteRegistration(
-            registration()->id(), registration()->pattern().GetOrigin(),
+            registration()->id(), registration()->scope().GetOrigin(),
             base::DoNothing());
       }
     }
@@ -646,11 +645,11 @@
   DCHECK(registration);
   for (std::unique_ptr<ServiceWorkerContextCore::ProviderHostIterator> it =
            context_->GetClientProviderHostIterator(
-               registration->pattern().GetOrigin(),
+               registration->scope().GetOrigin(),
                true /* include_reserved_clients */);
        !it->IsAtEnd(); it->Advance()) {
     ServiceWorkerProviderHost* host = it->GetProviderHost();
-    if (!ServiceWorkerUtils::ScopeMatches(registration->pattern(),
+    if (!ServiceWorkerUtils::ScopeMatches(registration->scope(),
                                           host->document_url())) {
       continue;
     }
diff --git a/content/browser/service_worker/service_worker_register_job.h b/content/browser/service_worker/service_worker_register_job.h
index 1b9cca0..2f991a7 100644
--- a/content/browser/service_worker/service_worker_register_job.h
+++ b/content/browser/service_worker/service_worker_register_job.h
@@ -150,7 +150,7 @@
   std::unique_ptr<ServiceWorkerUpdateChecker> update_checker_;
 
   RegistrationJobType job_type_;
-  const GURL pattern_;
+  const GURL scope_;
   GURL script_url_;
   // "A job has a worker type ("classic" or "module")."
   // https://w3c.github.io/ServiceWorker/#dfn-job-worker-type
diff --git a/content/browser/service_worker/service_worker_register_job_base.h b/content/browser/service_worker/service_worker_register_job_base.h
index a35162d7..8c3f59a 100644
--- a/content/browser/service_worker/service_worker_register_job_base.h
+++ b/content/browser/service_worker/service_worker_register_job_base.h
@@ -26,8 +26,8 @@
 
   // Returns true if this job is identical to |job| for the purpose of
   // collapsing them together in a ServiceWorkerJobCoordinator queue.
-  // Registration jobs are equal if they are for the same pattern and script
-  // URL; unregistration jobs are equal if they are for the same pattern.
+  // Registration jobs are equal if they are for the same scope and script
+  // URL; unregistration jobs are equal if they are for the same scope.
   virtual bool Equals(ServiceWorkerRegisterJobBase* job) const = 0;
 
   // Returns the type of this job.
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc
index c7bec6f..2a5912b6 100644
--- a/content/browser/service_worker/service_worker_registration.cc
+++ b/content/browser/service_worker/service_worker_registration.cc
@@ -41,7 +41,7 @@
     const blink::mojom::ServiceWorkerRegistrationOptions& options,
     int64_t registration_id,
     base::WeakPtr<ServiceWorkerContextCore> context)
-    : pattern_(options.scope),
+    : scope_(options.scope),
       update_via_cache_(options.update_via_cache),
       registration_id_(registration_id),
       is_deleted_(false),
@@ -104,7 +104,7 @@
 ServiceWorkerRegistrationInfo ServiceWorkerRegistration::GetInfo() {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   return ServiceWorkerRegistrationInfo(
-      pattern(), update_via_cache(), registration_id_,
+      scope(), update_via_cache(), registration_id_,
       is_deleted_ ? ServiceWorkerRegistrationInfo::IS_DELETED
                   : ServiceWorkerRegistrationInfo::IS_NOT_DELETED,
       GetVersionInfo(active_version_.get()),
@@ -231,7 +231,7 @@
 
   for (std::unique_ptr<ServiceWorkerContextCore::ProviderHostIterator> it =
            context_->GetClientProviderHostIterator(
-               pattern_.GetOrigin(), false /* include_reserved_clients */);
+               scope_.GetOrigin(), false /* include_reserved_clients */);
        !it->IsAtEnd(); it->Advance()) {
     ServiceWorkerProviderHost* host = it->GetProviderHost();
     if (host->controller() == active_version())
@@ -251,7 +251,7 @@
 
   context_->storage()->NotifyUninstallingRegistration(this);
   context_->storage()->DeleteRegistration(
-      id(), pattern().GetOrigin(),
+      id(), scope().GetOrigin(),
       AdaptCallbackForRepeating(
           base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, this)));
 
@@ -450,7 +450,7 @@
   if (!active_version() && !waiting_version()) {
     // Delete the records from the db.
     context_->storage()->DeleteRegistration(
-        id(), pattern().GetOrigin(),
+        id(), scope().GetOrigin(),
         base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, protect));
     // But not from memory if there is a version in the pipeline.
     // TODO(falken): Fix this logic. There could be a running register job for
diff --git a/content/browser/service_worker/service_worker_registration.h b/content/browser/service_worker/service_worker_registration.h
index 1d4a5295..6966d68 100644
--- a/content/browser/service_worker/service_worker_registration.h
+++ b/content/browser/service_worker/service_worker_registration.h
@@ -67,7 +67,7 @@
       base::WeakPtr<ServiceWorkerContextCore> context);
 
   int64_t id() const { return registration_id_; }
-  const GURL& pattern() const { return pattern_; }
+  const GURL& scope() const { return scope_; }
   blink::mojom::ServiceWorkerUpdateViaCache update_via_cache() const {
     return update_via_cache_;
   }
@@ -227,7 +227,7 @@
                          scoped_refptr<ServiceWorkerVersion> version,
                          blink::ServiceWorkerStatusCode status);
 
-  const GURL pattern_;
+  const GURL scope_;
   blink::mojom::ServiceWorkerUpdateViaCache update_via_cache_;
   const int64_t registration_id_;
   bool is_deleted_;
diff --git a/content/browser/service_worker/service_worker_registration_object_host.cc b/content/browser/service_worker/service_worker_registration_object_host.cc
index cd59e49..9eb50bcd 100644
--- a/content/browser/service_worker/service_worker_registration_object_host.cc
+++ b/content/browser/service_worker/service_worker_registration_object_host.cc
@@ -108,7 +108,7 @@
 
   auto info = blink::mojom::ServiceWorkerRegistrationObjectInfo::New();
   info->options = blink::mojom::ServiceWorkerRegistrationOptions::New(
-      registration_->pattern(), script_type, registration_->update_via_cache());
+      registration_->scope(), script_type, registration_->update_via_cache());
   info->registration_id = registration_->id();
   bindings_.AddBinding(this, mojo::MakeRequest(&info->host_ptr_info));
   info->request = mojo::MakeRequest(&remote_registration_);
@@ -227,7 +227,7 @@
   }
 
   context_->UnregisterServiceWorker(
-      registration_->pattern(),
+      registration_->scope(),
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerRegistrationObjectHost::UnregistrationComplete,
           weak_ptr_factory_.GetWeakPtr(), std::move(callback))));
@@ -251,7 +251,7 @@
   }
 
   context_->storage()->UpdateNavigationPreloadEnabled(
-      registration_->id(), registration_->pattern().GetOrigin(), enable,
+      registration_->id(), registration_->scope().GetOrigin(), enable,
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerRegistrationObjectHost::
               DidUpdateNavigationPreloadEnabled,
@@ -298,7 +298,7 @@
   }
 
   context_->storage()->UpdateNavigationPreloadHeader(
-      registration_->id(), registration_->pattern().GetOrigin(), value,
+      registration_->id(), registration_->scope().GetOrigin(), value,
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerRegistrationObjectHost::
               DidUpdateNavigationPreloadHeader,
@@ -440,13 +440,13 @@
   }
 
   std::vector<GURL> urls = {provider_host_->document_url(),
-                            registration_->pattern()};
+                            registration_->scope()};
   if (!ServiceWorkerUtils::AllOriginsMatchAndCanAccessServiceWorkers(urls)) {
     bindings_.ReportBadMessage(ServiceWorkerConsts::kBadMessageImproperOrigins);
     return false;
   }
 
-  if (!provider_host_->AllowServiceWorker(registration_->pattern())) {
+  if (!provider_host_->AllowServiceWorker(registration_->scope())) {
     std::move(*callback).Run(
         blink::mojom::ServiceWorkerErrorType::kDisabled,
         std::string(error_prefix) +
diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc
index 4c9120a..56bd6dc 100644
--- a/content/browser/service_worker/service_worker_registration_unittest.cc
+++ b/content/browser/service_worker/service_worker_registration_unittest.cc
@@ -259,7 +259,7 @@
   EXPECT_EQ(version_1.get(), registration->active_version());
   EXPECT_EQ(registration, listener.observed_registration_);
   EXPECT_TRUE(listener.observed_changed_mask_->active);
-  EXPECT_EQ(kScope, listener.observed_info_.pattern);
+  EXPECT_EQ(kScope, listener.observed_info_.scope);
   EXPECT_EQ(version_1_id, listener.observed_info_.active_version.version_id);
   EXPECT_EQ(kScript, listener.observed_info_.active_version.script_url);
   EXPECT_EQ(listener.observed_info_.installing_version.version_id,
diff --git a/content/browser/service_worker/service_worker_storage.cc b/content/browser/service_worker/service_worker_storage.cc
index ca3e891..b6adc3cb 100644
--- a/content/browser/service_worker/service_worker_storage.cc
+++ b/content/browser/service_worker/service_worker_storage.cc
@@ -201,7 +201,7 @@
                          std::move(callback), callback_id)));
 }
 
-void ServiceWorkerStorage::FindRegistrationForPattern(
+void ServiceWorkerStorage::FindRegistrationForScope(
     const GURL& scope,
     FindRegistrationCallback callback) {
   switch (state_) {
@@ -213,7 +213,7 @@
     case INITIALIZING:  // Fall-through.
     case UNINITIALIZED:
       LazyInitialize(base::BindOnce(
-          &ServiceWorkerStorage::FindRegistrationForPattern,
+          &ServiceWorkerStorage::FindRegistrationForScope,
           weak_factory_.GetWeakPtr(), scope, std::move(callback)));
       return;
     case INITIALIZED:
@@ -224,7 +224,7 @@
   if (!base::ContainsKey(registered_origins_, scope.GetOrigin())) {
     // Look for something currently being installed.
     scoped_refptr<ServiceWorkerRegistration> installing_registration =
-        FindInstallingRegistrationForPattern(scope);
+        FindInstallingRegistrationForScope(scope);
     blink::ServiceWorkerStatusCode installing_status =
         installing_registration
             ? blink::ServiceWorkerStatusCode::kOk
@@ -237,9 +237,9 @@
   database_task_runner_->PostTask(
       FROM_HERE,
       base::BindOnce(
-          &FindForPatternInDB, database_.get(),
+          &FindForScopeInDB, database_.get(),
           base::ThreadTaskRunnerHandle::Get(), scope,
-          base::BindOnce(&ServiceWorkerStorage::DidFindRegistrationForPattern,
+          base::BindOnce(&ServiceWorkerStorage::DidFindRegistrationForScope,
                          weak_factory_.GetWeakPtr(), scope,
                          std::move(callback))));
 }
@@ -249,7 +249,7 @@
   if (state_ != INITIALIZED)
     return nullptr;
   for (const auto& registration : uninstalling_registrations_) {
-    if (registration.second->pattern() == scope) {
+    if (registration.second->scope() == scope) {
       DCHECK(registration.second->is_uninstalling());
       return registration.second.get();
     }
@@ -333,7 +333,7 @@
     // registrations is returned.
     // TODO(mek): CompleteFindNow should really do all the required checks, so
     // calling that directly here should be enough.
-    FindRegistrationForId(registration_id, registration->pattern().GetOrigin(),
+    FindRegistrationForId(registration_id, registration->scope().GetOrigin(),
                           std::move(callback));
     return;
   }
@@ -430,7 +430,7 @@
 
   ServiceWorkerDatabase::RegistrationData data;
   data.registration_id = registration->id();
-  data.scope = registration->pattern();
+  data.scope = registration->scope();
   data.script = version->script_url();
   data.script_type = version->script_type();
   data.update_via_cache = registration->update_via_cache();
@@ -492,7 +492,7 @@
       database_task_runner_.get(), FROM_HERE,
       base::BindOnce(&ServiceWorkerDatabase::UpdateVersionToActive,
                      base::Unretained(database_.get()), registration->id(),
-                     registration->pattern().GetOrigin()),
+                     registration->scope().GetOrigin()),
       base::BindOnce(&ServiceWorkerStorage::DidUpdateToActiveState,
                      weak_factory_.GetWeakPtr(), std::move(callback)));
 }
@@ -509,7 +509,7 @@
       base::BindOnce(
           base::IgnoreResult(&ServiceWorkerDatabase::UpdateLastCheckTime),
           base::Unretained(database_.get()), registration->id(),
-          registration->pattern().GetOrigin(),
+          registration->scope().GetOrigin(),
           registration->last_update_check()));
 }
 
@@ -1209,7 +1209,7 @@
       "Status", ServiceWorkerDatabase::StatusToString(status));
 }
 
-void ServiceWorkerStorage::DidFindRegistrationForPattern(
+void ServiceWorkerStorage::DidFindRegistrationForScope(
     const GURL& scope,
     FindRegistrationCallback callback,
     const ServiceWorkerDatabase::RegistrationData& data,
@@ -1222,7 +1222,7 @@
 
   if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) {
     scoped_refptr<ServiceWorkerRegistration> installing_registration =
-        FindInstallingRegistrationForPattern(scope);
+        FindInstallingRegistrationForScope(scope);
     blink::ServiceWorkerStatusCode installing_status =
         installing_registration
             ? blink::ServiceWorkerStatusCode::kOk
@@ -1301,7 +1301,7 @@
 
   // Add unstored registrations that are being installed.
   for (const auto& registration : installing_registrations_) {
-    if (registration.second->pattern().GetOrigin() != origin_filter)
+    if (registration.second->scope().GetOrigin() != origin_filter)
       continue;
     if (registration_ids.insert(registration.first).second)
       registrations.push_back(registration.second);
@@ -1340,7 +1340,7 @@
     }
 
     ServiceWorkerRegistrationInfo info;
-    info.pattern = registration_data.scope;
+    info.scope = registration_data.scope;
     info.update_via_cache = registration_data.update_via_cache;
     info.registration_id = registration_data.registration_id;
     info.stored_version_size_bytes =
@@ -1604,15 +1604,15 @@
   // TODO(nhiroki): This searches over installing registrations linearly and it
   // couldn't be scalable. Maybe the regs should be partitioned by origin.
   for (const auto& registration : installing_registrations_)
-    if (matcher.MatchLongest(registration.second->pattern()))
+    if (matcher.MatchLongest(registration.second->scope()))
       match = registration.second.get();
   return match;
 }
 
 ServiceWorkerRegistration*
-ServiceWorkerStorage::FindInstallingRegistrationForPattern(const GURL& scope) {
+ServiceWorkerStorage::FindInstallingRegistrationForScope(const GURL& scope) {
   for (const auto& registration : installing_registrations_)
-    if (registration.second->pattern() == scope)
+    if (registration.second->scope() == scope)
       return registration.second.get();
   return nullptr;
 }
@@ -1920,7 +1920,7 @@
   ResourceList resources;
   status = ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND;
 
-  // Find one with a pattern match.
+  // Find one with a scope match.
   LongestScopeMatcher matcher(document_url);
   int64_t match = blink::mojom::kInvalidServiceWorkerRegistrationId;
   for (const auto& registration_data : registration_data_list)
@@ -1934,7 +1934,7 @@
 }
 
 // static
-void ServiceWorkerStorage::FindForPatternInDB(
+void ServiceWorkerStorage::FindForScopeInDB(
     ServiceWorkerDatabase* database,
     scoped_refptr<base::SequencedTaskRunner> original_task_runner,
     const GURL& scope,
diff --git a/content/browser/service_worker/service_worker_storage.h b/content/browser/service_worker/service_worker_storage.h
index 722ba4e..893a027 100644
--- a/content/browser/service_worker/service_worker_storage.h
+++ b/content/browser/service_worker/service_worker_storage.h
@@ -108,20 +108,20 @@
       const base::WeakPtr<ServiceWorkerContextCore>& context,
       ServiceWorkerStorage* old_storage);
 
-  // Finds registration for |document_url| or |pattern| or |registration_id|.
+  // Finds registration for |document_url| or |scope| or |registration_id|.
   // The Find methods will find stored and initially installing registrations.
   // Returns blink::ServiceWorkerStatusCode::kOk with non-null
   // registration if registration is found, or returns
   // blink::ServiceWorkerStatusCode::kErrorNotFound if no
-  // matching registration is found.  The FindRegistrationForPattern method is
+  // matching registration is found.  The FindRegistrationForScope method is
   // guaranteed to return asynchronously. However, the methods to find
   // for |document_url| or |registration_id| may complete immediately
   // (the callback may be called prior to the method returning) or
   // asynchronously.
   void FindRegistrationForDocument(const GURL& document_url,
                                    FindRegistrationCallback callback);
-  void FindRegistrationForPattern(const GURL& scope,
-                                  FindRegistrationCallback callback);
+  void FindRegistrationForScope(const GURL& scope,
+                                FindRegistrationCallback callback);
   void FindRegistrationForId(int64_t registration_id,
                              const GURL& origin,
                              FindRegistrationCallback callback);
@@ -375,7 +375,7 @@
       const ServiceWorkerDatabase::RegistrationData& data,
       const ResourceList& resources,
       ServiceWorkerDatabase::Status status);
-  void DidFindRegistrationForPattern(
+  void DidFindRegistrationForScope(
       const GURL& scope,
       FindRegistrationCallback callback,
       const ServiceWorkerDatabase::RegistrationData& data,
@@ -437,7 +437,7 @@
       const ResourceList& resources);
   ServiceWorkerRegistration* FindInstallingRegistrationForDocument(
       const GURL& document_url);
-  ServiceWorkerRegistration* FindInstallingRegistrationForPattern(
+  ServiceWorkerRegistration* FindInstallingRegistrationForScope(
       const GURL& scope);
   ServiceWorkerRegistration* FindInstallingRegistrationForId(
       int64_t registration_id);
@@ -489,7 +489,7 @@
       scoped_refptr<base::SequencedTaskRunner> original_task_runner,
       const GURL& document_url,
       FindInDBCallback callback);
-  static void FindForPatternInDB(
+  static void FindForScopeInDB(
       ServiceWorkerDatabase* database,
       scoped_refptr<base::SequencedTaskRunner> original_task_runner,
       const GURL& scope,
diff --git a/content/browser/service_worker/service_worker_storage_unittest.cc b/content/browser/service_worker/service_worker_storage_unittest.cc
index 818540e..9424944 100644
--- a/content/browser/service_worker/service_worker_storage_unittest.cc
+++ b/content/browser/service_worker/service_worker_storage_unittest.cc
@@ -550,12 +550,12 @@
     return result.value();
   }
 
-  blink::ServiceWorkerStatusCode FindRegistrationForPattern(
+  blink::ServiceWorkerStatusCode FindRegistrationForScope(
       const GURL& scope,
       scoped_refptr<ServiceWorkerRegistration>* registration) {
     bool was_called = false;
     base::Optional<blink::ServiceWorkerStatusCode> result;
-    storage()->FindRegistrationForPattern(
+    storage()->FindRegistrationForScope(
         scope, MakeFindCallback(&was_called, &result, registration));
     EXPECT_FALSE(was_called);  // always async
     base::RunLoop().RunUntilIdle();
@@ -626,7 +626,7 @@
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorAbort,
             FindRegistrationForDocument(kDocumentUrl, &found_registration));
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorAbort,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorAbort,
             FindRegistrationForId(kRegistrationId, kScope.GetOrigin(),
                                   &found_registration));
@@ -719,7 +719,7 @@
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
@@ -763,9 +763,9 @@
             found_registration->waiting_version()->used_features());
   found_registration = nullptr;
 
-  // But FindRegistrationForPattern is always async.
+  // But FindRegistrationForScope is always async.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
@@ -827,9 +827,9 @@
   // Drop the live version too.
   live_version = nullptr;
 
-  // And FindRegistrationForPattern is always async.
+  // And FindRegistrationForScope is always async.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   ASSERT_TRUE(found_registration.get());
   EXPECT_EQ(kRegistrationId, found_registration->id());
   EXPECT_TRUE(found_registration->HasOneRef());
@@ -929,7 +929,7 @@
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   EXPECT_FALSE(found_registration.get());
 
   std::vector<ServiceWorkerRegistrationInfo> all_registrations;
@@ -970,7 +970,7 @@
   found_registration = nullptr;
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
@@ -1010,7 +1010,7 @@
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForPattern(kScope, &found_registration));
+            FindRegistrationForScope(kScope, &found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
diff --git a/content/browser/service_worker/service_worker_unregister_job.cc b/content/browser/service_worker/service_worker_unregister_job.cc
index 9b063838..7ea0b96b 100644
--- a/content/browser/service_worker/service_worker_unregister_job.cc
+++ b/content/browser/service_worker/service_worker_unregister_job.cc
@@ -19,12 +19,11 @@
 
 ServiceWorkerUnregisterJob::ServiceWorkerUnregisterJob(
     base::WeakPtr<ServiceWorkerContextCore> context,
-    const GURL& pattern)
+    const GURL& scope)
     : context_(context),
-      pattern_(pattern),
+      scope_(scope),
       is_promise_resolved_(false),
-      weak_factory_(this) {
-}
+      weak_factory_(this) {}
 
 ServiceWorkerUnregisterJob::~ServiceWorkerUnregisterJob() {}
 
@@ -33,9 +32,9 @@
 }
 
 void ServiceWorkerUnregisterJob::Start() {
-  context_->storage()->FindRegistrationForPattern(
-      pattern_, base::BindOnce(&ServiceWorkerUnregisterJob::OnRegistrationFound,
-                               weak_factory_.GetWeakPtr()));
+  context_->storage()->FindRegistrationForScope(
+      scope_, base::BindOnce(&ServiceWorkerUnregisterJob::OnRegistrationFound,
+                             weak_factory_.GetWeakPtr()));
 }
 
 void ServiceWorkerUnregisterJob::Abort() {
@@ -47,7 +46,7 @@
     ServiceWorkerRegisterJobBase* job) const {
   if (job->GetType() != GetType())
     return false;
-  return static_cast<ServiceWorkerUnregisterJob*>(job)->pattern_ == pattern_;
+  return static_cast<ServiceWorkerUnregisterJob*>(job)->scope_ == scope_;
 }
 
 RegistrationJobType ServiceWorkerUnregisterJob::GetType() const {
@@ -84,7 +83,7 @@
     int64_t registration_id,
     blink::ServiceWorkerStatusCode status) {
   CompleteInternal(registration_id, status);
-  context_->job_coordinator()->FinishJob(pattern_, this);
+  context_->job_coordinator()->FinishJob(scope_, this);
 }
 
 void ServiceWorkerUnregisterJob::CompleteInternal(
diff --git a/content/browser/service_worker/service_worker_unregister_job.h b/content/browser/service_worker/service_worker_unregister_job.h
index 1c86888..f2eade8 100644
--- a/content/browser/service_worker/service_worker_unregister_job.h
+++ b/content/browser/service_worker/service_worker_unregister_job.h
@@ -33,7 +33,7 @@
       UnregistrationCallback;
 
   ServiceWorkerUnregisterJob(base::WeakPtr<ServiceWorkerContextCore> context,
-                             const GURL& pattern);
+                             const GURL& scope);
   ~ServiceWorkerUnregisterJob() override;
 
   // Registers a callback to be called when the job completes (whether
@@ -57,7 +57,7 @@
                       blink::ServiceWorkerStatusCode status);
 
   base::WeakPtr<ServiceWorkerContextCore> context_;
-  const GURL pattern_;
+  const GURL scope_;
   std::vector<UnregistrationCallback> callbacks_;
   bool is_promise_resolved_;
   base::WeakPtrFactory<ServiceWorkerUnregisterJob> weak_factory_;
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 24838249..e50d39f9 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -233,7 +233,7 @@
       registration_id_(registration->id()),
       script_url_(script_url),
       script_origin_(url::Origin::Create(script_url_)),
-      scope_(registration->pattern()),
+      scope_(registration->scope()),
       script_type_(script_type),
       fetch_handler_existence_(FetchHandlerExistence::UNKNOWN),
       site_for_uma_(ServiceWorkerMetrics::SiteFromURL(scope_)),
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h
index 014c8eaa..5a3727c 100644
--- a/content/browser/service_worker/service_worker_version.h
+++ b/content/browser/service_worker/service_worker_version.h
@@ -106,7 +106,7 @@
 }  // namespace service_worker_navigation_loader_unittest
 
 // This class corresponds to a specific version of a ServiceWorker
-// script for a given pattern. When a script is upgraded, there may be
+// script for a given scope. When a script is upgraded, there may be
 // more than one ServiceWorkerVersion "running" at a time, but only
 // one of them is activated. This class connects the actual script with a
 // running worker.
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index 5fbc9c5..7a5707a 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -147,9 +147,9 @@
     helper_->context()->storage()->LazyInitializeForTest(base::DoNothing());
     base::RunLoop().RunUntilIdle();
 
-    pattern_ = GURL("https://www.example.com/test/");
+    scope_ = GURL("https://www.example.com/test/");
     blink::mojom::ServiceWorkerRegistrationOptions options;
-    options.scope = pattern_;
+    options.scope = scope_;
     registration_ = new ServiceWorkerRegistration(
         options, helper_->context()->storage()->NewRegistrationId(),
         helper_->context()->AsWeakPtr());
@@ -159,7 +159,7 @@
         blink::mojom::ScriptType::kClassic,
         helper_->context()->storage()->NewVersionId(),
         helper_->context()->AsWeakPtr());
-    EXPECT_EQ(url::Origin::Create(pattern_), version_->script_origin());
+    EXPECT_EQ(url::Origin::Create(scope_), version_->script_origin());
     std::vector<ServiceWorkerDatabase::ResourceRecord> records;
     records.push_back(WriteToDiskCacheSync(
         helper_->context()->storage(), version_->script_url(), 10,
@@ -228,7 +228,7 @@
   std::unique_ptr<MessageReceiver> helper_;
   scoped_refptr<ServiceWorkerRegistration> registration_;
   scoped_refptr<ServiceWorkerVersion> version_;
-  GURL pattern_;
+  GURL scope_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersionTest);
@@ -498,7 +498,7 @@
   // Delete the registration.
   base::Optional<blink::ServiceWorkerStatusCode> status;
   helper_->context()->storage()->DeleteRegistration(
-      registration_->id(), registration_->pattern().GetOrigin(),
+      registration_->id(), registration_->scope().GetOrigin(),
       CreateReceiverOnCurrentThread(&status));
   base::RunLoop().RunUntilIdle();
   ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
@@ -588,7 +588,7 @@
       33 /* dummy render process id */, 1 /* dummy provider_id */,
       true /* is_parent_frame_secure */, helper_->context()->AsWeakPtr(),
       &remote_endpoint);
-  host->SetDocumentUrl(registration_->pattern());
+  host->SetDocumentUrl(registration_->scope());
   host->SetControllerRegistration(registration_, false);
   EXPECT_TRUE(version_->HasControllee());
   EXPECT_TRUE(host->controller());
diff --git a/content/common/service_worker/service_worker_types.cc b/content/common/service_worker/service_worker_types.cc
index d69f31b8..5c97907 100644
--- a/content/common/service_worker/service_worker_types.cc
+++ b/content/common/service_worker/service_worker_types.cc
@@ -4,8 +4,7 @@
 
 #include "content/common/service_worker/service_worker_types.h"
 
-#include "content/common/service_worker/service_worker_types.pb.h"
-#include "storage/common/blob_storage/blob_handle.h"
+#include "net/base/load_flags.h"
 
 namespace content {
 
@@ -55,30 +54,6 @@
 
 ServiceWorkerFetchRequest::~ServiceWorkerFetchRequest() {}
 
-std::string ServiceWorkerFetchRequest::Serialize() const {
-  proto::internal::ServiceWorkerFetchRequest request_proto;
-
-  request_proto.set_url(url.spec());
-  request_proto.set_method(method);
-  request_proto.mutable_headers()->insert(headers.begin(), headers.end());
-  request_proto.mutable_referrer()->set_url(referrer.url.spec());
-  request_proto.mutable_referrer()->set_policy(referrer.policy);
-  request_proto.set_is_reload(is_reload);
-  request_proto.set_mode(static_cast<int>(mode));
-  request_proto.set_is_main_resource_load(is_main_resource_load);
-  request_proto.set_request_context_type(
-      static_cast<int>(request_context_type));
-  request_proto.set_credentials_mode(static_cast<int>(credentials_mode));
-  request_proto.set_cache_mode(static_cast<int>(cache_mode));
-  request_proto.set_redirect_mode(static_cast<int>(redirect_mode));
-  request_proto.set_integrity(integrity);
-  request_proto.set_keepalive(keepalive);
-  request_proto.set_is_history_navigation(is_history_navigation);
-  request_proto.set_client_id(client_id);
-
-  return request_proto.SerializeAsString();
-}
-
 size_t ServiceWorkerFetchRequest::EstimatedStructSize() {
   size_t size = sizeof(ServiceWorkerFetchRequest);
   size += url.spec().size();
@@ -92,39 +67,4 @@
   return size;
 }
 
-// static
-ServiceWorkerFetchRequest ServiceWorkerFetchRequest::ParseFromString(
-    const std::string& serialized) {
-  proto::internal::ServiceWorkerFetchRequest request_proto;
-  if (!request_proto.ParseFromString(serialized)) {
-    return ServiceWorkerFetchRequest();
-  }
-
-  ServiceWorkerFetchRequest request(
-      GURL(request_proto.url()), request_proto.method(),
-      ServiceWorkerHeaderMap(request_proto.headers().begin(),
-                             request_proto.headers().end()),
-      Referrer(GURL(request_proto.referrer().url()),
-               static_cast<blink::WebReferrerPolicy>(
-                   request_proto.referrer().policy())),
-      request_proto.is_reload());
-  request.mode =
-      static_cast<network::mojom::FetchRequestMode>(request_proto.mode());
-  request.is_main_resource_load = request_proto.is_main_resource_load();
-  request.request_context_type = static_cast<blink::mojom::RequestContextType>(
-      request_proto.request_context_type());
-  request.credentials_mode = static_cast<network::mojom::FetchCredentialsMode>(
-      request_proto.credentials_mode());
-  request.cache_mode =
-      static_cast<blink::mojom::FetchCacheMode>(request_proto.cache_mode());
-  request.redirect_mode = static_cast<network::mojom::FetchRedirectMode>(
-      request_proto.redirect_mode());
-  request.integrity = request_proto.integrity();
-  request.keepalive = request_proto.keepalive();
-  request.is_history_navigation = request_proto.is_history_navigation();
-  request.client_id = request_proto.client_id();
-
-  return request;
-}
-
 }  // namespace content
diff --git a/content/common/service_worker/service_worker_types.h b/content/common/service_worker/service_worker_types.h
index 7754680..8c667bf 100644
--- a/content/common/service_worker/service_worker_types.h
+++ b/content/common/service_worker/service_worker_types.h
@@ -88,10 +88,6 @@
   ServiceWorkerFetchRequest& operator=(const ServiceWorkerFetchRequest& other);
   ~ServiceWorkerFetchRequest();
   size_t EstimatedStructSize();
-  std::string Serialize() const;
-
-  static ServiceWorkerFetchRequest ParseFromString(
-      const std::string& serialized);
 
   // Be sure to update EstimatedStructSize(), Serialize(), and ParseFromString()
   // when adding members.
diff --git a/content/common/service_worker/service_worker_types_unittest.cc b/content/common/service_worker/service_worker_types_unittest.cc
index 8a1fe70..d3a93fc 100644
--- a/content/common/service_worker/service_worker_types_unittest.cc
+++ b/content/common/service_worker/service_worker_types_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 "content/common/service_worker/service_worker_types.h"
+
 #include "base/guid.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "mojo/public/cpp/base/time_mojom_traits.h"
@@ -31,9 +33,11 @@
   request.keepalive = true;
   request.client_id = "42";
 
-  EXPECT_EQ(request.Serialize(),
-            ServiceWorkerFetchRequest::ParseFromString(request.Serialize())
-                .Serialize());
+  EXPECT_EQ(
+      ServiceWorkerUtils::SerializeFetchRequestToString(request),
+      ServiceWorkerUtils::SerializeFetchRequestToString(
+          ServiceWorkerUtils::DeserializeFetchRequestFromString(
+              ServiceWorkerUtils::SerializeFetchRequestToString(request))));
 }
 
 }  // namespace
diff --git a/content/common/service_worker/service_worker_utils.cc b/content/common/service_worker/service_worker_utils.cc
index 44d34b8e..9fa2105c 100644
--- a/content/common/service_worker/service_worker_utils.cc
+++ b/content/common/service_worker/service_worker_utils.cc
@@ -9,6 +9,7 @@
 #include "base/logging.h"
 #include "base/numerics/safe_math.h"
 #include "base/strings/string_util.h"
+#include "content/common/service_worker/service_worker_types.pb.h"
 #include "content/public/common/browser_side_navigation_policy.h"
 #include "content/public/common/content_features.h"
 #include "content/public/common/content_switches.h"
@@ -211,6 +212,69 @@
   return blink::mojom::FetchCacheMode::kDefault;
 }
 
+// static
+std::string ServiceWorkerUtils::SerializeFetchRequestToString(
+    const ServiceWorkerFetchRequest& request) {
+  proto::internal::ServiceWorkerFetchRequest request_proto;
+
+  request_proto.set_url(request.url.spec());
+  request_proto.set_method(request.method);
+  request_proto.mutable_headers()->insert(request.headers.begin(),
+                                          request.headers.end());
+  request_proto.mutable_referrer()->set_url(request.referrer.url.spec());
+  request_proto.mutable_referrer()->set_policy(request.referrer.policy);
+  request_proto.set_is_reload(request.is_reload);
+  request_proto.set_mode(static_cast<int>(request.mode));
+  request_proto.set_is_main_resource_load(request.is_main_resource_load);
+  request_proto.set_request_context_type(
+      static_cast<int>(request.request_context_type));
+  request_proto.set_credentials_mode(
+      static_cast<int>(request.credentials_mode));
+  request_proto.set_cache_mode(static_cast<int>(request.cache_mode));
+  request_proto.set_redirect_mode(static_cast<int>(request.redirect_mode));
+  request_proto.set_integrity(request.integrity);
+  request_proto.set_keepalive(request.keepalive);
+  request_proto.set_is_history_navigation(request.is_history_navigation);
+  request_proto.set_client_id(request.client_id);
+
+  return request_proto.SerializeAsString();
+}
+
+// static
+ServiceWorkerFetchRequest ServiceWorkerUtils::DeserializeFetchRequestFromString(
+    const std::string& serialized) {
+  proto::internal::ServiceWorkerFetchRequest request_proto;
+  if (!request_proto.ParseFromString(serialized)) {
+    return ServiceWorkerFetchRequest();
+  }
+
+  ServiceWorkerFetchRequest request(
+      GURL(request_proto.url()), request_proto.method(),
+      ServiceWorkerHeaderMap(request_proto.headers().begin(),
+                             request_proto.headers().end()),
+      Referrer(GURL(request_proto.referrer().url()),
+               static_cast<blink::WebReferrerPolicy>(
+                   request_proto.referrer().policy())),
+      request_proto.is_reload());
+  request.mode =
+      static_cast<network::mojom::FetchRequestMode>(request_proto.mode());
+  request.is_main_resource_load = request_proto.is_main_resource_load();
+  request.request_context_type = static_cast<blink::mojom::RequestContextType>(
+      request_proto.request_context_type());
+  request.credentials_mode = static_cast<network::mojom::FetchCredentialsMode>(
+      request_proto.credentials_mode());
+  request.cache_mode =
+      static_cast<blink::mojom::FetchCacheMode>(request_proto.cache_mode());
+  request.redirect_mode = static_cast<network::mojom::FetchRedirectMode>(
+      request_proto.redirect_mode());
+  request.integrity = request_proto.integrity();
+  request.keepalive = request_proto.keepalive();
+  request.is_history_navigation = request_proto.is_history_navigation();
+  request.client_id = request_proto.client_id();
+
+  return request;
+}
+
 bool LongestScopeMatcher::MatchLongest(const GURL& scope) {
   if (!ServiceWorkerUtils::ScopeMatches(scope, url_))
     return false;
diff --git a/content/common/service_worker/service_worker_utils.h b/content/common/service_worker/service_worker_utils.h
index 2ba85d2..5533595 100644
--- a/content/common/service_worker/service_worker_utils.h
+++ b/content/common/service_worker/service_worker_utils.h
@@ -80,6 +80,12 @@
   CONTENT_EXPORT static blink::mojom::FetchCacheMode GetCacheModeFromLoadFlags(
       int load_flags);
 
+  CONTENT_EXPORT static std::string SerializeFetchRequestToString(
+      const ServiceWorkerFetchRequest& request);
+
+  CONTENT_EXPORT static ServiceWorkerFetchRequest
+  DeserializeFetchRequestFromString(const std::string& serialized);
+
  private:
   static bool IsPathRestrictionSatisfiedInternal(
       const GURL& scope,
diff --git a/content/public/browser/service_worker_context.h b/content/public/browser/service_worker_context.h
index f1974cd4..f68522f 100644
--- a/content/public/browser/service_worker_context.h
+++ b/content/public/browser/service_worker_context.h
@@ -163,14 +163,14 @@
   // be called on the UI thread.
   virtual void ClearAllServiceWorkersForTest(base::OnceClosure callback) = 0;
 
-  // Starts the active worker of the registration whose scope is |pattern|. If
+  // Starts the active worker of the registration for the given |scope|. If
   // there is no active worker, starts the installing worker.
   // |info_callback| is passed information about the started worker.
   //
   // Must be called on IO thread.
-  virtual void StartWorkerForPattern(const GURL& pattern,
-                                     StartWorkerCallback info_callback,
-                                     base::OnceClosure failure_callback) = 0;
+  virtual void StartWorkerForScope(const GURL& scope,
+                                   StartWorkerCallback info_callback,
+                                   base::OnceClosure failure_callback) = 0;
 
   // Deprecated: DO NOT USE
   // This is a temporary addition only to be used for the Android Messages
@@ -179,11 +179,11 @@
   // (content/browser/service_worker/OWNERS) if you have questions.
   //
   // This method MUST be called on the IO thread.  It starts the active worker
-  // of the registration whose scope is |pattern|, sets its timeout to 999 days,
+  // of the registration for the given |scope|, sets its timeout to 999 days,
   // and passes in the given |message|.  The |result_callback| will be executed
   // upon success or failure and pass back the boolean result.
   virtual void StartServiceWorkerAndDispatchLongRunningMessage(
-      const GURL& pattern,
+      const GURL& scope,
       blink::TransferableMessage message,
       ResultCallback result_callback) = 0;
 
diff --git a/content/public/test/fake_service_worker_context.cc b/content/public/test/fake_service_worker_context.cc
index 77df13c0..789cff22c 100644
--- a/content/public/test/fake_service_worker_context.cc
+++ b/content/public/test/fake_service_worker_context.cc
@@ -28,7 +28,7 @@
   NOTREACHED();
 }
 void FakeServiceWorkerContext::UnregisterServiceWorker(
-    const GURL& pattern,
+    const GURL& scope,
     ResultCallback callback) {
   NOTREACHED();
 }
@@ -67,8 +67,8 @@
     base::OnceClosure) {
   NOTREACHED();
 }
-void FakeServiceWorkerContext::StartWorkerForPattern(
-    const GURL& pattern,
+void FakeServiceWorkerContext::StartWorkerForScope(
+    const GURL& scope,
     ServiceWorkerContext::StartWorkerCallback info_callback,
     base::OnceClosure failure_callback) {
   NOTREACHED();
@@ -80,11 +80,11 @@
 }
 
 void FakeServiceWorkerContext::StartServiceWorkerAndDispatchLongRunningMessage(
-    const GURL& pattern,
+    const GURL& scope,
     blink::TransferableMessage message,
     ResultCallback result_callback) {
   start_service_worker_and_dispatch_long_running_message_calls_.push_back(
-      std::make_tuple(pattern, std::move(message), std::move(result_callback)));
+      std::make_tuple(scope, std::move(message), std::move(result_callback)));
 }
 
 void FakeServiceWorkerContext::StopAllServiceWorkersForOrigin(
diff --git a/content/public/test/fake_service_worker_context.h b/content/public/test/fake_service_worker_context.h
index 00b6651..c263f46 100644
--- a/content/public/test/fake_service_worker_context.h
+++ b/content/public/test/fake_service_worker_context.h
@@ -36,7 +36,7 @@
       const GURL& script_url,
       const blink::mojom::ServiceWorkerRegistrationOptions& options,
       ResultCallback callback) override;
-  void UnregisterServiceWorker(const GURL& pattern,
+  void UnregisterServiceWorker(const GURL& scope,
                                ResultCallback callback) override;
   bool StartingExternalRequest(int64_t service_worker_version_id,
                                const std::string& request_uuid) override;
@@ -51,12 +51,12 @@
                              const GURL& other_url,
                              CheckHasServiceWorkerCallback callback) override;
   void ClearAllServiceWorkersForTest(base::OnceClosure) override;
-  void StartWorkerForPattern(
-      const GURL& pattern,
+  void StartWorkerForScope(
+      const GURL& scope,
       ServiceWorkerContext::StartWorkerCallback info_callback,
       base::OnceClosure failure_callback) override;
   void StartServiceWorkerAndDispatchLongRunningMessage(
-      const GURL& pattern,
+      const GURL& scope,
       blink::TransferableMessage message,
       FakeServiceWorkerContext::ResultCallback result_callback) override;
   void StartServiceWorkerForNavigationHint(
diff --git a/content/public/test/service_worker_test_helpers.cc b/content/public/test/service_worker_test_helpers.cc
index ad37be5..5712484 100644
--- a/content/public/test/service_worker_test_helpers.cc
+++ b/content/public/test/service_worker_test_helpers.cc
@@ -96,21 +96,21 @@
 
 }  // namespace
 
-void StopServiceWorkerForPattern(ServiceWorkerContext* context,
-                                 const GURL& pattern,
-                                 base::OnceClosure completion_callback_ui) {
+void StopServiceWorkerForScope(ServiceWorkerContext* context,
+                               const GURL& scope,
+                               base::OnceClosure completion_callback_ui) {
   if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::IO},
-        base::BindOnce(&StopServiceWorkerForPattern, context, pattern,
+        base::BindOnce(&StopServiceWorkerForScope, context, scope,
                        std::move(completion_callback_ui)));
     return;
   }
   auto* context_wrapper = static_cast<ServiceWorkerContextWrapper*>(context);
-  context_wrapper->FindReadyRegistrationForPattern(
-      pattern, base::BindOnce(&FoundReadyRegistration,
-                              base::RetainedRef(context_wrapper),
-                              std::move(completion_callback_ui)));
+  context_wrapper->FindReadyRegistrationForScope(
+      scope, base::BindOnce(&FoundReadyRegistration,
+                            base::RetainedRef(context_wrapper),
+                            std::move(completion_callback_ui)));
 }
 
 }  // namespace content
diff --git a/content/public/test/service_worker_test_helpers.h b/content/public/test/service_worker_test_helpers.h
index 754d8b1..c1c65c82 100644
--- a/content/public/test/service_worker_test_helpers.h
+++ b/content/public/test/service_worker_test_helpers.h
@@ -12,13 +12,13 @@
 
 class ServiceWorkerContext;
 
-// Stops the active service worker of the registration whose scope is |pattern|,
+// Stops the active service worker of the registration for the given |scope|,
 // and calls |complete_callback_ui| callback on UI thread when done.
 //
 // Can be called from UI/IO thread.
-void StopServiceWorkerForPattern(ServiceWorkerContext* context,
-                                 const GURL& pattern,
-                                 base::OnceClosure complete_callback_ui);
+void StopServiceWorkerForScope(ServiceWorkerContext* context,
+                               const GURL& scope,
+                               base::OnceClosure complete_callback_ui);
 
 }  // namespace content
 
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc
index 02f57f3..3bc0337c5 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.cc
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -805,7 +805,7 @@
       TruncateAndAddStringAttribute(dst, ax::mojom::StringAttribute::kHtmlTag,
                                     "#document");
 
-    const bool is_table_like_role = ui::IsTableLikeRole(dst->role);
+    const bool is_table_like_role = ui::IsTableLike(dst->role);
     if (is_table_like_role) {
       int column_count = src.ColumnCount();
       int row_count = src.RowCount();
@@ -827,7 +827,7 @@
                              aria_rowcount);
     }
 
-    if (ui::IsTableRowRole(dst->role)) {
+    if (ui::IsTableRow(dst->role)) {
       dst->AddIntAttribute(ax::mojom::IntAttribute::kTableRowIndex,
                            src.RowIndex());
       WebAXObject header = src.RowHeader();
@@ -836,7 +836,7 @@
                              header.AxID());
     }
 
-    if (ui::IsCellOrTableHeaderRole(dst->role)) {
+    if (ui::IsCellOrTableHeader(dst->role)) {
       dst->AddIntAttribute(ax::mojom::IntAttribute::kTableCellColumnIndex,
                            src.CellColumnIndex());
       dst->AddIntAttribute(ax::mojom::IntAttribute::kTableCellColumnSpan,
@@ -853,8 +853,7 @@
       }
     }
 
-    if (ui::IsCellOrTableHeaderRole(dst->role) ||
-        ui::IsTableRowRole(dst->role)) {
+    if (ui::IsCellOrTableHeader(dst->role) || ui::IsTableRow(dst->role)) {
       // aria-rowindex is supported on cells, headers and rows.
       int aria_rowindex = src.AriaRowIndex();
       if (aria_rowindex)
@@ -862,7 +861,7 @@
                              aria_rowindex);
     }
 
-    if (ui::IsTableHeaderRole(dst->role) &&
+    if (ui::IsTableHeader(dst->role) &&
         src.SortDirection() != ax::mojom::SortDirection::kNone) {
       dst->AddIntAttribute(ax::mojom::IntAttribute::kSortDirection,
                            static_cast<int32_t>(src.SortDirection()));
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc
index 2dd6dc1..ff0bb7c 100644
--- a/content/renderer/accessibility/render_accessibility_impl.cc
+++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -464,11 +464,11 @@
 
     // Whenever there's a change within a table, invalidate the
     // whole table so that row and cell indexes are recomputed.
-    ax::mojom::Role role = obj.Role();
-    if (ui::IsTableLikeRole(role) || role == ax::mojom::Role::kRow ||
-        ui::IsCellOrTableHeaderRole(role)) {
+    const ax::mojom::Role role = obj.Role();
+    if (ui::IsTableLike(role) || role == ax::mojom::Role::kRow ||
+        ui::IsCellOrTableHeader(role)) {
       auto table = obj;
-      while (!table.IsDetached() && !ui::IsTableLikeRole(table.Role()))
+      while (!table.IsDetached() && !ui::IsTableLike(table.Role()))
         table = table.ParentObject();
       if (!table.IsDetached())
         serializer_.InvalidateSubtree(table);
diff --git a/content/renderer/media/webrtc/peer_connection_tracker.cc b/content/renderer/media/webrtc/peer_connection_tracker.cc
index 4af9ed3..56787a6c6 100644
--- a/content/renderer/media/webrtc/peer_connection_tracker.cc
+++ b/content/renderer/media/webrtc/peer_connection_tracker.cc
@@ -508,7 +508,7 @@
 }
 
 void PeerConnectionTracker::OnGetAllStats() {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
 
   const std::string empty_track_id;
   for (auto it = peer_connection_id_map_.begin();
@@ -531,7 +531,7 @@
 }
 
 void PeerConnectionTracker::OnSuspend() {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   for (auto it = peer_connection_id_map_.begin();
        it != peer_connection_id_map_.end(); ++it) {
     it->first->CloseClientPeerConnection();
@@ -541,7 +541,7 @@
 void PeerConnectionTracker::OnStartEventLogFile(
     int peer_connection_id,
     IPC::PlatformFileForTransit file) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   for (auto& it : peer_connection_id_map_) {
     if (it.second == peer_connection_id) {
 #if defined(OS_ANDROID)
@@ -560,7 +560,7 @@
 }
 
 void PeerConnectionTracker::OnStartEventLogOutput(int peer_connection_id) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   for (auto& it : peer_connection_id_map_) {
     if (it.second == peer_connection_id) {
       it.first->StartEventLog();
@@ -570,7 +570,7 @@
 }
 
 void PeerConnectionTracker::OnStopEventLog(int peer_connection_id) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   for (auto& it : peer_connection_id_map_) {
     if (it.second == peer_connection_id) {
       it.first->StopEventLog();
@@ -584,7 +584,7 @@
     const webrtc::PeerConnectionInterface::RTCConfiguration& config,
     const blink::WebMediaConstraints& constraints,
     const blink::WebLocalFrame* frame) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   DCHECK(pc_handler);
   DCHECK_EQ(GetLocalIDForHandler(pc_handler), -1);
   DVLOG(1) << "PeerConnectionTracker::RegisterPeerConnection()";
@@ -608,7 +608,7 @@
 
 void PeerConnectionTracker::UnregisterPeerConnection(
     RTCPeerConnectionHandler* pc_handler) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   DVLOG(1) << "PeerConnectionTracker::UnregisterPeerConnection()";
 
   auto it = peer_connection_id_map_.find(pc_handler);
@@ -627,7 +627,7 @@
 void PeerConnectionTracker::TrackCreateOffer(
     RTCPeerConnectionHandler* pc_handler,
     const blink::WebRTCOfferOptions& options) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -638,7 +638,7 @@
 void PeerConnectionTracker::TrackCreateOffer(
     RTCPeerConnectionHandler* pc_handler,
     const blink::WebMediaConstraints& constraints) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -650,7 +650,7 @@
 void PeerConnectionTracker::TrackCreateAnswer(
     RTCPeerConnectionHandler* pc_handler,
     const blink::WebRTCAnswerOptions& options) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -661,7 +661,7 @@
 void PeerConnectionTracker::TrackCreateAnswer(
     RTCPeerConnectionHandler* pc_handler,
     const blink::WebMediaConstraints& constraints) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -673,7 +673,7 @@
 void PeerConnectionTracker::TrackSetSessionDescription(
     RTCPeerConnectionHandler* pc_handler,
     const std::string& sdp, const std::string& type, Source source) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -687,7 +687,7 @@
 void PeerConnectionTracker::TrackSetConfiguration(
     RTCPeerConnectionHandler* pc_handler,
     const webrtc::PeerConnectionInterface::RTCConfiguration& config) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -701,7 +701,7 @@
     scoped_refptr<blink::WebRTCICECandidate> candidate,
     Source source,
     bool succeeded) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -753,7 +753,7 @@
     PeerConnectionTracker::TransceiverUpdatedReason reason,
     const blink::WebRTCRtpTransceiver& transceiver,
     size_t transceiver_index) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -794,7 +794,7 @@
     RTCPeerConnectionHandler* pc_handler,
     const webrtc::DataChannelInterface* data_channel,
     Source source) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -807,7 +807,7 @@
 }
 
 void PeerConnectionTracker::TrackStop(RTCPeerConnectionHandler* pc_handler) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -817,7 +817,7 @@
 void PeerConnectionTracker::TrackSignalingStateChange(
     RTCPeerConnectionHandler* pc_handler,
     webrtc::PeerConnectionInterface::SignalingState state) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -828,7 +828,7 @@
 void PeerConnectionTracker::TrackIceConnectionStateChange(
       RTCPeerConnectionHandler* pc_handler,
       WebRTCPeerConnectionHandlerClient::ICEConnectionState state) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -840,7 +840,7 @@
 void PeerConnectionTracker::TrackIceGatheringStateChange(
       RTCPeerConnectionHandler* pc_handler,
       WebRTCPeerConnectionHandlerClient::ICEGatheringState state) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -854,7 +854,7 @@
     Action action,
     const std::string& callback_type,
     const std::string& value) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -883,7 +883,7 @@
 
 void PeerConnectionTracker::TrackOnRenegotiationNeeded(
     RTCPeerConnectionHandler* pc_handler) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -892,7 +892,7 @@
 
 void PeerConnectionTracker::TrackGetUserMedia(
     const blink::WebUserMediaRequest& user_media_request) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
 
   GetPeerConnectionTrackerHost()->GetUserMedia(
       user_media_request.GetSecurityOrigin().ToString().Utf8(),
@@ -904,7 +904,7 @@
 void PeerConnectionTracker::TrackRtcEventLogWrite(
     RTCPeerConnectionHandler* pc_handler,
     const std::string& output) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   int id = GetLocalIDForHandler(pc_handler);
   if (id == -1)
     return;
@@ -912,7 +912,7 @@
 }
 
 int PeerConnectionTracker::GetNextLocalID() {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   if (next_local_id_< 0)
     next_local_id_ = 1;
   return next_local_id_++;
@@ -920,7 +920,7 @@
 
 int PeerConnectionTracker::GetLocalIDForHandler(
     RTCPeerConnectionHandler* handler) const {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   const auto found = peer_connection_id_map_.find(handler);
   if (found == peer_connection_id_map_.end())
     return -1;
@@ -932,7 +932,7 @@
     int local_id,
     const std::string& callback_type,
     const std::string& value) {
-  DCHECK(main_thread_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_);
   GetPeerConnectionTrackerHost().get()->UpdatePeerConnection(
       local_id, callback_type, value);
 }
diff --git a/content/renderer/media/webrtc/peer_connection_tracker.h b/content/renderer/media/webrtc/peer_connection_tracker.h
index 7f95e5df..767aaa6 100644
--- a/content/renderer/media/webrtc/peer_connection_tracker.h
+++ b/content/renderer/media/webrtc/peer_connection_tracker.h
@@ -260,7 +260,7 @@
 
   // This keeps track of the next available local ID.
   int next_local_id_;
-  base::ThreadChecker main_thread_;
+  THREAD_CHECKER(main_thread_);
   RenderThread* send_target_for_test_;
   mojom::PeerConnectionTrackerHostAssociatedPtr
       peer_connection_tracker_host_ptr_;
diff --git a/content/renderer/media/webrtc/rtc_data_channel_handler.cc b/content/renderer/media/webrtc/rtc_data_channel_handler.cc
index 7937e53..6146726 100644
--- a/content/renderer/media/webrtc/rtc_data_channel_handler.cc
+++ b/content/renderer/media/webrtc/rtc_data_channel_handler.cc
@@ -138,7 +138,7 @@
 
   // Detach from the ctor thread since we can be constructed on either the main
   // or signaling threads.
-  thread_checker_.DetachFromThread();
+  DETACH_FROM_THREAD(thread_checker_);
 
   IncrementCounter(CHANNEL_CREATED);
   if (channel->reliable())
@@ -157,7 +157,7 @@
 }
 
 RtcDataChannelHandler::~RtcDataChannelHandler() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(1) << "::dtor";
   // setClient might not have been called at all if the data channel was not
   // passed to Blink.  So, we call it here explicitly just to make sure the
@@ -168,7 +168,7 @@
 
 void RtcDataChannelHandler::SetClient(
     blink::WebRTCDataChannelHandlerClient* client) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(3) << "setClient " << client;
   webkit_client_ = client;
   if (!client && observer_.get()) {
@@ -178,42 +178,42 @@
 }
 
 blink::WebString RtcDataChannelHandler::Label() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return blink::WebString::FromUTF8(channel()->label());
 }
 
 bool RtcDataChannelHandler::IsReliable() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->reliable();
 }
 
 bool RtcDataChannelHandler::Ordered() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->ordered();
 }
 
 unsigned short RtcDataChannelHandler::MaxRetransmitTime() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->maxRetransmitTime();
 }
 
 unsigned short RtcDataChannelHandler::MaxRetransmits() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->maxRetransmits();
 }
 
 blink::WebString RtcDataChannelHandler::Protocol() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return blink::WebString::FromUTF8(channel()->protocol());
 }
 
 bool RtcDataChannelHandler::Negotiated() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->negotiated();
 }
 
 unsigned short RtcDataChannelHandler::Id() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->id();
 }
 
@@ -241,7 +241,7 @@
 
 blink::WebRTCDataChannelHandlerClient::ReadyState
 RtcDataChannelHandler::GetState() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (!observer_.get()) {
     return blink::WebRTCDataChannelHandlerClient::kReadyStateConnecting;
   } else {
@@ -250,12 +250,12 @@
 }
 
 unsigned long RtcDataChannelHandler::BufferedAmount() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return channel()->buffered_amount();
 }
 
 bool RtcDataChannelHandler::SendStringData(const blink::WebString& data) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   std::string utf8_buffer = data.Utf8();
   webrtc::DataBuffer data_buffer(utf8_buffer);
   RecordMessageSent(data_buffer.size());
@@ -263,7 +263,7 @@
 }
 
 bool RtcDataChannelHandler::SendRawData(const char* data, size_t length) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   rtc::CopyOnWriteBuffer buffer(data, length);
   webrtc::DataBuffer data_buffer(buffer, true);
   RecordMessageSent(data_buffer.size());
@@ -271,7 +271,7 @@
 }
 
 void RtcDataChannelHandler::Close() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   channel()->Close();
   // Note that even though Close() will run synchronously, the readyState has
   // not changed yet since the state changes that occured on the signaling
@@ -289,7 +289,7 @@
 
 void RtcDataChannelHandler::OnStateChange(
     webrtc::DataChannelInterface::DataState state) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(1) << "OnStateChange " << state;
 
   if (!webkit_client_) {
@@ -306,7 +306,7 @@
 
 void RtcDataChannelHandler::OnBufferedAmountDecrease(
     unsigned previous_amount) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(1) << "OnBufferedAmountDecrease " << previous_amount;
 
   if (!webkit_client_) {
@@ -320,7 +320,7 @@
 
 void RtcDataChannelHandler::OnMessage(
     std::unique_ptr<webrtc::DataBuffer> buffer) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (!webkit_client_) {
     // If this happens, the web application will not get notified of changes.
     NOTREACHED() << "WebRTCDataChannelHandlerClient not set.";
@@ -342,7 +342,7 @@
 }
 
 void RtcDataChannelHandler::RecordMessageSent(size_t num_bytes) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   // Currently, messages are capped at some fairly low limit (16 Kb?)
   // but we may allow unlimited-size messages at some point, so making
   // the histogram maximum quite large (100 Mb) to have some
diff --git a/content/renderer/media/webrtc/rtc_data_channel_handler.h b/content/renderer/media/webrtc/rtc_data_channel_handler.h
index be28abb..32ee717 100644
--- a/content/renderer/media/webrtc/rtc_data_channel_handler.h
+++ b/content/renderer/media/webrtc/rtc_data_channel_handler.h
@@ -102,7 +102,7 @@
   };
 
   scoped_refptr<Observer> observer_;
-  base::ThreadChecker thread_checker_;
+  THREAD_CHECKER(thread_checker_);
 
   blink::WebRTCDataChannelHandlerClient* webkit_client_;
 };
diff --git a/content/renderer/media/webrtc/rtc_dtmf_sender_handler.cc b/content/renderer/media/webrtc/rtc_dtmf_sender_handler.cc
index ba3349f2..c6ed0260 100644
--- a/content/renderer/media/webrtc/rtc_dtmf_sender_handler.cc
+++ b/content/renderer/media/webrtc/rtc_dtmf_sender_handler.cc
@@ -40,12 +40,12 @@
   }
 
   void OnToneChangeOnMainThread(const std::string& tone) {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     if (handler_)
       handler_->OnToneChange(tone);
   }
 
-  base::ThreadChecker thread_checker_;
+  THREAD_CHECKER(thread_checker_);
   const scoped_refptr<base::SingleThreadTaskRunner> main_thread_;
   base::WeakPtr<RtcDtmfSenderHandler> handler_;
 };
diff --git a/content/renderer/media/webrtc/rtc_peer_connection_handler.cc b/content/renderer/media/webrtc/rtc_peer_connection_handler.cc
index 15300ae..35002a78 100644
--- a/content/renderer/media/webrtc/rtc_peer_connection_handler.cc
+++ b/content/renderer/media/webrtc/rtc_peer_connection_handler.cc
@@ -21,6 +21,7 @@
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/threading/thread_checker.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
 #include "base/unguessable_token.h"
@@ -365,11 +366,11 @@
       : request_(request.get()), main_thread_(task_runner) {
     // Measure the overall time it takes to satisfy a getStats request.
     TRACE_EVENT_ASYNC_BEGIN0("webrtc", "getStats_Native", this);
-    signaling_thread_checker_.DetachFromThread();
+    DETACH_FROM_THREAD(signaling_thread_checker_);
   }
 
   void OnComplete(const StatsReports& reports) override {
-    DCHECK(signaling_thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
     TRACE_EVENT0("webrtc", "StatsResponse::OnComplete");
     // We can't use webkit objects directly since they use a single threaded
     // heap allocator.
@@ -432,8 +433,7 @@
     };
 
     Report(const StatsReport* report)
-        : thread_checker_(),
-          id_(report->id()->ToString()),
+        : id_(report->id()->ToString()),
           type_(report->type()),
           type_name_(report->TypeToString()),
           timestamp_(report->timestamp()),
@@ -442,7 +442,7 @@
     ~Report() override {
       // Since the values vector holds pointers to const objects that are bound
       // to the signaling thread, they must be released on the same thread.
-      DCHECK(thread_checker_.CalledOnValidThread());
+      DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     }
 
     // blink::WebRTCLegacyStats
@@ -462,7 +462,7 @@
     }
 
    private:
-    const base::ThreadChecker thread_checker_;
+    THREAD_CHECKER(thread_checker_);
     const std::string id_;
     const StatsReport::StatsType type_;
     const std::string type_name_;
@@ -502,7 +502,7 @@
 
   rtc::scoped_refptr<LocalRTCStatsRequest> request_;
   const scoped_refptr<base::SingleThreadTaskRunner> main_thread_;
-  base::ThreadChecker signaling_thread_checker_;
+  THREAD_CHECKER(signaling_thread_checker_);
 };
 
 void GetStatsOnSignalingThread(
diff --git a/content/renderer/media/webrtc/rtc_video_encoder.cc b/content/renderer/media/webrtc/rtc_video_encoder.cc
index db6c04c..6e0dfce 100644
--- a/content/renderer/media/webrtc/rtc_video_encoder.cc
+++ b/content/renderer/media/webrtc/rtc_video_encoder.cc
@@ -20,6 +20,7 @@
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
 #include "base/synchronization/waitable_event.h"
+#include "base/threading/thread_checker.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "content/public/common/content_features.h"
@@ -214,7 +215,7 @@
 
   // This is attached to |gpu_task_runner_|, not the thread class is constructed
   // on.
-  base::ThreadChecker thread_checker_;
+  THREAD_CHECKER(thread_checker_);
 
   // Factory for creating VEAs, shared memory buffers, etc.
   media::GpuVideoAcceleratorFactories* gpu_factories_;
@@ -296,7 +297,7 @@
       video_codec_type_(video_codec_type),
       video_content_type_(video_content_type),
       status_(WEBRTC_VIDEO_CODEC_UNINITIALIZED) {
-  thread_checker_.DetachFromThread();
+  DETACH_FROM_THREAD(thread_checker_);
 }
 
 void RTCVideoEncoder::Impl::CreateAndInitializeVEA(
@@ -306,7 +307,7 @@
     base::WaitableEvent* async_waiter,
     int32_t* async_retval) {
   DVLOG(3) << __func__;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   SetStatus(WEBRTC_VIDEO_CODEC_UNINITIALIZED);
   RegisterAsyncWaiter(async_waiter, async_retval);
@@ -342,7 +343,7 @@
                                     base::WaitableEvent* async_waiter,
                                     int32_t* async_retval) {
   DVLOG(3) << __func__;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(!input_next_frame_);
 
   RegisterAsyncWaiter(async_waiter, async_retval);
@@ -385,7 +386,7 @@
 void RTCVideoEncoder::Impl::UseOutputBitstreamBufferId(
     int32_t bitstream_buffer_id) {
   DVLOG(3) << __func__ << " bitstream_buffer_id=" << bitstream_buffer_id;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (video_encoder_) {
     video_encoder_->UseOutputBitstreamBuffer(media::BitstreamBuffer(
         bitstream_buffer_id,
@@ -400,7 +401,7 @@
     uint32_t framerate) {
   DVLOG(3) << __func__ << " bitrate=" << bitrate.ToString()
            << ", framerate=" << framerate;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   // This is a workaround to zero being temporarily provided, as part of the
   // initial setup, by WebRTC.
@@ -435,7 +436,7 @@
 
 void RTCVideoEncoder::Impl::Destroy(base::WaitableEvent* async_waiter) {
   DVLOG(3) << __func__;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   RecordTimestampMatchUMA();
   if (video_encoder_) {
     video_encoder_.reset();
@@ -466,7 +467,7 @@
   DVLOG(3) << __func__ << " input_count=" << input_count
            << ", input_coded_size=" << input_coded_size.ToString()
            << ", output_buffer_size=" << output_buffer_size;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   if (!video_encoder_)
     return;
@@ -515,7 +516,7 @@
            << ", payload_size=" << metadata.payload_size_bytes
            << ", key_frame=" << metadata.key_frame
            << ", timestamp ms=" << metadata.timestamp.InMilliseconds();
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   if (bitstream_buffer_id < 0 ||
       bitstream_buffer_id >= static_cast<int>(output_buffers_.size())) {
@@ -577,7 +578,7 @@
 
 void RTCVideoEncoder::Impl::NotifyError(
     media::VideoEncodeAccelerator::Error error) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   int32_t retval = WEBRTC_VIDEO_CODEC_ERROR;
   switch (error) {
     case media::VideoEncodeAccelerator::kInvalidArgumentError:
@@ -618,7 +619,7 @@
 
 void RTCVideoEncoder::Impl::EncodeOneFrame() {
   DVLOG(3) << "Impl::EncodeOneFrame()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(input_next_frame_);
   DCHECK(!input_buffers_free_.empty());
 
@@ -707,7 +708,7 @@
 
 void RTCVideoEncoder::Impl::EncodeFrameFinished(int index) {
   DVLOG(3) << "Impl::EncodeFrameFinished(): index=" << index;
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK_GE(index, 0);
   DCHECK_LT(index, static_cast<int>(input_buffers_.size()));
   input_buffers_free_.push_back(index);
@@ -717,7 +718,7 @@
 
 void RTCVideoEncoder::Impl::RegisterAsyncWaiter(base::WaitableEvent* waiter,
                                                 int32_t* retval) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(!async_waiter_);
   DCHECK(!async_retval_);
   async_waiter_ = waiter;
@@ -725,7 +726,7 @@
 }
 
 void RTCVideoEncoder::Impl::SignalAsyncWaiter(int32_t retval) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   *async_retval_ = retval;
   async_waiter_->Signal();
   async_retval_ = nullptr;
@@ -750,7 +751,7 @@
     base::WaitableEvent* async_waiter,
     int32_t* async_retval,
     webrtc::EncodedImageCallback* callback) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(3) << __func__;
   RegisterAsyncWaiter(async_waiter, async_retval);
   int32_t retval = GetStatus();
@@ -762,7 +763,7 @@
 void RTCVideoEncoder::Impl::ReturnEncodedImage(
     const webrtc::EncodedImage& image,
     int32_t bitstream_buffer_id) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DVLOG(3) << __func__ << " bitstream_buffer_id=" << bitstream_buffer_id;
 
   if (!encoded_image_callback_)
diff --git a/content/renderer/media/webrtc/webrtc_audio_device_impl.cc b/content/renderer/media/webrtc/webrtc_audio_device_impl.cc
index d6dba45..4c845850 100644
--- a/content/renderer/media/webrtc/webrtc_audio_device_impl.cc
+++ b/content/renderer/media/webrtc/webrtc_audio_device_impl.cc
@@ -31,16 +31,16 @@
   // This object can be constructed on either the signaling thread or the main
   // thread, so we need to detach these thread checkers here and have them
   // initialize automatically when the first methods are called.
-  signaling_thread_checker_.DetachFromThread();
-  main_thread_checker_.DetachFromThread();
+  DETACH_FROM_THREAD(signaling_thread_checker_);
+  DETACH_FROM_THREAD(main_thread_checker_);
 
-  worker_thread_checker_.DetachFromThread();
-  audio_renderer_thread_checker_.DetachFromThread();
+  DETACH_FROM_THREAD(worker_thread_checker_);
+  DETACH_FROM_THREAD(audio_renderer_thread_checker_);
 }
 
 WebRtcAudioDeviceImpl::~WebRtcAudioDeviceImpl() {
   DVLOG(1) << "WebRtcAudioDeviceImpl::~WebRtcAudioDeviceImpl()";
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   DCHECK(!initialized_) << "Terminate must have been called.";
 }
 
@@ -101,7 +101,7 @@
 }
 
 void WebRtcAudioDeviceImpl::RemoveAudioRenderer(WebRtcAudioRenderer* renderer) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   base::AutoLock auto_lock(lock_);
   DCHECK_EQ(renderer, renderer_.get());
   // Notify the playout sink of the change.
@@ -112,8 +112,8 @@
 }
 
 void WebRtcAudioDeviceImpl::AudioRendererThreadStopped() {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
-  audio_renderer_thread_checker_.DetachFromThread();
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
+  DETACH_FROM_THREAD(audio_renderer_thread_checker_);
   // Notify the playout sink of the change.
   // Not holding |lock_| because the caller must guarantee that the audio
   // renderer thread is dead, so no race is possible with |playout_sinks_|
@@ -123,7 +123,7 @@
 
 void WebRtcAudioDeviceImpl::SetOutputDeviceForAec(
     const std::string& output_device_id) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   output_device_id_for_aec_ = output_device_id;
   base::AutoLock lock(lock_);
   for (auto* capturer : capturers_) {
@@ -138,7 +138,7 @@
 int32_t WebRtcAudioDeviceImpl::RegisterAudioCallback(
     webrtc::AudioTransport* audio_callback) {
   DVLOG(1) << "WebRtcAudioDeviceImpl::RegisterAudioCallback()";
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   base::AutoLock lock(lock_);
   DCHECK_EQ(audio_transport_callback_ == nullptr, audio_callback != nullptr);
   audio_transport_callback_ = audio_callback;
@@ -147,7 +147,7 @@
 
 int32_t WebRtcAudioDeviceImpl::Init() {
   DVLOG(1) << "WebRtcAudioDeviceImpl::Init()";
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
 
   // We need to return a success to continue the initialization of WebRtc VoE
   // because failure on the capturer_ initialization should not prevent WebRTC
@@ -159,7 +159,7 @@
 
 int32_t WebRtcAudioDeviceImpl::Terminate() {
   DVLOG(1) << "WebRtcAudioDeviceImpl::Terminate()";
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
 
   // Calling Terminate() multiple times in a row is OK.
   if (!initialized_)
@@ -181,23 +181,23 @@
 }
 
 bool WebRtcAudioDeviceImpl::Initialized() const {
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   return initialized_;
 }
 
 int32_t WebRtcAudioDeviceImpl::PlayoutIsAvailable(bool* available) {
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   *available = initialized_;
   return 0;
 }
 
 bool WebRtcAudioDeviceImpl::PlayoutIsInitialized() const {
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   return initialized_;
 }
 
 int32_t WebRtcAudioDeviceImpl::RecordingIsAvailable(bool* available) {
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   base::AutoLock auto_lock(lock_);
   *available = !capturers_.empty();
   return 0;
@@ -205,14 +205,14 @@
 
 bool WebRtcAudioDeviceImpl::RecordingIsInitialized() const {
   DVLOG(1) << "WebRtcAudioDeviceImpl::RecordingIsInitialized()";
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   base::AutoLock auto_lock(lock_);
   return !capturers_.empty();
 }
 
 int32_t WebRtcAudioDeviceImpl::StartPlayout() {
   DVLOG(1) << "WebRtcAudioDeviceImpl::StartPlayout()";
-  DCHECK(worker_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   base::AutoLock auto_lock(lock_);
   if (!audio_transport_callback_) {
     LOG(ERROR) << "Audio transport is missing";
@@ -232,8 +232,10 @@
   // or the signaling thread (e.g. when we call it ourselves internally).
   // The order in this check is important so that we won't incorrectly
   // initialize worker_thread_checker_ on the signaling thread.
+#if DCHECK_IS_ON()
   DCHECK(signaling_thread_checker_.CalledOnValidThread() ||
          worker_thread_checker_.CalledOnValidThread());
+#endif
   base::AutoLock auto_lock(lock_);
   // webrtc::VoiceEngine assumes that it is OK to call Stop() multiple times.
   playing_ = false;
@@ -241,14 +243,14 @@
 }
 
 bool WebRtcAudioDeviceImpl::Playing() const {
-  DCHECK(worker_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   base::AutoLock auto_lock(lock_);
   return playing_;
 }
 
 int32_t WebRtcAudioDeviceImpl::StartRecording() {
   DVLOG(1) << "WebRtcAudioDeviceImpl::StartRecording()";
-  DCHECK(worker_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   DCHECK(initialized_);
   base::AutoLock auto_lock(lock_);
   if (!audio_transport_callback_) {
@@ -268,23 +270,24 @@
   // or the signaling thread (e.g. when we call it ourselves internally).
   // The order in this check is important so that we won't incorrectly
   // initialize worker_thread_checker_ on the signaling thread.
+#if DCHECK_IS_ON()
   DCHECK(signaling_thread_checker_.CalledOnValidThread() ||
          worker_thread_checker_.CalledOnValidThread());
-
+#endif
   base::AutoLock auto_lock(lock_);
   recording_ = false;
   return 0;
 }
 
 bool WebRtcAudioDeviceImpl::Recording() const {
-  DCHECK(worker_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   base::AutoLock auto_lock(lock_);
   return recording_;
 }
 
 int32_t WebRtcAudioDeviceImpl::SetMicrophoneVolume(uint32_t volume) {
   DVLOG(1) << "WebRtcAudioDeviceImpl::SetMicrophoneVolume(" << volume << ")";
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   DCHECK(initialized_);
 
   // Only one microphone is supported at the moment, which is represented by
@@ -299,7 +302,7 @@
 // TODO(henrika): sort out calling thread once we start using this API.
 int32_t WebRtcAudioDeviceImpl::MicrophoneVolume(uint32_t* volume) const {
   DVLOG(1) << "WebRtcAudioDeviceImpl::MicrophoneVolume()";
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   // We only support one microphone now, which is accessed via the default
   // capturer.
   DCHECK(initialized_);
@@ -312,26 +315,26 @@
 
 int32_t WebRtcAudioDeviceImpl::MaxMicrophoneVolume(uint32_t* max_volume) const {
   DCHECK(initialized_);
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   *max_volume = kMaxVolumeLevel;
   return 0;
 }
 
 int32_t WebRtcAudioDeviceImpl::MinMicrophoneVolume(uint32_t* min_volume) const {
-  DCHECK(signaling_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(signaling_thread_checker_);
   *min_volume = 0;
   return 0;
 }
 
 int32_t WebRtcAudioDeviceImpl::PlayoutDelay(uint16_t* delay_ms) const {
-  DCHECK(worker_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   base::AutoLock auto_lock(lock_);
   *delay_ms = static_cast<uint16_t>(output_delay_ms_);
   return 0;
 }
 
 bool WebRtcAudioDeviceImpl::SetAudioRenderer(WebRtcAudioRenderer* renderer) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   DCHECK(renderer);
 
   // Here we acquire |lock_| in order to protect the internal state.
@@ -357,7 +360,7 @@
   // The new audio renderer will create a new audio renderer thread. Detach
   // |audio_renderer_thread_checker_| from the old thread, if any, and let
   // it attach later to the new thread.
-  audio_renderer_thread_checker_.DetachFromThread();
+  DETACH_FROM_THREAD(audio_renderer_thread_checker_);
 
   // We acquire |lock_| again and assert our precondition, since we are
   // accessing the internal state again.
@@ -369,7 +372,7 @@
 
 void WebRtcAudioDeviceImpl::AddAudioCapturer(
     ProcessedLocalAudioSource* capturer) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   DVLOG(1) << "WebRtcAudioDeviceImpl::AddAudioCapturer()";
   DCHECK(capturer);
   DCHECK(!capturer->device().id.empty());
@@ -382,7 +385,7 @@
 
 void WebRtcAudioDeviceImpl::RemoveAudioCapturer(
     ProcessedLocalAudioSource* capturer) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   DVLOG(1) << "WebRtcAudioDeviceImpl::RemoveAudioCapturer()";
   DCHECK(capturer);
   base::AutoLock auto_lock(lock_);
@@ -391,7 +394,7 @@
 
 void WebRtcAudioDeviceImpl::AddPlayoutSink(
     WebRtcPlayoutDataSource::Sink* sink) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   DCHECK(sink);
   base::AutoLock auto_lock(lock_);
   DCHECK(!base::ContainsValue(playout_sinks_, sink));
@@ -400,14 +403,14 @@
 
 void WebRtcAudioDeviceImpl::RemovePlayoutSink(
     WebRtcPlayoutDataSource::Sink* sink) {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   DCHECK(sink);
   base::AutoLock auto_lock(lock_);
   playout_sinks_.remove(sink);
 }
 
 int WebRtcAudioDeviceImpl::GetAuthorizedDeviceSessionIdForAudioRenderer() {
-  DCHECK(main_thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
   base::AutoLock lock(lock_);
   // If there is no capturer or there are more than one open capture devices,
   // return false.
diff --git a/content/renderer/media/webrtc/webrtc_audio_device_impl.h b/content/renderer/media/webrtc/webrtc_audio_device_impl.h
index 4f3f1ac..2bdb552 100644
--- a/content/renderer/media/webrtc/webrtc_audio_device_impl.h
+++ b/content/renderer/media/webrtc/webrtc_audio_device_impl.h
@@ -214,11 +214,11 @@
   class RenderBuffer;
 
   // Used to check methods that run on the main render thread.
-  base::ThreadChecker main_thread_checker_;
+  THREAD_CHECKER(main_thread_checker_);
   // Used to check methods that are called on libjingle's signaling thread.
-  base::ThreadChecker signaling_thread_checker_;
-  base::ThreadChecker worker_thread_checker_;
-  base::ThreadChecker audio_renderer_thread_checker_;
+  THREAD_CHECKER(signaling_thread_checker_);
+  THREAD_CHECKER(worker_thread_checker_);
+  THREAD_CHECKER(audio_renderer_thread_checker_);
 
   const base::UnguessableToken audio_processing_id_;
 
diff --git a/content/renderer/media/webrtc/webrtc_audio_renderer.cc b/content/renderer/media/webrtc/webrtc_audio_renderer.cc
index 7b3d058a..bd39288 100644
--- a/content/renderer/media/webrtc/webrtc_audio_renderer.cc
+++ b/content/renderer/media/webrtc/webrtc_audio_renderer.cc
@@ -14,6 +14,7 @@
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
+#include "base/threading/thread_checker.h"
 #include "build/build_config.h"
 #include "content/renderer/media/audio/audio_device_factory.h"
 #include "content/renderer/media/stream/media_stream_audio_track.h"
@@ -73,14 +74,14 @@
 
  protected:
   ~SharedAudioRenderer() override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     DVLOG(1) << __func__;
     Stop();
     std::move(on_play_state_removed_).Run(&playing_state_);
   }
 
   void Start() override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     if (started_)
       return;
     started_ = true;
@@ -88,7 +89,7 @@
   }
 
   void Play() override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     if (!started_ || playing_state_.playing())
       return;
     playing_state_.set_playing(true);
@@ -96,7 +97,7 @@
   }
 
   void Pause() override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     if (!started_ || !playing_state_.playing())
       return;
     playing_state_.set_playing(false);
@@ -104,7 +105,7 @@
   }
 
   void Stop() override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     if (!started_)
       return;
     Pause();
@@ -113,36 +114,36 @@
   }
 
   void SetVolume(float volume) override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     DCHECK(volume >= 0.0f && volume <= 1.0f);
     playing_state_.set_volume(volume);
     on_play_state_changed_.Run(media_stream_, &playing_state_);
   }
 
   media::OutputDeviceInfo GetOutputDeviceInfo() override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     return delegate_->GetOutputDeviceInfo();
   }
 
   void SwitchOutputDevice(
       const std::string& device_id,
       const media::OutputDeviceStatusCB& callback) override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     return delegate_->SwitchOutputDevice(device_id, callback);
   }
 
   base::TimeDelta GetCurrentRenderTime() const override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     return delegate_->GetCurrentRenderTime();
   }
 
   bool IsLocalRenderer() const override {
-    DCHECK(thread_checker_.CalledOnValidThread());
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
     return delegate_->IsLocalRenderer();
   }
 
  private:
-  base::ThreadChecker thread_checker_;
+  THREAD_CHECKER(thread_checker_);
   const scoped_refptr<MediaStreamAudioRenderer> delegate_;
   const blink::WebMediaStream media_stream_;
   bool started_;
@@ -175,13 +176,13 @@
 }
 
 WebRtcAudioRenderer::~WebRtcAudioRenderer() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK_EQ(state_, UNINITIALIZED);
 }
 
 bool WebRtcAudioRenderer::Initialize(WebRtcAudioRendererSource* source) {
   DVLOG(1) << "WebRtcAudioRenderer::Initialize()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(source);
   DCHECK(!sink_.get());
   DCHECK_GE(session_id_, 0);
@@ -232,7 +233,7 @@
 }
 
 bool WebRtcAudioRenderer::IsStarted() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return start_ref_count_ != 0;
 }
 
@@ -242,13 +243,13 @@
 
 void WebRtcAudioRenderer::Start() {
   DVLOG(1) << "WebRtcAudioRenderer::Start()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   ++start_ref_count_;
 }
 
 void WebRtcAudioRenderer::Play() {
   DVLOG(1) << "WebRtcAudioRenderer::Play()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   if (playing_state_.playing())
     return;
@@ -260,7 +261,7 @@
 
 void WebRtcAudioRenderer::EnterPlayState() {
   DVLOG(1) << "WebRtcAudioRenderer::EnterPlayState()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK_GT(start_ref_count_, 0) << "Did you forget to call Start()?";
   base::AutoLock auto_lock(lock_);
   if (state_ == UNINITIALIZED)
@@ -281,7 +282,7 @@
 
 void WebRtcAudioRenderer::Pause() {
   DVLOG(1) << "WebRtcAudioRenderer::Pause()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (!playing_state_.playing())
     return;
 
@@ -292,7 +293,7 @@
 
 void WebRtcAudioRenderer::EnterPauseState() {
   DVLOG(1) << "WebRtcAudioRenderer::EnterPauseState()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK_GT(start_ref_count_, 0) << "Did you forget to call Start()?";
   base::AutoLock auto_lock(lock_);
   if (state_ == UNINITIALIZED)
@@ -306,7 +307,7 @@
 
 void WebRtcAudioRenderer::Stop() {
   DVLOG(1) << "WebRtcAudioRenderer::Stop()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   {
     base::AutoLock auto_lock(lock_);
     if (state_ == UNINITIALIZED)
@@ -342,7 +343,7 @@
 }
 
 void WebRtcAudioRenderer::SetVolume(float volume) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(volume >= 0.0f && volume <= 1.0f);
 
   playing_state_.set_volume(volume);
@@ -350,12 +351,12 @@
 }
 
 media::OutputDeviceInfo WebRtcAudioRenderer::GetOutputDeviceInfo() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   return sink_ ? sink_->GetOutputDeviceInfo() : media::OutputDeviceInfo();
 }
 
 base::TimeDelta WebRtcAudioRenderer::GetCurrentRenderTime() const {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   base::AutoLock auto_lock(lock_);
   return current_time_;
 }
@@ -368,7 +369,7 @@
     const std::string& device_id,
     const media::OutputDeviceStatusCB& callback) {
   DVLOG(1) << "WebRtcAudioRenderer::SwitchOutputDevice()";
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (!source_) {
     callback.Run(media::OUTPUT_DEVICE_STATUS_ERROR_INTERNAL);
     return;
@@ -504,7 +505,7 @@
 
 void WebRtcAudioRenderer::UpdateSourceVolume(
     webrtc::AudioSourceInterface* source) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   // Note: If there are no playing audio renderers, then the volume will be
   // set to 0.0.
@@ -544,7 +545,7 @@
 bool WebRtcAudioRenderer::AddPlayingState(
     webrtc::AudioSourceInterface* source,
     PlayingState* state) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(state->playing());
   // Look up or add the |source| to the map.
   PlayingStates& array = source_playing_states_[source];
@@ -559,7 +560,7 @@
 bool WebRtcAudioRenderer::RemovePlayingState(
     webrtc::AudioSourceInterface* source,
     PlayingState* state) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(!state->playing());
   auto found = source_playing_states_.find(source);
   if (found == source_playing_states_.end())
@@ -581,7 +582,7 @@
 void WebRtcAudioRenderer::OnPlayStateChanged(
     const blink::WebMediaStream& media_stream,
     PlayingState* state) {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   blink::WebVector<blink::WebMediaStreamTrack> web_tracks =
       media_stream.AudioTracks();
 
@@ -614,7 +615,7 @@
   // crbug.com/697256.
   // TODO(maxmorin): Clean up cleanup code in this and related classes so that
   // this hack isn't necessary.
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   for (auto it = source_playing_states_.begin();
        it != source_playing_states_.end();) {
     PlayingStates& states = it->second;
@@ -628,7 +629,7 @@
 }
 
 void WebRtcAudioRenderer::PrepareSink() {
-  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   media::AudioParameters new_sink_params;
   {
     base::AutoLock lock(lock_);
diff --git a/content/renderer/media/webrtc/webrtc_audio_renderer.h b/content/renderer/media/webrtc/webrtc_audio_renderer.h
index 7983fd7..e220785 100644
--- a/content/renderer/media/webrtc/webrtc_audio_renderer.h
+++ b/content/renderer/media/webrtc/webrtc_audio_renderer.h
@@ -156,7 +156,7 @@
       SourcePlayingStates;
 
   // Used to DCHECK that we are called on the correct thread.
-  base::ThreadChecker thread_checker_;
+  THREAD_CHECKER(thread_checker_);
 
   // Flag to keep track the state of the renderer.
   State state_;
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
index c77ffd56..8074c77 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -971,10 +971,11 @@
       TRACE_ID_WITH_SCOPE(kServiceWorkerContextClientScope,
                           TRACE_ID_LOCAL(fetch_event_id)),
       TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
-  DCHECK(base::ContainsKey(context_->fetch_response_callbacks, fetch_event_id));
+  // Changed DCHECK to CHECK temporary: https://crbug.com/889567.
+  CHECK(base::ContainsKey(context_->fetch_response_callbacks, fetch_event_id));
   const blink::mojom::ServiceWorkerFetchResponseCallbackPtr& response_callback =
       context_->fetch_response_callbacks[fetch_event_id];
-  DCHECK(response_callback.is_bound());
+  CHECK(response_callback.is_bound());
 
   auto timing = blink::mojom::ServiceWorkerFetchEventTiming::New();
   timing->dispatch_event_time = event_dispatch_time;
@@ -994,7 +995,8 @@
       TRACE_ID_WITH_SCOPE(kServiceWorkerContextClientScope,
                           TRACE_ID_LOCAL(fetch_event_id)),
       TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
-  DCHECK(base::ContainsKey(context_->fetch_response_callbacks, fetch_event_id));
+  // Changed DCHECK to CHECK temporary: https://crbug.com/889567.
+  CHECK(base::ContainsKey(context_->fetch_response_callbacks, fetch_event_id));
   blink::mojom::FetchAPIResponsePtr response(
       GetFetchAPIResponseFromWebResponse(web_response));
   const blink::mojom::ServiceWorkerFetchResponseCallbackPtr& response_callback =
@@ -1020,7 +1022,8 @@
       TRACE_ID_WITH_SCOPE(kServiceWorkerContextClientScope,
                           TRACE_ID_LOCAL(fetch_event_id)),
       TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
-  DCHECK(base::ContainsKey(context_->fetch_response_callbacks, fetch_event_id));
+  // Changed DCHECK to CHECK temporary: https://crbug.com/889567.
+  CHECK(base::ContainsKey(context_->fetch_response_callbacks, fetch_event_id));
   blink::mojom::FetchAPIResponsePtr response(
       GetFetchAPIResponseFromWebResponse(web_response));
   const blink::mojom::ServiceWorkerFetchResponseCallbackPtr& response_callback =
@@ -1057,10 +1060,17 @@
                                              TRACE_ID_LOCAL(event_id)),
                          TRACE_EVENT_FLAG_FLOW_IN, "status",
                          ServiceWorkerUtils::MojoEnumToString(status));
-  if (RunEventCallback(&context_->fetch_event_callbacks,
-                       context_->timeout_timer.get(), event_id, status,
-                       event_dispatch_time)) {
+  if (!RunEventCallback(&context_->fetch_event_callbacks,
+                        context_->timeout_timer.get(), event_id, status,
+                        event_dispatch_time)) {
+    // The event may have been aborted. Its response callback also needs to be
+    // deleted.
     context_->fetch_response_callbacks.erase(event_id);
+  } else {
+    // |fetch_response_callback| should be used before settling a promise for
+    // waitUntil().
+    // Changed DCHECK to CHECK temporary: https://crbug.com/889567.
+    CHECK(!base::ContainsKey(context_->fetch_response_callbacks, event_id));
   }
 }
 
diff --git a/content/shell/test_runner/layout_test_runtime_flags.cc b/content/shell/test_runner/layout_test_runtime_flags.cc
index 5791ddb..fa24a8a 100644
--- a/content/shell/test_runner/layout_test_runtime_flags.cc
+++ b/content/shell/test_runner/layout_test_runtime_flags.cc
@@ -14,12 +14,8 @@
   set_generate_pixel_results(true);
 
   set_dump_as_text(false);
-  set_dump_child_frames_as_text(false);
-
   set_dump_as_markup(false);
-  set_dump_child_frames_as_markup(false);
-
-  set_dump_child_frame_scroll_positions(false);
+  set_dump_child_frames(false);
 
   set_is_printing(false);
   set_printing_frame("");
diff --git a/content/shell/test_runner/layout_test_runtime_flags.h b/content/shell/test_runner/layout_test_runtime_flags.h
index 7f06b90..c52c48d 100644
--- a/content/shell/test_runner/layout_test_runtime_flags.h
+++ b/content/shell/test_runner/layout_test_runtime_flags.h
@@ -55,22 +55,13 @@
   // text representation of the renderer.
   DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_as_text)
 
-  // If true and if dump_as_text_ is true, the test_shell will recursively
-  // dump all frames as plain text.
-  DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frames_as_text)
-
   // If true, the test_shell will produce a dump of the DOM rather than a text
   // representation of the renderer.
   DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_as_markup)
 
-  // If true and if dump_as_markup_ is true, the test_shell will recursively
-  // produce a dump of the DOM rather than a text representation of the
-  // renderer.
-  DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frames_as_markup)
-
-  // If true, the test_shell will print out the child frame scroll offsets as
-  // well.
-  DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frame_scroll_positions)
+  // If true, the test_shell will recursively dump all frames as text, markup
+  // or layout if dump_as_text, dump_as_markup or none of them is effective.
+  DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(dump_child_frames)
 
   // If true, layout is to target printed pages.
   DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG(is_printing)
@@ -198,16 +189,6 @@
 #undef DEFINE_BOOL_LAYOUT_TEST_RUNTIME_FLAG
 #undef DEFINE_STRING_LAYOUT_TEST_RUNTIME_FLAG
 
-  // Reports whether recursing over child frames is necessary.
-  bool dump_child_frames() const {
-    if (dump_as_text())
-      return dump_child_frames_as_text();
-    else if (dump_as_markup())
-      return dump_child_frames_as_markup();
-    else
-      return dump_child_frame_scroll_positions();
-  }
-
  private:
   TrackedDictionary dict_;
 
diff --git a/content/shell/test_runner/test_runner.cc b/content/shell/test_runner/test_runner.cc
index a89dddf..653d3b1b 100644
--- a/content/shell/test_runner/test_runner.cc
+++ b/content/shell/test_runner/test_runner.cc
@@ -174,10 +174,8 @@
   void DumpAsMarkup();
   void DumpAsText();
   void DumpAsTextWithPixelResults();
+  void DumpChildFrames();
   void DumpBackForwardList();
-  void DumpChildFrameScrollPositions();
-  void DumpChildFramesAsMarkup();
-  void DumpChildFramesAsText();
   void DumpCreateView();
   void DumpDragImage();
   void DumpEditingCallbacks();
@@ -433,12 +431,7 @@
                  &TestRunnerBindings::DumpAsTextWithPixelResults)
       .SetMethod("dumpBackForwardList",
                  &TestRunnerBindings::DumpBackForwardList)
-      .SetMethod("dumpChildFrameScrollPositions",
-                 &TestRunnerBindings::DumpChildFrameScrollPositions)
-      .SetMethod("dumpChildFramesAsMarkup",
-                 &TestRunnerBindings::DumpChildFramesAsMarkup)
-      .SetMethod("dumpChildFramesAsText",
-                 &TestRunnerBindings::DumpChildFramesAsText)
+      .SetMethod("dumpChildFrames", &TestRunnerBindings::DumpChildFrames)
       .SetMethod("dumpCreateView", &TestRunnerBindings::DumpCreateView)
       .SetMethod("dumpDatabaseCallbacks", &TestRunnerBindings::NotImplemented)
       .SetMethod("dumpDragImage", &TestRunnerBindings::DumpDragImage)
@@ -1041,19 +1034,9 @@
     runner_->DumpAsTextWithPixelResults();
 }
 
-void TestRunnerBindings::DumpChildFrameScrollPositions() {
+void TestRunnerBindings::DumpChildFrames() {
   if (runner_)
-    runner_->DumpChildFrameScrollPositions();
-}
-
-void TestRunnerBindings::DumpChildFramesAsText() {
-  if (runner_)
-    runner_->DumpChildFramesAsText();
-}
-
-void TestRunnerBindings::DumpChildFramesAsMarkup() {
-  if (runner_)
-    runner_->DumpChildFramesAsMarkup();
+    runner_->DumpChildFrames();
 }
 
 void TestRunnerBindings::DumpIconChanges() {
@@ -2311,18 +2294,8 @@
   OnLayoutTestRuntimeFlagsChanged();
 }
 
-void TestRunner::DumpChildFrameScrollPositions() {
-  layout_test_runtime_flags_.set_dump_child_frame_scroll_positions(true);
-  OnLayoutTestRuntimeFlagsChanged();
-}
-
-void TestRunner::DumpChildFramesAsMarkup() {
-  layout_test_runtime_flags_.set_dump_child_frames_as_markup(true);
-  OnLayoutTestRuntimeFlagsChanged();
-}
-
-void TestRunner::DumpChildFramesAsText() {
-  layout_test_runtime_flags_.set_dump_child_frames_as_text(true);
+void TestRunner::DumpChildFrames() {
+  layout_test_runtime_flags_.set_dump_child_frames(true);
   OnLayoutTestRuntimeFlagsChanged();
 }
 
diff --git a/content/shell/test_runner/test_runner.h b/content/shell/test_runner/test_runner.h
index 257e1e4..4a1ac4e 100644
--- a/content/shell/test_runner/test_runner.h
+++ b/content/shell/test_runner/test_runner.h
@@ -301,7 +301,7 @@
   ///////////////////////////////////////////////////////////////////////////
   // Methods that modify the state of TestRunner
 
-  // This function sets a flag that tells the test_shell to print a line of
+  // This function sets a flag that tells the test runner to print a line of
   // descriptive text for each editing command. It takes no arguments, and
   // ignores any that may be present.
   void DumpEditingCallbacks();
@@ -311,7 +311,7 @@
   // The pixel results will not be generated for this test.
   void DumpAsText();
 
-  // This function sets a flag that tells the test_shell to dump pages as
+  // This function sets a flag that tells the test runner to dump pages as
   // the DOM contents, rather than as a text representation of the renderer's
   // state. The pixel results will not be generated for this test.
   void DumpAsMarkup();
@@ -321,57 +321,48 @@
   // It will also generate a pixel dump for the test.
   void DumpAsTextWithPixelResults();
 
-  // This function sets a flag that tells the test_shell to print out the
-  // scroll offsets of the child frames. It ignores all.
-  void DumpChildFrameScrollPositions();
+  // This function sets a flag that tells the test runner to recursively dump
+  // all frames as text, markup or layout if DumpAsText, DumpAsMarkup or none
+  // of them is effective.
+  void DumpChildFrames();
 
-  // This function sets a flag that tells the test_shell to recursively
-  // dump all frames as plain text if the DumpAsText flag is set.
-  // It takes no arguments, and ignores any that may be present.
-  void DumpChildFramesAsText();
-
-  // This function sets a flag that tells the test_shell to recursively
-  // dump all frames as the DOM contents if the DumpAsMarkup flag is set.
-  // It takes no arguments, and ignores any that may be present.
-  void DumpChildFramesAsMarkup();
-
-  // This function sets a flag that tells the test_shell to print out the
+  // This function sets a flag that tells the test runner to print out the
   // information about icon changes notifications from WebKit.
   void DumpIconChanges();
 
   // Deals with Web Audio WAV file data.
   void SetAudioData(const gin::ArrayBufferView& view);
 
-  // This function sets a flag that tells the test_shell to print a line of
+  // This function sets a flag that tells the test runner to print a line of
   // descriptive text for each frame load callback. It takes no arguments, and
   // ignores any that may be present.
   void DumpFrameLoadCallbacks();
 
-  // This function sets a flag that tells the test_shell to print a line of
+  // This function sets a flag that tells the test runner to print a line of
   // descriptive text for each PingLoader dispatch. It takes no arguments, and
   // ignores any that may be present.
   void DumpPingLoaderCallbacks();
 
-  // This function sets a flag that tells the test_shell to print a line of
+  // This function sets a flag that tells the test runner to print a line of
   // user gesture status text for some frame load callbacks. It takes no
   // arguments, and ignores any that may be present.
   void DumpUserGestureInFrameLoadCallbacks();
 
   void DumpTitleChanges();
 
-  // This function sets a flag that tells the test_shell to dump all calls to
+  // This function sets a flag that tells the test runner to dump all calls to
   // WebViewClient::createView().
   // It takes no arguments, and ignores any that may be present.
   void DumpCreateView();
 
   void SetCanOpenWindows();
 
-  // This function sets a flag that tells the test_shell to dump a descriptive
+  // This function sets a flag that tells the test runner to dump a descriptive
   // line for each resource load callback. It takes no arguments, and ignores
   // any that may be present.
   void DumpResourceLoadCallbacks();
 
-  // This function sets a flag that tells the test_shell to dump the MIME type
+  // This function sets a flag that tells the test runner to dump the MIME type
   // for each resource that was loaded. It takes no arguments, and ignores any
   // that may be present.
   void DumpResourceResponseMIMETypes();
@@ -392,11 +383,11 @@
   void SetDisallowedSubresourcePathSuffixes(
       const std::vector<std::string>& suffixes);
 
-  // This function sets a flag that tells the test_shell to dump all
+  // This function sets a flag that tells the test runner to dump all
   // the lines of descriptive text about spellcheck execution.
   void DumpSpellCheckCallbacks();
 
-  // This function sets a flag that tells the test_shell to print out a text
+  // This function sets a flag that tells the test runner to print out a text
   // representation of the back/forward list. It ignores all arguments.
   void DumpBackForwardList();
 
@@ -543,10 +534,10 @@
   // Flags controlling what content gets dumped as a layout text result.
   LayoutTestRuntimeFlags layout_test_runtime_flags_;
 
-  // If true, the test_shell will output a base64 encoded WAVE file.
+  // If true, the test runner will output a base64 encoded WAVE file.
   bool dump_as_audio_;
 
-  // If true, the test_shell will produce a dump of the back forward list as
+  // If true, the test runner will produce a dump of the back forward list as
   // well.
   bool dump_back_forward_list_;
 
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
index 62d81e1..c18b70e 100644
--- a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
@@ -643,9 +643,6 @@
     self.Flaky('conformance/textures/image_bitmap_from_video/' +
         'tex-2d-rgb-rgb-unsigned_byte.html',
         ['android', ('qualcomm', 'Adreno (TM) 418')], bug=716496)
-    self.Flaky('conformance/textures/misc/' +
-        'tex-video-using-tex-unit-non-zero.html',
-        ['android', ('qualcomm', 'Adreno (TM) 418')], bug=830901)
     self.Fail('conformance/uniforms/uniform-samplers-test.html',
         ['android', ('qualcomm', 'Adreno (TM) 418'), 'no_passthrough'],
         bug=610951)
@@ -694,12 +691,6 @@
         'copy-tex-image-and-sub-image-2d.html',
         ['android', ('qualcomm', 'Adreno (TM) 420'), 'no_passthrough'],
         bug=499555)
-    self.Flaky('conformance/textures/misc/' +
-        'tex-video-using-tex-unit-non-zero.html',
-        ['android', ('qualcomm', 'Adreno (TM) 420')], bug=830901)
-    self.Flaky('conformance/textures/misc/' +
-        'tex-video-using-tex-unit-non-zero.html',
-        ['android', ('qualcomm', 'Adreno (TM) 430')], bug=830901)
     self.Fail('conformance/uniforms/uniform-samplers-test.html',
         ['android', ('qualcomm', 'Adreno (TM) 430'), 'no_passthrough'],
         bug=663071)
@@ -718,9 +709,6 @@
         ['android', 'nvidia'], bug=478572)
     self.Fail('conformance/glsl/bugs/multiplication-assignment.html',
         ['android', 'nvidia'], bug=606096)
-    self.Flaky('conformance/textures/misc/' +
-        'tex-video-using-tex-unit-non-zero.html',
-        ['android', 'nvidia'], bug=830901)
     self.Flaky('conformance/extensions/oes-texture-half-float-with-video.html',
         ['android', 'nvidia'], bug=891456)
     self.Flaky('conformance/extensions/oes-texture-float-with-video.html',
diff --git a/courgette/BUILD.gn b/courgette/BUILD.gn
index 45a367def..95d8aa3 100644
--- a/courgette/BUILD.gn
+++ b/courgette/BUILD.gn
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//build/config/compiler/compiler.gni")
 import("//testing/test.gni")
 
 static_library("courgette_lib") {
@@ -176,17 +177,31 @@
         ]
       }
     } else {
-      # Make sure that we have a copy of courgette64.exe in the root out
+      # Make sure that we have a copy of courgette64.exe(.pdb) in the root out
       # directory.
-      copy("copy_courgette_binaries") {
-        if (is_clang) {
-          courgette64_toolchain = "//build/toolchain/win:win_clang_x64"
-        } else {
-          courgette64_toolchain = "//build/toolchain/win:x64"
-        }
-        courgette64_label = ":courgette($courgette64_toolchain)"
+      if (is_clang) {
+        courgette64_toolchain = "//build/toolchain/win:win_clang_x64"
+      } else {
+        courgette64_toolchain = "//build/toolchain/win:x64"
+      }
+      courgette64_label = ":courgette($courgette64_toolchain)"
 
-        courgette64_out_dir = get_label_info(courgette64_label, "root_out_dir")
+      courgette64_out_dir = get_label_info(courgette64_label, "root_out_dir")
+
+      copy("copy_courgette_pdb") {
+        visibility = [ ":copy_courgette_binaries" ]
+        sources = [
+          "$courgette64_out_dir/courgette64.exe.pdb",
+        ]
+        outputs = [
+          "$root_out_dir/{{source_file_part}}",
+        ]
+        deps = [
+          courgette64_label,
+        ]
+      }
+
+      copy("copy_courgette_binaries") {
         sources = [
           "$courgette64_out_dir/courgette64.exe",
         ]
@@ -196,6 +211,9 @@
         deps = [
           courgette64_label,
         ]
+        if (symbol_level > 0) {
+          deps += [ ":copy_courgette_pdb" ]
+        }
       }
     }
   }
diff --git a/extensions/browser/service_worker_task_queue.cc b/extensions/browser/service_worker_task_queue.cc
index 7508092b..66253bc 100644
--- a/extensions/browser/service_worker_task_queue.cc
+++ b/extensions/browser/service_worker_task_queue.cc
@@ -92,7 +92,7 @@
 }
 
 // static
-void ServiceWorkerTaskQueue::DidStartWorkerForPatternOnIO(
+void ServiceWorkerTaskQueue::DidStartWorkerForScopeOnIO(
     LazyContextTaskQueue::PendingTask task,
     const ExtensionId& extension_id,
     base::WeakPtr<ServiceWorkerTaskQueue> task_queue,
@@ -102,7 +102,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
   base::PostTaskWithTraits(
       FROM_HERE, {content::BrowserThread::UI},
-      base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForPattern,
+      base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForScope,
                      task_queue, std::move(task), extension_id, version_id,
                      process_id, thread_id));
 }
@@ -110,19 +110,19 @@
 // static
 void ServiceWorkerTaskQueue::StartServiceWorkerOnIOToRunTask(
     base::WeakPtr<ServiceWorkerTaskQueue> task_queue_weak,
-    const GURL& pattern,
+    const GURL& scope,
     const ExtensionId& extension_id,
     content::ServiceWorkerContext* service_worker_context,
     LazyContextTaskQueue::PendingTask task) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-  service_worker_context->StartWorkerForPattern(
-      pattern,
-      base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForPatternOnIO,
+  service_worker_context->StartWorkerForScope(
+      scope,
+      base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForScopeOnIO,
                      std::move(task), extension_id, std::move(task_queue_weak)),
       base::BindOnce(&DidStartWorkerFail));
 }
 
-void ServiceWorkerTaskQueue::DidStartWorkerForPattern(
+void ServiceWorkerTaskQueue::DidStartWorkerForScope(
     LazyContextTaskQueue::PendingTask task,
     const ExtensionId& extension_id,
     int64_t version_id,
diff --git a/extensions/browser/service_worker_task_queue.h b/extensions/browser/service_worker_task_queue.h
index ce6edd0..165f4b8 100644
--- a/extensions/browser/service_worker_task_queue.h
+++ b/extensions/browser/service_worker_task_queue.h
@@ -57,7 +57,7 @@
  private:
   struct TaskInfo;
 
-  static void DidStartWorkerForPatternOnIO(
+  static void DidStartWorkerForScopeOnIO(
       LazyContextTaskQueue::PendingTask task,
       const ExtensionId& extension_id,
       base::WeakPtr<ServiceWorkerTaskQueue> task_queue,
@@ -66,7 +66,7 @@
       int thread_id);
   static void StartServiceWorkerOnIOToRunTask(
       base::WeakPtr<ServiceWorkerTaskQueue> task_queue_weak,
-      const GURL& pattern,
+      const GURL& scope,
       const ExtensionId& extension_id,
       content::ServiceWorkerContext* service_worker_context,
       LazyContextTaskQueue::PendingTask task);
@@ -78,11 +78,11 @@
   void DidUnregisterServiceWorker(const ExtensionId& extension_id,
                                   bool success);
 
-  void DidStartWorkerForPattern(LazyContextTaskQueue::PendingTask task,
-                                const ExtensionId& extension_id,
-                                int64_t version_id,
-                                int process_id,
-                                int thread_id);
+  void DidStartWorkerForScope(LazyContextTaskQueue::PendingTask task,
+                              const ExtensionId& extension_id,
+                              int64_t version_id,
+                              int process_id,
+                              int thread_id);
 
   // Set of extension ids that hasn't completed Service Worker registration.
   std::set<ExtensionId> pending_registrations_;
diff --git a/gin/v8_foreground_task_runner.cc b/gin/v8_foreground_task_runner.cc
index d53085c..f6d916c 100644
--- a/gin/v8_foreground_task_runner.cc
+++ b/gin/v8_foreground_task_runner.cc
@@ -24,6 +24,12 @@
                          base::BindOnce(&v8::Task::Run, std::move(task)));
 }
 
+void V8ForegroundTaskRunner::PostNonNestableTask(
+    std::unique_ptr<v8::Task> task) {
+  task_runner_->PostNonNestableTask(
+      FROM_HERE, base::BindOnce(&v8::Task::Run, std::move(task)));
+}
+
 void V8ForegroundTaskRunner::PostDelayedTask(std::unique_ptr<v8::Task> task,
                                              double delay_in_seconds) {
   task_runner_->PostDelayedTask(
@@ -36,4 +42,8 @@
   idle_task_runner()->PostIdleTask(std::move(task));
 }
 
+bool V8ForegroundTaskRunner::NonNestableTasksEnabled() const {
+  return true;
+}
+
 }  // namespace gin
diff --git a/gin/v8_foreground_task_runner.h b/gin/v8_foreground_task_runner.h
index b9da5f1..62e4f3a 100644
--- a/gin/v8_foreground_task_runner.h
+++ b/gin/v8_foreground_task_runner.h
@@ -24,11 +24,15 @@
   // v8::Platform implementation.
   void PostTask(std::unique_ptr<v8::Task> task) override;
 
+  void PostNonNestableTask(std::unique_ptr<v8::Task> task) override;
+
   void PostDelayedTask(std::unique_ptr<v8::Task> task,
                        double delay_in_seconds) override;
 
   void PostIdleTask(std::unique_ptr<v8::IdleTask> task) override;
 
+  bool NonNestableTasksEnabled() const override;
+
  private:
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 };
diff --git a/gin/v8_foreground_task_runner_with_locker.cc b/gin/v8_foreground_task_runner_with_locker.cc
index 032cf90..73425e2 100644
--- a/gin/v8_foreground_task_runner_with_locker.cc
+++ b/gin/v8_foreground_task_runner_with_locker.cc
@@ -57,6 +57,13 @@
                                 std::move(task)));
 }
 
+void V8ForegroundTaskRunnerWithLocker::PostNonNestableTask(
+    std::unique_ptr<v8::Task> task) {
+  task_runner_->PostNonNestableTask(
+      FROM_HERE, base::BindOnce(RunWithLocker, base::Unretained(isolate_),
+                                std::move(task)));
+}
+
 void V8ForegroundTaskRunnerWithLocker::PostDelayedTask(
     std::unique_ptr<v8::Task> task,
     double delay_in_seconds) {
@@ -74,4 +81,8 @@
       std::make_unique<IdleTaskWithLocker>(isolate_, std::move(task)));
 }
 
+bool V8ForegroundTaskRunnerWithLocker::NonNestableTasksEnabled() const {
+  return true;
+}
+
 }  // namespace gin
diff --git a/gin/v8_foreground_task_runner_with_locker.h b/gin/v8_foreground_task_runner_with_locker.h
index 68c716f..22bc10d 100644
--- a/gin/v8_foreground_task_runner_with_locker.h
+++ b/gin/v8_foreground_task_runner_with_locker.h
@@ -25,11 +25,15 @@
   // v8::Platform implementation.
   void PostTask(std::unique_ptr<v8::Task> task) override;
 
+  void PostNonNestableTask(std::unique_ptr<v8::Task> task) override;
+
   void PostDelayedTask(std::unique_ptr<v8::Task> task,
                        double delay_in_seconds) override;
 
   void PostIdleTask(std::unique_ptr<v8::IdleTask> task) override;
 
+  bool NonNestableTasksEnabled() const override;
+
  private:
   v8::Isolate* isolate_;
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
diff --git a/ios/chrome/browser/about_flags.mm b/ios/chrome/browser/about_flags.mm
index 0853824..7f396b28 100644
--- a/ios/chrome/browser/about_flags.mm
+++ b/ios/chrome/browser/about_flags.mm
@@ -15,8 +15,8 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/logging.h"
-#include "base/macros.h"
 #include "base/memory/singleton.h"
+#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/sys_info.h"
@@ -94,16 +94,16 @@
 
 const FeatureEntry::FeatureVariation kMarkHttpAsFeatureVariations[] = {
     {"(mark as actively dangerous)", kMarkHttpAsDangerous,
-     arraysize(kMarkHttpAsDangerous), nullptr},
+     base::size(kMarkHttpAsDangerous), nullptr},
     {"(mark with a Not Secure warning)", kMarkHttpAsWarning,
-     arraysize(kMarkHttpAsWarning), nullptr},
+     base::size(kMarkHttpAsWarning), nullptr},
     {"(mark with a Not Secure warning and dangerous on form edits)",
      kMarkHttpAsWarningAndDangerousOnFormEdits,
-     arraysize(kMarkHttpAsWarningAndDangerousOnFormEdits), nullptr},
+     base::size(kMarkHttpAsWarningAndDangerousOnFormEdits), nullptr},
     {"(mark with a Not Secure warning and dangerous on passwords and credit "
      "card fields)",
      kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards,
-     arraysize(kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards),
+     base::size(kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards),
      nullptr}};
 
 const FeatureEntry::Choice kUseDdljsonApiChoices[] = {
@@ -448,7 +448,7 @@
 class FlagsStateSingleton {
  public:
   FlagsStateSingleton()
-      : flags_state_(kFeatureEntries, arraysize(kFeatureEntries)) {}
+      : flags_state_(kFeatureEntries, base::size(kFeatureEntries)) {}
   ~FlagsStateSingleton() {}
 
   static FlagsStateSingleton* GetInstance() {
@@ -504,7 +504,7 @@
 namespace testing {
 
 const flags_ui::FeatureEntry* GetFeatureEntries(size_t* count) {
-  *count = arraysize(kFeatureEntries);
+  *count = base::size(kFeatureEntries);
   return kFeatureEntries;
 }
 
diff --git a/ios/chrome/browser/app_startup_parameters_unittest.mm b/ios/chrome/browser/app_startup_parameters_unittest.mm
index 6c445a6..d02f09cb 100644
--- a/ios/chrome/browser/app_startup_parameters_unittest.mm
+++ b/ios/chrome/browser/app_startup_parameters_unittest.mm
@@ -4,6 +4,7 @@
 
 #include "ios/chrome/browser/app_startup_parameters.h"
 
+#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 #include "url/gurl.h"
@@ -55,7 +56,7 @@
       },
   };
 
-  for (size_t i = 0; i < arraysize(test_cases); ++i) {
+  for (size_t i = 0; i < base::size(test_cases); ++i) {
     const UniversalLinkDecodeTestCase& test_case = test_cases[i];
     AppStartupParameters* params = [[AppStartupParameters alloc]
         initWithUniversalLink:test_case.universal_link];
diff --git a/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm b/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm
index 3317701..34f875f 100644
--- a/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm
+++ b/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm
@@ -5,6 +5,7 @@
 #import <UIKit/UIKit.h>
 
 #include "base/format_macros.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "components/autofill/core/common/autofill_constants.h"
 #include "ios/chrome/browser/web/chrome_web_client.h"
@@ -898,7 +899,7 @@
   LoadHtml(kHTMLForTestingElements);
   ExecuteBooleanJavaScriptOnElementsAndCheck(
       javascript,
-      GetElementsByNameJavaScripts(elementsByName, arraysize(elementsByName)),
+      GetElementsByNameJavaScripts(elementsByName, base::size(elementsByName)),
       GetElementsByNameJavaScripts(elements_with_true_expected,
                                    size_elements_with_true_expected));
 }
@@ -924,7 +925,7 @@
 
   TestExecutingBooleanJavaScriptOnElement(
       @"__gCrWeb.fill.hasTagName(%@, 'input')", elements_expecting_true,
-      arraysize(elements_expecting_true));
+      base::size(elements_expecting_true));
 }
 
 TEST_F(AutofillControllerJsTest, CombineAndCollapseWhitespace) {
@@ -1108,7 +1109,7 @@
 
   TestExecutingBooleanJavaScriptOnElement(
       @"__gCrWeb.fill.isAutofillableElement(%@)", elements_expecting_true,
-      arraysize(elements_expecting_true));
+      base::size(elements_expecting_true));
 }
 
 TEST_F(AutofillControllerJsTest, GetOptionStringsFromElement) {
@@ -1121,7 +1122,7 @@
        "__gCrWeb.fill.getOptionStringsFromElement(%@, field);"
        "__gCrWeb.stringify(field);",
       GetElementsByNameJavaScripts(testing_elements,
-                                   arraysize(testing_elements)),
+                                   base::size(testing_elements)),
       @[
         @("{\"option_values\":[\"CA\",\"MA\"],"
           "\"option_contents\":[\"CA\",\"MA\"]}"),
@@ -1152,7 +1153,7 @@
     @"new name",
     @"MA",
   ];
-  for (size_t i = 0; i < arraysize(elements); ++i) {
+  for (size_t i = 0; i < base::size(elements); ++i) {
     NSString* get_element_javascript = GetElementByNameJavaScript(elements[i]);
     NSString* new_value = [values objectAtIndex:i];
     EXPECT_NSEQ(new_value,
@@ -1171,7 +1172,7 @@
   const bool final_is_checked_values[] = {
       true, false, true, false, true, true,
   };
-  for (size_t i = 0; i < arraysize(checkable_elements); ++i) {
+  for (size_t i = 0; i < base::size(checkable_elements); ++i) {
     NSString* get_element_javascript =
         GetElementByNameJavaScript(checkable_elements[i]);
     bool is_checked = final_is_checked_values[i];
@@ -1191,7 +1192,7 @@
       {"state", 0, 0},  // option element
       {"state", 0, 1},  // option element
   };
-  for (size_t i = 0; i < arraysize(unchanged_elements); ++i) {
+  for (size_t i = 0; i < base::size(unchanged_elements); ++i) {
     NSString* get_element_javascript =
         GetElementByNameJavaScript(unchanged_elements[i]);
     NSString* actual = ExecuteJavaScriptWithFormat(
@@ -1214,7 +1215,7 @@
 
   TestExecutingBooleanJavaScriptOnElement(@"__gCrWeb.fill.isTextInput(%@)",
                                           elements_expecting_true,
-                                          arraysize(elements_expecting_true));
+                                          base::size(elements_expecting_true));
 }
 
 TEST_F(AutofillControllerJsTest, IsSelectElement) {
@@ -1224,7 +1225,7 @@
 
   TestExecutingBooleanJavaScriptOnElement(@"__gCrWeb.fill.isSelectElement(%@)",
                                           elements_expecting_true,
-                                          arraysize(elements_expecting_true));
+                                          base::size(elements_expecting_true));
 }
 
 TEST_F(AutofillControllerJsTest, IsCheckableElement) {
@@ -1235,7 +1236,7 @@
 
   TestExecutingBooleanJavaScriptOnElement(
       @"__gCrWeb.fill.isCheckableElement(%@)", elements_expecting_true,
-      arraysize(elements_expecting_true));
+      base::size(elements_expecting_true));
 }
 
 TEST_F(AutofillControllerJsTest, IsAutofillableInputElement) {
@@ -1251,7 +1252,7 @@
 
   TestExecutingBooleanJavaScriptOnElement(
       @"__gCrWeb.fill.isAutofillableInputElement(%@)", elements_expecting_true,
-      arraysize(elements_expecting_true));
+      base::size(elements_expecting_true));
 }
 
 TEST_F(AutofillControllerJsTest, ExtractAutofillableElements) {
@@ -1266,7 +1267,7 @@
       {"boolean", 2, -1},   {"state", 0, -1},
   };
   NSArray* expected = GetElementsByNameJavaScripts(
-      expected_elements, arraysize(expected_elements));
+      expected_elements, base::size(expected_elements));
 
   NSString* parameter = @"window.document.getElementsByTagName('form')[0]";
   for (NSUInteger index = 0; index < [expected count]; index++) {
@@ -1284,7 +1285,7 @@
     NSString* tag_name) {
   LoadHtml([test_data firstObject]);
 
-  for (NSUInteger i = 0; i < arraysize(kFormExtractMasks); ++i) {
+  for (NSUInteger i = 0; i < base::size(kFormExtractMasks); ++i) {
     ExtractMask extract_mask = kFormExtractMasks[i];
     NSArray* attributes_to_check =
         GetFormFieldAttributeListsToCheck(extract_mask);
@@ -1389,7 +1390,7 @@
 
   NSString* parameter = @"document.getElementsByTagName('form')[0]";
   for (NSUInteger extract_index = 0;
-       extract_index < arraysize(kFormExtractMasks); ++extract_index) {
+       extract_index < base::size(kFormExtractMasks); ++extract_index) {
     NSString* expected_result = @"true";
     // We don't verify 'action' here as action is generated as a complete url
     // and here data url is used.
diff --git a/ios/chrome/browser/browser_about_rewriter.cc b/ios/chrome/browser/browser_about_rewriter.cc
index 2420bfa..2b6e0b809 100644
--- a/ios/chrome/browser/browser_about_rewriter.cc
+++ b/ios/chrome/browser/browser_about_rewriter.cc
@@ -7,6 +7,7 @@
 #include <string>
 
 #include "base/logging.h"
+#include "base/stl_util.h"
 #include "components/url_formatter/url_fixer.h"
 #include "ios/chrome/browser/chrome_url_constants.h"
 #include "url/url_constants.h"
@@ -38,7 +39,7 @@
     return false;
 
   std::string host(url->host());
-  for (size_t i = 0; i < arraysize(kHostReplacements); ++i) {
+  for (size_t i = 0; i < base::size(kHostReplacements); ++i) {
     if (host != kHostReplacements[i].old_host_name)
       continue;
 
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
index ebc6ada..d1e33329 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
@@ -16,7 +16,6 @@
 #include "base/compiler_specific.h"
 #include "base/debug/alias.h"
 #include "base/logging.h"
-#include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/path_service.h"
 #include "base/single_thread_task_runner.h"
@@ -233,7 +232,7 @@
   static const char* const kProtocolList[] = {
       url::kFileScheme, kChromeUIScheme, url::kDataScheme, url::kAboutScheme,
   };
-  for (size_t i = 0; i < arraysize(kProtocolList); ++i) {
+  for (size_t i = 0; i < base::size(kProtocolList); ++i) {
     if (scheme == kProtocolList[i])
       return true;
   }
diff --git a/ios/chrome/browser/chrome_url_constants.cc b/ios/chrome/browser/chrome_url_constants.cc
index c77505a..6e52bfa 100644
--- a/ios/chrome/browser/chrome_url_constants.cc
+++ b/ios/chrome/browser/chrome_url_constants.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 
 const char kChromeUIScheme[] = "chrome";
 
@@ -65,7 +65,7 @@
     kChromeUITermsHost,
     kChromeUIVersionHost,
 };
-const size_t kNumberOfChromeHostURLs = arraysize(kChromeHostURLs);
+const size_t kNumberOfChromeHostURLs = base::size(kChromeHostURLs);
 
 const char kSyncGoogleDashboardURL[] =
     "https://www.google.com/settings/chrome/sync/";
diff --git a/ios/chrome/browser/chrome_url_util_unittest.mm b/ios/chrome/browser/chrome_url_util_unittest.mm
index dd94630..990492f 100644
--- a/ios/chrome/browser/chrome_url_util_unittest.mm
+++ b/ios/chrome/browser/chrome_url_util_unittest.mm
@@ -4,7 +4,7 @@
 
 #import "ios/chrome/browser/chrome_url_util.h"
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "ios/chrome/browser/chrome_url_constants.h"
 #import "net/base/mac/url_conversions.h"
@@ -39,7 +39,7 @@
 
 // Tests UrlHasChromeScheme with NSURL* parameter.
 TEST_F(ChromeURLUtilTest, NSURLHasChromeScheme) {
-  for (unsigned int i = 0; i < arraysize(kSchemeTestData); ++i) {
+  for (unsigned int i = 0; i < base::size(kSchemeTestData); ++i) {
     const char* url = kSchemeTestData[i];
     NSURL* nsurl = [NSURL URLWithString:base::SysUTF8ToNSString(url)];
     bool nsurl_result = UrlHasChromeScheme(nsurl);
@@ -50,7 +50,7 @@
 
 // Tests UrlHasChromeScheme with const GURL& paramter.
 TEST_F(ChromeURLUtilTest, GURLHasChromeScheme) {
-  for (unsigned int i = 0; i < arraysize(kSchemeTestData); ++i) {
+  for (unsigned int i = 0; i < base::size(kSchemeTestData); ++i) {
     GURL gurl(kSchemeTestData[i]);
     bool result = UrlHasChromeScheme(gurl);
     EXPECT_EQ(gurl.SchemeIs(kChromeUIScheme), result)
diff --git a/ios/chrome/browser/crash_report/crash_restore_helper_unittest.mm b/ios/chrome/browser/crash_report/crash_restore_helper_unittest.mm
index 2fc56eb..841f3da 100644
--- a/ios/chrome/browser/crash_report/crash_restore_helper_unittest.mm
+++ b/ios/chrome/browser/crash_report/crash_restore_helper_unittest.mm
@@ -7,6 +7,7 @@
 #include <memory>
 
 #include "base/logging.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
@@ -60,7 +61,7 @@
       chrome_browser_state_.get(), off_the_record_chrome_browser_state_,
   };
 
-  for (size_t index = 0; index < arraysize(browser_states); ++index) {
+  for (size_t index = 0; index < base::size(browser_states); ++index) {
     NSString* state_path =
         base::SysUTF8ToNSString(browser_states[index]->GetStatePath().value());
     NSString* session_path =
@@ -71,7 +72,7 @@
 
   [helper_ moveAsideSessionInformation];
 
-  for (size_t index = 0; index < arraysize(browser_states); ++index) {
+  for (size_t index = 0; index < base::size(browser_states); ++index) {
     NSString* state_path =
         base::SysUTF8ToNSString(browser_states[index]->GetStatePath().value());
     NSString* session_path =
diff --git a/ios/chrome/browser/invalidation/BUILD.gn b/ios/chrome/browser/invalidation/BUILD.gn
index 0ac4f06..a226bb1 100644
--- a/ios/chrome/browser/invalidation/BUILD.gn
+++ b/ios/chrome/browser/invalidation/BUILD.gn
@@ -7,11 +7,14 @@
   sources = [
     "ios_chrome_deprecated_profile_invalidation_provider_factory.h",
     "ios_chrome_deprecated_profile_invalidation_provider_factory.mm",
+    "ios_chrome_profile_invalidation_provider_factory.h",
+    "ios_chrome_profile_invalidation_provider_factory.mm",
   ]
   deps = [
     "//base",
     "//components/gcm_driver",
     "//components/invalidation/impl",
+    "//components/invalidation/impl:json_unsafe_parser",
     "//components/keyed_service/ios",
     "//components/pref_registry",
     "//components/prefs",
@@ -19,6 +22,7 @@
     "//ios/chrome/browser",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/gcm",
+    "//ios/chrome/browser/gcm/instance_id",
     "//ios/chrome/browser/signin",
     "//ios/web",
     "//net",
diff --git a/ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h b/ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h
new file mode 100644
index 0000000..e7cda79
--- /dev/null
+++ b/ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h
@@ -0,0 +1,52 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_INVALIDATION_IOS_CHROME_PROFILE_INVALIDATION_PROVIDER_FACTORY_H_
+#define IOS_CHROME_BROWSER_INVALIDATION_IOS_CHROME_PROFILE_INVALIDATION_PROVIDER_FACTORY_H_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
+
+namespace base {
+template <typename T>
+struct DefaultSingletonTraits;
+}
+
+namespace invalidation {
+class ProfileInvalidationProvider;
+}
+
+namespace ios {
+class ChromeBrowserState;
+}
+
+// A BrowserContextKeyedServiceFactory to construct InvalidationServices wrapped
+// in ProfileInvalidationProviders.
+class IOSChromeProfileInvalidationProviderFactory
+    : public BrowserStateKeyedServiceFactory {
+ public:
+  // Returns the ProfileInvalidationProvider for the given |browser_state|,
+  // lazily creating one first if required.
+  static invalidation::ProfileInvalidationProvider* GetForBrowserState(
+      ios::ChromeBrowserState* browser_state);
+
+  static IOSChromeProfileInvalidationProviderFactory* GetInstance();
+
+ private:
+  friend struct base::DefaultSingletonTraits<
+      IOSChromeProfileInvalidationProviderFactory>;
+
+  IOSChromeProfileInvalidationProviderFactory();
+  ~IOSChromeProfileInvalidationProviderFactory() override;
+
+  // BrowserStateKeyedServiceFactory:
+  std::unique_ptr<KeyedService> BuildServiceInstanceFor(
+      web::BrowserState* context) const override;
+
+  DISALLOW_COPY_AND_ASSIGN(IOSChromeProfileInvalidationProviderFactory);
+};
+
+#endif  // IOS_CHROME_BROWSER_INVALIDATION_IOS_CHROME_PROFILE_INVALIDATION_PROVIDER_FACTORY_H_
diff --git a/ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.mm b/ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.mm
new file mode 100644
index 0000000..8312b70
--- /dev/null
+++ b/ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.mm
@@ -0,0 +1,90 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h"
+
+#include <memory>
+#include <utility>
+
+#include "base/callback.h"
+#include "base/memory/singleton.h"
+#include "components/gcm_driver/gcm_profile_service.h"
+#include "components/gcm_driver/instance_id/instance_id_profile_service.h"
+#include "components/invalidation/impl/fcm_invalidation_service.h"
+#include "components/invalidation/impl/invalidator_storage.h"
+#include "components/invalidation/impl/json_unsafe_parser.h"
+#include "components/invalidation/impl/profile_identity_provider.h"
+#include "components/invalidation/impl/profile_invalidation_provider.h"
+#include "components/keyed_service/ios/browser_state_dependency_manager.h"
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/prefs/pref_registry.h"
+#include "components/signin/core/browser/signin_manager.h"
+#include "ios/chrome/browser/application_context.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/gcm/instance_id/ios_chrome_instance_id_profile_service_factory.h"
+#include "ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.h"
+#include "ios/chrome/browser/signin/identity_manager_factory.h"
+#include "ios/web/public/web_client.h"
+#include "net/url_request/url_request_context_getter.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+using invalidation::ProfileInvalidationProvider;
+
+// static
+invalidation::ProfileInvalidationProvider*
+IOSChromeProfileInvalidationProviderFactory::GetForBrowserState(
+    ios::ChromeBrowserState* browser_state) {
+  return static_cast<ProfileInvalidationProvider*>(
+      GetInstance()->GetServiceForBrowserState(browser_state, true));
+}
+
+// static
+IOSChromeProfileInvalidationProviderFactory*
+IOSChromeProfileInvalidationProviderFactory::GetInstance() {
+  return base::Singleton<IOSChromeProfileInvalidationProviderFactory>::get();
+}
+
+IOSChromeProfileInvalidationProviderFactory::
+    IOSChromeProfileInvalidationProviderFactory()
+    : BrowserStateKeyedServiceFactory(
+          "InvalidationService",
+          BrowserStateDependencyManager::GetInstance()) {
+  DependsOn(IdentityManagerFactory::GetInstance());
+  DependsOn(IOSChromeGCMProfileServiceFactory::GetInstance());
+  DependsOn(IOSChromeInstanceIDProfileServiceFactory::GetInstance());
+}
+
+IOSChromeProfileInvalidationProviderFactory::
+    ~IOSChromeProfileInvalidationProviderFactory() {}
+
+std::unique_ptr<KeyedService>
+IOSChromeProfileInvalidationProviderFactory::BuildServiceInstanceFor(
+    web::BrowserState* context) const {
+  ios::ChromeBrowserState* browser_state =
+      ios::ChromeBrowserState::FromBrowserState(context);
+
+  auto identity_provider =
+      std::make_unique<invalidation::ProfileIdentityProvider>(
+          IdentityManagerFactory::GetForBrowserState(browser_state));
+
+  std::unique_ptr<invalidation::FCMInvalidationService> service =
+      std::make_unique<invalidation::FCMInvalidationService>(
+          identity_provider.get(),
+          IOSChromeGCMProfileServiceFactory::GetForBrowserState(browser_state)
+              ->driver(),
+          IOSChromeInstanceIDProfileServiceFactory::GetForBrowserState(
+              browser_state)
+              ->driver(),
+          browser_state->GetPrefs(),
+          base::BindRepeating(&syncer::JsonUnsafeParser::Parse),
+          browser_state->GetURLLoaderFactory());
+  service->Init();
+
+  return std::make_unique<ProfileInvalidationProvider>(
+      std::move(service), std::move(identity_provider));
+}
diff --git a/ios/chrome/browser/metrics/first_user_action_recorder.cc b/ios/chrome/browser/metrics/first_user_action_recorder.cc
index 96c10cb..6ba9396 100644
--- a/ios/chrome/browser/metrics/first_user_action_recorder.cc
+++ b/ios/chrome/browser/metrics/first_user_action_recorder.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/location.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -124,7 +125,7 @@
 
 void FirstUserActionRecorder::OnUserAction(const std::string& action_name) {
   if (ShouldProcessAction(action_name)) {
-    if (ArrayContainsString(kNewTaskActions, arraysize(kNewTaskActions),
+    if (ArrayContainsString(kNewTaskActions, base::size(kNewTaskActions),
                             action_name.c_str())) {
       std::string log_message = base::StringPrintf(
           "Recording 'New task' for first user action type"
@@ -185,7 +186,7 @@
     return false;
 
   if (!action_pending_ &&
-      ArrayContainsString(kRethrownActions, arraysize(kRethrownActions),
+      ArrayContainsString(kRethrownActions, base::size(kRethrownActions),
                           action_name.c_str())) {
     rethrow_callback_.Reset(
         base::BindOnce(&FirstUserActionRecorder::OnUserAction,
@@ -200,11 +201,11 @@
   // |new_task_actions_| whitelist.
   bool known_mobile_action =
       base::StartsWith(action_name, "Mobile", base::CompareCase::SENSITIVE) ||
-      ArrayContainsString(kNewTaskActions, arraysize(kNewTaskActions),
+      ArrayContainsString(kNewTaskActions, base::size(kNewTaskActions),
                           action_name.c_str());
 
   return known_mobile_action &&
-         !ArrayContainsString(kIgnoredActions, arraysize(kIgnoredActions),
+         !ArrayContainsString(kIgnoredActions, base::size(kIgnoredActions),
                               action_name.c_str());
 }
 
diff --git a/ios/chrome/browser/omaha/omaha_service_unittest.mm b/ios/chrome/browser/omaha/omaha_service_unittest.mm
index 2fd8b82..ab59a53 100644
--- a/ios/chrome/browser/omaha/omaha_service_unittest.mm
+++ b/ios/chrome/browser/omaha/omaha_service_unittest.mm
@@ -10,6 +10,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/run_loop.h"
+#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "components/metrics/metrics_pref_names.h"
 #include "components/prefs/pref_registry_simple.h"
@@ -182,7 +183,8 @@
       base::StringPrintf(kExpectedResultFormat, "" /* previous version */,
                          -1 /* install age */, 2 /* event type */);
   regcomp(&regex, expected_result.c_str(), REG_EXTENDED);
-  int result = regexec(&regex, content.c_str(), arraysize(matches), matches, 0);
+  int result =
+      regexec(&regex, content.c_str(), base::size(matches), matches, 0);
   regfree(&regex);
   EXPECT_EQ(0, result) << "Actual contents: " << content;
   EXPECT_FALSE(NeedUpdate());
@@ -196,7 +198,7 @@
   expected_result = base::StringPrintf(kExpectedResultFormat, kPreviousVersion,
                                        0 /* install age */, 3 /* event type */);
   regcomp(&regex, expected_result.c_str(), REG_EXTENDED);
-  result = regexec(&regex, content.c_str(), arraysize(matches), matches, 0);
+  result = regexec(&regex, content.c_str(), base::size(matches), matches, 0);
   regfree(&regex);
   EXPECT_EQ(0, result) << "Actual contents: " << content;
   EXPECT_FALSE(NeedUpdate());
diff --git a/ios/chrome/browser/passwords/password_controller_unittest.mm b/ios/chrome/browser/passwords/password_controller_unittest.mm
index 97872e3..fbdbb98 100644
--- a/ios/chrome/browser/passwords/password_controller_unittest.mm
+++ b/ios/chrome/browser/passwords/password_controller_unittest.mm
@@ -11,6 +11,7 @@
 
 #include "base/json/json_reader.h"
 #include "base/memory/ref_counted.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #import "base/test/ios/wait_util.h"
@@ -1032,7 +1033,7 @@
   } const kTestData[] = {{"f1", "u1", "p1"}, {"f2", "u2", "p2"}};
 
   // Send fill data to passwordController_.
-  for (size_t form_i = 0; form_i < arraysize(kTestData); ++form_i) {
+  for (size_t form_i = 0; form_i < base::size(kTestData); ++form_i) {
     // Initialize |form_data| with test data and an indicator that autofill
     // should not be performed while the user is entering the username so that
     // we can test with an initially-empty username field.
@@ -1058,7 +1059,7 @@
   }
 
   // Check that the right password form is filled on suggesion selection.
-  for (size_t form_i = 0; form_i < arraysize(kTestData); ++form_i) {
+  for (size_t form_i = 0; form_i < base::size(kTestData); ++form_i) {
     const auto& test_data = kTestData[form_i];
     NSString* form_name = base::SysUTF8ToNSString(test_data.form_name);
     NSString* username_element =
@@ -1287,7 +1288,7 @@
   EXPECT_CALL(*weak_client_, GetLogManager())
       .WillRepeatedly(Return(&log_manager));
 
-  for (size_t i = 0; i < arraysize(kHtml); ++i) {
+  for (size_t i = 0; i < base::size(kHtml); ++i) {
     LoadHtml(base::SysUTF8ToNSString(kHtml[i]));
     // Use a mock LogManager to detect that OnPasswordFormSubmitted has been
     // called. TODO(crbug.com/598672): this is a hack, we should modularize the
diff --git a/ios/chrome/browser/snapshots/snapshot_cache.mm b/ios/chrome/browser/snapshots/snapshot_cache.mm
index e0056cdb..ced809b9 100644
--- a/ios/chrome/browser/snapshots/snapshot_cache.mm
+++ b/ios/chrome/browser/snapshots/snapshot_cache.mm
@@ -19,6 +19,7 @@
 #include "base/path_service.h"
 #include "base/sequence_checker.h"
 #include "base/sequenced_task_runner.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/task_runner_util.h"
@@ -403,7 +404,7 @@
 
   taskRunner_->PostTask(
       FROM_HERE, base::BindOnce(^{
-        for (size_t index = 0; index < arraysize(kImageTypes); ++index) {
+        for (size_t index = 0; index < base::size(kImageTypes); ++index) {
           base::DeleteFile(ImagePath(sessionID, kImageTypes[index],
                                      snapshotsScale, cacheDirectory),
                            false /* recursive */);
@@ -458,7 +459,7 @@
 
         std::set<base::FilePath> filesToKeep;
         for (NSString* sessionID : liveSessionIds) {
-          for (size_t index = 0; index < arraysize(kImageTypes); ++index) {
+          for (size_t index = 0; index < base::size(kImageTypes); ++index) {
             filesToKeep.insert(ImagePath(sessionID, kImageTypes[index],
                                          snapshotsScale, cacheDirectory));
           }
diff --git a/ios/chrome/browser/snapshots/snapshots_util.mm b/ios/chrome/browser/snapshots/snapshots_util.mm
index 2f839aa..1920f484 100644
--- a/ios/chrome/browser/snapshots/snapshots_util.mm
+++ b/ios/chrome/browser/snapshots/snapshots_util.mm
@@ -9,8 +9,8 @@
 #include "base/files/file_util.h"
 #include "base/location.h"
 #include "base/mac/foundation_util.h"
-#include "base/macros.h"
 #include "base/path_service.h"
+#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/post_task.h"
 
@@ -60,7 +60,7 @@
   } else if (scale == 3) {
     retina_suffix = "@3x";
   }
-  for (unsigned int i = 0; i < arraysize(kOrientationDescriptions); i++) {
+  for (unsigned int i = 0; i < base::size(kOrientationDescriptions); i++) {
     std::string snapshot_filename =
         base::StringPrintf("UIApplicationAutomaticSnapshotDefault-%s%s.png",
                            kOrientationDescriptions[i], retina_suffix);
diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.mm b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
index 31a056b..3efec36 100644
--- a/ios/chrome/browser/sync/ios_chrome_sync_client.mm
+++ b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
@@ -29,6 +29,7 @@
 #include "components/history/core/browser/history_service.h"
 #include "components/history/core/browser/sync/history_model_worker.h"
 #include "components/history/core/browser/sync/typed_url_sync_bridge.h"
+#include "components/invalidation/impl/invalidation_switches.h"
 #include "components/invalidation/impl/profile_invalidation_provider.h"
 #include "components/keyed_service/core/service_access_type.h"
 #include "components/password_manager/core/browser/password_model_worker.h"
@@ -55,6 +56,7 @@
 #include "ios/chrome/browser/favicon/favicon_service_factory.h"
 #include "ios/chrome/browser/history/history_service_factory.h"
 #include "ios/chrome/browser/invalidation/ios_chrome_deprecated_profile_invalidation_provider_factory.h"
+#include "ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h"
 #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h"
 #include "ios/chrome/browser/pref_names.h"
 #include "ios/chrome/browser/reading_list/reading_list_model_factory.h"
@@ -192,9 +194,15 @@
 
 invalidation::InvalidationService*
 IOSChromeSyncClient::GetInvalidationService() {
-  invalidation::ProfileInvalidationProvider* provider =
-      IOSChromeDeprecatedProfileInvalidationProviderFactory::GetForBrowserState(
-          browser_state_);
+  invalidation::ProfileInvalidationProvider* provider;
+
+  if (base::FeatureList::IsEnabled(invalidation::switches::kFCMInvalidations)) {
+    provider = IOSChromeProfileInvalidationProviderFactory::GetForBrowserState(
+        browser_state_);
+  } else {
+    provider = IOSChromeDeprecatedProfileInvalidationProviderFactory::
+        GetForBrowserState(browser_state_);
+  }
   if (provider)
     return provider->GetInvalidationService();
   return nullptr;
diff --git a/ios/chrome/browser/sync/profile_sync_service_factory.cc b/ios/chrome/browser/sync/profile_sync_service_factory.cc
index ede0d70..cc6fa09f 100644
--- a/ios/chrome/browser/sync/profile_sync_service_factory.cc
+++ b/ios/chrome/browser/sync/profile_sync_service_factory.cc
@@ -10,6 +10,7 @@
 #include "base/task/post_task.h"
 #include "base/time/time.h"
 #include "components/browser_sync/profile_sync_service.h"
+#include "components/invalidation/impl/invalidation_switches.h"
 #include "components/keyed_service/ios/browser_state_dependency_manager.h"
 #include "components/network_time/network_time_tracker.h"
 #include "components/signin/core/browser/device_id_helper.h"
@@ -25,6 +26,7 @@
 #include "ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.h"
 #include "ios/chrome/browser/history/history_service_factory.h"
 #include "ios/chrome/browser/invalidation/ios_chrome_deprecated_profile_invalidation_provider_factory.h"
+#include "ios/chrome/browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h"
 #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h"
 #include "ios/chrome/browser/reading_list/reading_list_model_factory.h"
 #include "ios/chrome/browser/search_engines/template_url_service_factory.h"
@@ -111,8 +113,12 @@
   DependsOn(IdentityManagerFactory::GetInstance());
   DependsOn(IOSChromeGCMProfileServiceFactory::GetInstance());
   DependsOn(IOSChromePasswordStoreFactory::GetInstance());
-  DependsOn(
-      IOSChromeDeprecatedProfileInvalidationProviderFactory::GetInstance());
+  if (base::FeatureList::IsEnabled(invalidation::switches::kFCMInvalidations)) {
+    DependsOn(IOSChromeProfileInvalidationProviderFactory::GetInstance());
+  } else {
+    DependsOn(
+        IOSChromeDeprecatedProfileInvalidationProviderFactory::GetInstance());
+  }
   DependsOn(ModelTypeStoreServiceFactory::GetInstance());
   DependsOn(ReadingListModelFactory::GetInstance());
   DependsOn(SessionSyncServiceFactory::GetInstance());
diff --git a/ios/chrome/browser/sync/sync_setup_service.cc b/ios/chrome/browser/sync/sync_setup_service.cc
index cca7a03..8f51c3d 100644
--- a/ios/chrome/browser/sync/sync_setup_service.cc
+++ b/ios/chrome/browser/sync/sync_setup_service.cc
@@ -7,6 +7,7 @@
 #include <stdio.h>
 
 #include "base/metrics/histogram_macros.h"
+#include "base/stl_util.h"
 #include "components/prefs/pref_service.h"
 #include "components/sync/base/stop_source.h"
 #include "components/sync/base/sync_prefs.h"
@@ -33,7 +34,7 @@
     : sync_service_(sync_service), prefs_(prefs) {
   DCHECK(sync_service_);
   DCHECK(prefs_);
-  for (unsigned int i = 0; i < arraysize(kDataTypes); ++i) {
+  for (unsigned int i = 0; i < base::size(kDataTypes); ++i) {
     if (kDataTypes[i] == syncer::USER_EVENTS &&
         !unified_consent::IsUnifiedConsentFeatureEnabled())
       continue;
@@ -45,7 +46,7 @@
 }
 
 syncer::ModelType SyncSetupService::GetModelType(SyncableDatatype datatype) {
-  DCHECK(datatype < arraysize(kDataTypes));
+  DCHECK(datatype < base::size(kDataTypes));
   return kDataTypes[datatype];
 }
 
diff --git a/ios/chrome/browser/tabs/tab_model.mm b/ios/chrome/browser/tabs/tab_model.mm
index 8de4094..48ef318c 100644
--- a/ios/chrome/browser/tabs/tab_model.mm
+++ b/ios/chrome/browser/tabs/tab_model.mm
@@ -14,6 +14,7 @@
 #import "base/mac/foundation_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics_action.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/task/cancelable_task_tracker.h"
 #include "base/task/post_task.h"
@@ -176,7 +177,7 @@
       ui::PAGE_TRANSITION_KEYWORD_GENERATED,
   };
 
-  for (size_t i = 0; i < arraysize(kRecordedPageTransitionTypes); ++i) {
+  for (size_t i = 0; i < base::size(kRecordedPageTransitionTypes); ++i) {
     const ui::PageTransition recorded_type = kRecordedPageTransitionTypes[i];
     if (ui::PageTransitionCoreTypeIs(transition, recorded_type)) {
       return YES;
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
index 952112323..ae078e9 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
@@ -12,6 +12,7 @@
 #include "base/hash.h"
 #include "base/i18n/string_compare.h"
 #include "base/metrics/user_metrics_action.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/bookmarks/browser/bookmark_model.h"
@@ -87,7 +88,7 @@
 
 UIColor* DefaultColor(const GURL& url) {
   uint32_t hash = base::Hash(url.possibly_invalid_spec());
-  SkColor color = colors[hash % arraysize(colors)];
+  SkColor color = colors[hash % base::size(colors)];
   return ColorFromSkColor(color);
 }
 
diff --git a/ios/chrome/browser/ui/ntp/notification_promo_whats_new.mm b/ios/chrome/browser/ui/ntp/notification_promo_whats_new.mm
index 00cb61c..4133636 100644
--- a/ios/chrome/browser/ui/ntp/notification_promo_whats_new.mm
+++ b/ios/chrome/browser/ui/ntp/notification_promo_whats_new.mm
@@ -13,6 +13,7 @@
 #include "base/metrics/field_trial.h"
 #include "base/metrics/user_metrics.h"
 #include "base/metrics/user_metrics_action.h"
+#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/time/time.h"
 #include "base/values.h"
@@ -45,7 +46,7 @@
 // Returns a localized version of |promo_text| if it has an entry in the
 // |kPromoStringToIdsMap|. If there is no entry, an empty string is returned.
 std::string GetLocalizedPromoText(const std::string& promo_text) {
-  for (size_t i = 0; i < arraysize(kPromoStringToIdsMap); ++i) {
+  for (size_t i = 0; i < base::size(kPromoStringToIdsMap); ++i) {
     if (kPromoStringToIdsMap[i].promo_text_str == promo_text)
       return l10n_util::GetStringUTF8(kPromoStringToIdsMap[i].message_id);
   }
diff --git a/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm
index 73dbf7e..1e90faa 100644
--- a/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm
@@ -5,6 +5,7 @@
 #import "ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.h"
 
 #include "base/mac/foundation_util.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "components/autofill/core/browser/autofill_profile.h"
 #include "components/autofill/core/browser/field_types.h"
@@ -180,7 +181,7 @@
 
   std::string locale = GetApplicationContext()->GetApplicationLocale();
   [model addSectionWithIdentifier:SectionIdentifierFields];
-  for (size_t i = 0; i < arraysize(kFieldsToDisplay); ++i) {
+  for (size_t i = 0; i < base::size(kFieldsToDisplay); ++i) {
     const AutofillFieldDisplayInfo& field = kFieldsToDisplay[i];
     AutofillEditItem* item =
         [[AutofillEditItem alloc] initWithType:ItemTypeField];
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm
index d2873d73..697fec41 100644
--- a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm
@@ -5,6 +5,7 @@
 #import "ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h"
 
 #import "base/mac/foundation_util.h"
+#include "base/stl_util.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/prefs/pref_member.h"
 #include "components/prefs/pref_service.h"
@@ -41,7 +42,7 @@
     IDS_IOS_CLEAR_BROWSING_DATA_TIME_RANGE_OPTION_OLDER_THAN_30_DAYS};
 
 static_assert(
-    arraysize(kStringIDS) ==
+    base::size(kStringIDS) ==
         static_cast<int>(browsing_data::TimePeriod::TIME_PERIOD_LAST) + 1,
     "Strings have to match the enum values.");
 
@@ -171,7 +172,7 @@
   if (!prefs)
     return nil;
   int prefValue = prefs->GetInteger(browsing_data::prefs::kDeleteTimePeriod);
-  if (prefValue < 0 || static_cast<size_t>(prefValue) >= arraysize(kStringIDS))
+  if (prefValue < 0 || static_cast<size_t>(prefValue) >= base::size(kStringIDS))
     return nil;
   return l10n_util::GetNSString(kStringIDS[prefValue]);
 }
diff --git a/ios/chrome/browser/ui/ui_util_unittest.mm b/ios/chrome/browser/ui/ui_util_unittest.mm
index 38c38c6..84687cea 100644
--- a/ios/chrome/browser/ui/ui_util_unittest.mm
+++ b/ios/chrome/browser/ui/ui_util_unittest.mm
@@ -7,7 +7,7 @@
 #include <stddef.h>
 #import <UIKit/UIKit.h>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
@@ -25,7 +25,7 @@
   // "integer" values within <1 of the original value in the scaled space.
   CGFloat test_values[] = {10.0, 55.5, 3.14159, 2.71828};
   const CGFloat kMaxAlignDelta = 0.9999;
-  size_t value_count = arraysize(test_values);
+  size_t value_count = base::size(test_values);
   for (unsigned int i = 0; i < value_count; ++i) {
     CGFloat aligned = AlignValueToPixel(test_values[i]);
     EXPECT_FLOAT_EQ(aligned * scale, floor(aligned * scale));
diff --git a/ios/chrome/common/x_callback_url_unittest.cc b/ios/chrome/common/x_callback_url_unittest.cc
index 559208f..64766bb 100644
--- a/ios/chrome/common/x_callback_url_unittest.cc
+++ b/ios/chrome/common/x_callback_url_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ios/chrome/common/x_callback_url.h"
 
+#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
@@ -109,7 +110,7 @@
       },
   };
 
-  for (size_t i = 0; i < arraysize(test_cases); ++i) {
+  for (size_t i = 0; i < base::size(test_cases); ++i) {
     const XCallbackURLEncodeTestCase& test_case = test_cases[i];
     const GURL x_callback_url = CreateXCallbackURLWithParameters(
         test_case.scheme, test_case.action, test_case.success_url,
@@ -171,7 +172,7 @@
       },
   };
 
-  for (size_t i = 0; i < arraysize(test_cases); ++i) {
+  for (size_t i = 0; i < base::size(test_cases); ++i) {
     const XCallbackURLDecodeTestCase& test_case = test_cases[i];
     const std::map<std::string, std::string> parameters =
         ExtractQueryParametersFromXCallbackURL(test_case.x_callback_url);
diff --git a/ios/net/url_scheme_util_unittest.mm b/ios/net/url_scheme_util_unittest.mm
index 7a96d9c4..9f1c45b 100644
--- a/ios/net/url_scheme_util_unittest.mm
+++ b/ios/net/url_scheme_util_unittest.mm
@@ -6,7 +6,7 @@
 
 #import <Foundation/Foundation.h>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #import "testing/gtest_mac.h"
 #include "testing/platform_test.h"
 #include "url/gurl.h"
@@ -28,7 +28,7 @@
 using URLSchemeUtilTest = PlatformTest;
 
 TEST_F(URLSchemeUtilTest, NSURLHasDataScheme) {
-  for (unsigned int i = 0; i < arraysize(kSchemeTestData); ++i) {
+  for (unsigned int i = 0; i < base::size(kSchemeTestData); ++i) {
     const char* url = kSchemeTestData[i];
     bool nsurl_result = UrlHasDataScheme(
         [NSURL URLWithString:[NSString stringWithUTF8String:url]]);
diff --git a/ios/third_party/blink/src/html_tokenizer_adapter.h b/ios/third_party/blink/src/html_tokenizer_adapter.h
index 6051f4e0..6009388 100644
--- a/ios/third_party/blink/src/html_tokenizer_adapter.h
+++ b/ios/third_party/blink/src/html_tokenizer_adapter.h
@@ -10,12 +10,6 @@
 
 #include "base/compiler_specific.h"
 #include "base/logging.h"
-#include "base/macros.h"
-
-#define DEFINE_STATIC_LOCAL_STRING(name, arguments)                       \
-    static const WebCore::LChar* name = (const WebCore::LChar*)arguments; \
-    static const size_t name##Length = (arraysize(arguments) - 1); \
-    DCHECK(name##Length == strlen((const char*)name))
 
 #define WTF_MAKE_NONCOPYABLE(x) DISALLOW_COPY_AND_ASSIGN(x)
 
diff --git a/ios/third_party/material_components_ios/README.chromium b/ios/third_party/material_components_ios/README.chromium
index 99259908..5c4d4e6 100644
--- a/ios/third_party/material_components_ios/README.chromium
+++ b/ios/third_party/material_components_ios/README.chromium
@@ -1,7 +1,7 @@
 Name: Material Components for iOS
 URL: https://github.com/material-components/material-components-ios
 Version: 0
-Revision: 2ccd8f24cd0218f6ef55f10f3d18d9b1fb74d31b
+Revision: 3544e402994d4fe5100e0ae2cdb6a13fb6b4c514
 License: Apache 2.0
 License File: LICENSE
 Security Critical: yes
diff --git a/ios/web/history_state_util_unittest.mm b/ios/web/history_state_util_unittest.mm
index e5de52a..cdb4642 100644
--- a/ios/web/history_state_util_unittest.mm
+++ b/ios/web/history_state_util_unittest.mm
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #import "testing/gtest_mac.h"
 #include "testing/platform_test.h"
@@ -63,7 +63,7 @@
 };
 
 TEST_F(HistoryStateUtilTest, TestIsHistoryStateChangeValid) {
-  for (size_t i = 0; i < arraysize(tests_); ++i) {
+  for (size_t i = 0; i < base::size(tests_); ++i) {
     GURL fromUrl(tests_[i].fromUrl);
     GURL toUrl = history_state_util::GetHistoryStateChangeUrl(fromUrl, fromUrl,
                                                               tests_[i].toUrl);
@@ -79,7 +79,7 @@
 }
 
 TEST_F(HistoryStateUtilTest, TestGetHistoryStateChangeUrl) {
-  for (size_t i = 0; i < arraysize(tests_); ++i) {
+  for (size_t i = 0; i < base::size(tests_); ++i) {
     GURL fromUrl(tests_[i].fromUrl);
     GURL expectedResult(tests_[i].expectedUrl);
     GURL actualResult = history_state_util::GetHistoryStateChangeUrl(
diff --git a/ios/web/navigation/nscoder_util_unittest.mm b/ios/web/navigation/nscoder_util_unittest.mm
index 8a84ad2..24f5ae7 100644
--- a/ios/web/navigation/nscoder_util_unittest.mm
+++ b/ios/web/navigation/nscoder_util_unittest.mm
@@ -5,7 +5,7 @@
 #import <Foundation/Foundation.h>
 #include <stddef.h>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #import "ios/web/navigation/nscoder_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
@@ -29,7 +29,7 @@
 };
 
 TEST_F(NSCoderStdStringTest, encodeDecode) {
-  for (size_t i = 0; i < arraysize(testStrings); ++i) {
+  for (size_t i = 0; i < base::size(testStrings); ++i) {
     NSMutableData* data = [NSMutableData data];
 
     NSKeyedArchiver* archiver =
diff --git a/ios/web/net/web_http_protocol_handler_delegate_unittest.mm b/ios/web/net/web_http_protocol_handler_delegate_unittest.mm
index 33e2ad4..12dcb2e 100644
--- a/ios/web/net/web_http_protocol_handler_delegate_unittest.mm
+++ b/ios/web/net/web_http_protocol_handler_delegate_unittest.mm
@@ -8,9 +8,9 @@
 
 #include <memory>
 
-#include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
+#include "base/stl_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "ios/web/public/test/scoped_testing_web_client.h"
 #import "ios/web/public/web_client.h"
@@ -71,7 +71,7 @@
 TEST_F(WebHTTPProtocolHandlerDelegateTest, IsRequestSupported) {
   NSMutableURLRequest* request;
 
-  for (unsigned int i = 0; i < arraysize(kSupportedURLs); ++i) {
+  for (unsigned int i = 0; i < base::size(kSupportedURLs); ++i) {
     NSString* url_string =
         [[NSString alloc] initWithUTF8String:kSupportedURLs[i]];
     request = [[NSMutableURLRequest alloc]
@@ -80,7 +80,7 @@
         << kSupportedURLs[i] << " should be supported.";
   }
 
-  for (unsigned int i = 0; i < arraysize(kUnsupportedURLs); ++i) {
+  for (unsigned int i = 0; i < base::size(kUnsupportedURLs); ++i) {
     NSString* url_string =
         [[NSString alloc] initWithUTF8String:kUnsupportedURLs[i]];
     request = [[NSMutableURLRequest alloc]
diff --git a/ios/web/public/referrer_util_unittest.cc b/ios/web/public/referrer_util_unittest.cc
index 4661c095..24260a8 100644
--- a/ios/web/public/referrer_util_unittest.cc
+++ b/ios/web/public/referrer_util_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ios/web/public/referrer_util.h"
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #include "ios/web/public/referrer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
@@ -29,8 +29,8 @@
 // Tests that no matter what the transition and policy, the result is always
 // stripped of things that should not be in a referrer (e.g., passwords).
 TEST_F(ReferrerUtilTest, ReferrerSanitization) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 0; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 0; dest < base::size(kTestUrls); ++dest) {
       for (unsigned int policy = 0; policy <= ReferrerPolicyLast; ++policy) {
         Referrer referrer(GURL(kTestUrls[source]),
                           static_cast<ReferrerPolicy>(policy));
@@ -45,8 +45,8 @@
 
 // Tests that the Always policy works as expected.
 TEST_F(ReferrerUtilTest, AlwaysPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyAlways);
@@ -61,8 +61,8 @@
 // Tests that the Default policy works as expected, and matches
 // NoReferrerWhenDowngrade.
 TEST_F(ReferrerUtilTest, DefaultPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyDefault);
@@ -84,8 +84,8 @@
 
 // Tests that the Never policy works as expected.
 TEST_F(ReferrerUtilTest, NeverPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyNever);
@@ -99,8 +99,8 @@
 
 // Tests that the Origin policy works as expected.
 TEST_F(ReferrerUtilTest, OriginPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyOrigin);
@@ -114,8 +114,8 @@
 
 // Tests that the OriginWhenCrossOrigin policy works as expected.
 TEST_F(ReferrerUtilTest, OriginWhenCrossOriginPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyOriginWhenCrossOrigin);
@@ -133,8 +133,8 @@
 
 // Tests that the same-origin policy works as expected.
 TEST_F(ReferrerUtilTest, SameOriginPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicySameOrigin);
@@ -151,8 +151,8 @@
 
 // Tests that the strict-origin policy works as expected.
 TEST_F(ReferrerUtilTest, StrictOriginPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyStrictOrigin);
@@ -170,8 +170,8 @@
 
 // Tests that the strict-origin-when-cross-origin policy works as expected.
 TEST_F(ReferrerUtilTest, StrictOriginWhenCrossOriginPolicy) {
-  for (unsigned int source = 0; source < arraysize(kTestUrls); ++source) {
-    for (unsigned int dest = 1; dest < arraysize(kTestUrls); ++dest) {
+  for (unsigned int source = 0; source < base::size(kTestUrls); ++source) {
+    for (unsigned int dest = 1; dest < base::size(kTestUrls); ++dest) {
       GURL source_url(kTestUrls[source]);
       GURL dest_url(kTestUrls[dest]);
       Referrer referrer(source_url, ReferrerPolicyStrictOriginWhenCrossOrigin);
@@ -266,7 +266,7 @@
   // Verify that if something is added to the enum, its string value gets added
   // to the mapping function.
   EXPECT_EQ(ReferrerPolicyLast + 1,
-            static_cast<int>(arraysize(kPolicyStrings)));
+            static_cast<int>(base::size(kPolicyStrings)));
 
   // Test the legacy policy names.
   EXPECT_EQ(ReferrerPolicyNever, ReferrerPolicyFromString("never"));
diff --git a/ios/web/public/user_agent.mm b/ios/web/public/user_agent.mm
index 406b8d4..44b922d 100644
--- a/ios/web/public/user_agent.mm
+++ b/ios/web/public/user_agent.mm
@@ -11,7 +11,7 @@
 #include <sys/sysctl.h>
 #include <string>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
@@ -60,14 +60,14 @@
 
   // Return the versions corresponding to the first (and thus highest) OS
   // version less than or equal to the given OS version.
-  for (unsigned int i = 0; i < arraysize(version_map); ++i) {
+  for (unsigned int i = 0; i < base::size(version_map); ++i) {
     if (os_major_version > version_map[i].major_os_version ||
         (os_major_version == version_map[i].major_os_version &&
          os_minor_version >= version_map[i].minor_os_version))
       return version_map[i].ua_versions;
   }
   NOTREACHED();
-  return version_map[arraysize(version_map) - 1].ua_versions;
+  return version_map[base::size(version_map) - 1].ua_versions;
 }
 
 std::string BuildKernelVersion() {
diff --git a/ios/web/web_state/js/common_js_unittest.mm b/ios/web/web_state/js/common_js_unittest.mm
index 48d3f4b3..a02a757 100644
--- a/ios/web/web_state/js/common_js_unittest.mm
+++ b/ios/web/web_state/js/common_js_unittest.mm
@@ -5,7 +5,7 @@
 #include <stddef.h>
 #import <Foundation/Foundation.h>
 
-#include "base/macros.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #import "ios/web/public/test/web_test_with_web_state.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -86,7 +86,7 @@
       {"state", 0, false},
       {"cars", 0, false},
       {"submit", 0, false}};
-  for (size_t i = 0; i < arraysize(testElements); ++i) {
+  for (size_t i = 0; i < base::size(testElements); ++i) {
     TextFieldTestElement element = testElements[i];
     id result = ExecuteJavaScript([NSString
         stringWithFormat:@"__gCrWeb.common.isTextField("
@@ -130,7 +130,7 @@
       {@"__gCrWeb.stringify(undefined)", @"undefined"},
   };
 
-  for (size_t i = 0; i < arraysize(test_data); i++) {
+  for (size_t i = 0; i < base::size(test_data); i++) {
     TestScriptAndExpectedValue& data = test_data[i];
     // Load a sample HTML page. As a side-effect, loading HTML via
     // |webController_| will also inject web_bundle.js.
@@ -161,7 +161,7 @@
       {@"data:abc", @"data:abc"},
       {@"javascript:login()", @"javascript:login()"},
   };
-  for (size_t i = 0; i < arraysize(test_data); i++) {
+  for (size_t i = 0; i < base::size(test_data); i++) {
     LoadHtml(@"<p>");
     TestData& data = test_data[i];
     id result = ExecuteJavaScript(
@@ -181,7 +181,7 @@
       {@"'http://abc.com', 'http://def.com'", @NO},
       {@"'http://abc.com/def', 'http://abc.com/xyz'", @YES}};
 
-  for (size_t i = 0; i < arraysize(test_data); i++) {
+  for (size_t i = 0; i < base::size(test_data); i++) {
     TestScriptAndExpectedValue& data = test_data[i];
     LoadHtml(@"<p>");
     id result = ExecuteJavaScript(
diff --git a/ios/web/webui/url_data_manager_ios_backend.mm b/ios/web/webui/url_data_manager_ios_backend.mm
index 747febe..e6aeae8 100644
--- a/ios/web/webui/url_data_manager_ios_backend.mm
+++ b/ios/web/webui/url_data_manager_ios_backend.mm
@@ -11,7 +11,6 @@
 #include "base/compiler_specific.h"
 #include "base/debug/alias.h"
 #include "base/lazy_instance.h"
-#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/memory/weak_ptr.h"
@@ -371,7 +370,7 @@
 int URLRequestChromeJob::CompleteRead(net::IOBuffer* buf, int buf_size) {
   // http://crbug.com/373841
   char url_buf[128];
-  base::strlcpy(url_buf, request_->url().spec().c_str(), arraysize(url_buf));
+  base::strlcpy(url_buf, request_->url().spec().c_str(), base::size(url_buf));
   base::debug::Alias(url_buf);
 
   int remaining = data_->size() - data_offset_;
diff --git a/ios/web_view/internal/autofill/web_view_personal_data_manager_factory.cc b/ios/web_view/internal/autofill/web_view_personal_data_manager_factory.cc
index 584c8aa..ce0348a 100644
--- a/ios/web_view/internal/autofill/web_view_personal_data_manager_factory.cc
+++ b/ios/web_view/internal/autofill/web_view_personal_data_manager_factory.cc
@@ -51,11 +51,14 @@
   std::unique_ptr<autofill::PersonalDataManager> service(
       new autofill::PersonalDataManager(
           ApplicationContext::GetInstance()->GetApplicationLocale()));
-  auto autofill_db =
+  auto profile_db =
       WebViewWebDataServiceWrapperFactory::GetAutofillWebDataForBrowserState(
           browser_state, ServiceAccessType::EXPLICIT_ACCESS);
+  auto account_db =
+      WebViewWebDataServiceWrapperFactory::GetAutofillWebDataForAccount(
+          browser_state, ServiceAccessType::EXPLICIT_ACCESS);
   service->Init(
-      autofill_db, nullptr, browser_state->GetPrefs(),
+      profile_db, account_db, browser_state->GetPrefs(),
       WebViewIdentityManagerFactory::GetForBrowserState(browser_state),
       /*client_profile_validator=*/nullptr, /*history_service=*/nullptr,
       browser_state->IsOffTheRecord());
diff --git a/ios/web_view/internal/sync/cwv_sync_controller_internal.h b/ios/web_view/internal/sync/cwv_sync_controller_internal.h
index f00b564..ae14a7c 100644
--- a/ios/web_view/internal/sync/cwv_sync_controller_internal.h
+++ b/ios/web_view/internal/sync/cwv_sync_controller_internal.h
@@ -12,6 +12,8 @@
 #include "ios/web_view/internal/signin/web_view_profile_oauth2_token_service_ios_provider_impl.h"
 #import "ios/web_view/public/cwv_sync_controller.h"
 
+NS_ASSUME_NONNULL_BEGIN
+
 namespace browser_sync {
 class ProfileSyncService;
 }  // namespace browser_sync
@@ -44,4 +46,6 @@
 
 @end
 
+NS_ASSUME_NONNULL_END
+
 #endif  // IOS_WEB_VIEW_INTERNAL_SYNC_CWV_SYNC_CONTROLLER_INTERNAL_H_
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 989ec95..6cdff5f 100644
--- a/ios/web_view/internal/sync/cwv_sync_controller_unittest.mm
+++ b/ios/web_view/internal/sync/cwv_sync_controller_unittest.mm
@@ -43,6 +43,7 @@
 
 using testing::_;
 using testing::Invoke;
+using testing::Return;
 
 class CWVSyncControllerTest : public PlatformTest {
  protected:
@@ -187,4 +188,36 @@
   }
 }
 
+// Verifies CWVSyncController properly maintains the current syncing user.
+TEST_F(CWVSyncControllerTest, CurrentIdentity) {
+  EXPECT_CALL(*profile_sync_service_, RequestStart());
+  EXPECT_CALL(*profile_sync_service_, SetFirstSetupComplete());
+  CWVIdentity* identity =
+      [[CWVIdentity alloc] initWithEmail:@"johndoe@chromium.org"
+                                fullName:@"John Doe"
+                                  gaiaID:@"1337"];
+  id unused_mock = OCMProtocolMock(@protocol(CWVSyncControllerDataSource));
+  [sync_controller_ startSyncWithIdentity:identity dataSource:unused_mock];
+  CWVIdentity* currentIdentity = sync_controller_.currentIdentity;
+  EXPECT_TRUE(currentIdentity);
+  EXPECT_NSEQ(identity.email, currentIdentity.email);
+  EXPECT_NSEQ(identity.fullName, currentIdentity.fullName);
+  EXPECT_NSEQ(identity.gaiaID, currentIdentity.gaiaID);
+
+  EXPECT_CALL(*profile_sync_service_, RequestStop(_));
+  [sync_controller_ stopSyncAndClearIdentity];
+  EXPECT_FALSE(sync_controller_.currentIdentity);
+}
+
+// Verifies CWVSyncController's passphrase API.
+TEST_F(CWVSyncControllerTest, Passphrase) {
+  EXPECT_CALL(*profile_sync_service_, IsPassphraseRequiredForDecryption())
+      .WillOnce(Return(true));
+  EXPECT_TRUE(sync_controller_.passphraseNeeded);
+  EXPECT_CALL(*profile_sync_service_,
+              SetDecryptionPassphrase("dummy-passphrase"))
+      .WillOnce(Return(true));
+  EXPECT_TRUE([sync_controller_ unlockWithPassphrase:@"dummy-passphrase"]);
+}
+
 }  // namespace ios_web_view
diff --git a/ios/web_view/internal/sync/web_view_profile_sync_service_factory.mm b/ios/web_view/internal/sync/web_view_profile_sync_service_factory.mm
index 30e2f97..2381906 100644
--- a/ios/web_view/internal/sync/web_view_profile_sync_service_factory.mm
+++ b/ios/web_view/internal/sync/web_view_profile_sync_service_factory.mm
@@ -9,6 +9,7 @@
 #include "base/memory/singleton.h"
 #include "base/time/time.h"
 #include "components/browser_sync/profile_sync_service.h"
+#include "components/invalidation/impl/profile_invalidation_provider.h"
 #include "components/keyed_service/ios/browser_state_dependency_manager.h"
 #include "components/signin/core/browser/device_id_helper.h"
 #include "components/signin/core/browser/profile_oauth2_token_service.h"
@@ -92,6 +93,10 @@
       &signin::GetSigninScopedDeviceId, browser_state->GetPrefs());
   init_params.network_connection_tracker =
       ApplicationContext::GetInstance()->GetNetworkConnectionTracker();
+  init_params.invalidations_identity_provider =
+      WebViewProfileInvalidationProviderFactory::GetForBrowserState(
+          browser_state)
+          ->GetIdentityProvider();
 
   auto profile_sync_service =
       std::make_unique<ProfileSyncService>(std::move(init_params));
diff --git a/ios/web_view/internal/sync/web_view_sync_client.mm b/ios/web_view/internal/sync/web_view_sync_client.mm
index e8e21cb..94e6723 100644
--- a/ios/web_view/internal/sync/web_view_sync_client.mm
+++ b/ios/web_view/internal/sync/web_view_sync_client.mm
@@ -48,11 +48,11 @@
 
 namespace {
 syncer::ModelTypeSet GetDisabledTypes() {
-  syncer::ModelTypeSet disabled_types = syncer::UserSelectableTypes();
-  // Don't need to sync preferences.
-  disabled_types.Put(syncer::PRIORITY_PREFERENCES);
   // Only want autofill and passwords.
-  disabled_types.Remove(syncer::AUTOFILL);
+  syncer::ModelTypeSet disabled_types = syncer::UserTypes();
+  disabled_types.Remove(syncer::AUTOFILL_PROFILE);
+  disabled_types.Remove(syncer::AUTOFILL_WALLET_DATA);
+  disabled_types.Remove(syncer::AUTOFILL_WALLET_METADATA);
   disabled_types.Remove(syncer::PASSWORDS);
   return disabled_types;
 }
@@ -168,22 +168,23 @@
 
 base::WeakPtr<syncer::SyncableService>
 WebViewSyncClient::GetSyncableServiceForType(syncer::ModelType type) {
-  if (!profile_web_data_service_) {
+  auto service = account_web_data_service_ ?: profile_web_data_service_;
+  if (!service) {
     NOTREACHED();
     return base::WeakPtr<syncer::SyncableService>();
   }
   switch (type) {
     case syncer::AUTOFILL_PROFILE:
       return autofill::AutofillProfileSyncableService::FromWebDataService(
-                 profile_web_data_service_.get())
+                 service.get())
           ->AsWeakPtr();
     case syncer::AUTOFILL_WALLET_DATA:
       return autofill::AutofillWalletSyncableService::FromWebDataService(
-                 profile_web_data_service_.get())
+                 service.get())
           ->AsWeakPtr();
     case syncer::AUTOFILL_WALLET_METADATA:
       return autofill::AutofillWalletMetadataSyncableService::
-          FromWebDataService(profile_web_data_service_.get())
+          FromWebDataService(service.get())
               ->AsWeakPtr();
     case syncer::PASSWORDS:
       return password_store_ ? password_store_->GetPasswordSyncableService()
diff --git a/media/formats/mp4/box_definitions.cc b/media/formats/mp4/box_definitions.cc
index 7876571..9c4a2202 100644
--- a/media/formats/mp4/box_definitions.cc
+++ b/media/formats/mp4/box_definitions.cc
@@ -1518,15 +1518,18 @@
     sample_composition_time_offsets.resize(sample_count);
   }
 
-  for (uint32_t i = 0; i < sample_count; ++i) {
-    if (sample_duration_present)
-      RCHECK(reader->Read4(&sample_durations[i]));
-    if (sample_size_present)
-      RCHECK(reader->Read4(&sample_sizes[i]));
-    if (sample_flags_present)
-      RCHECK(reader->Read4(&sample_flags[i]));
-    if (sample_composition_time_offsets_present)
-      RCHECK(reader->Read4s(&sample_composition_time_offsets[i]));
+  if (sample_duration_present || sample_size_present || sample_flags_present ||
+      sample_composition_time_offsets_present) {
+    for (uint32_t i = 0; i < sample_count; ++i) {
+      if (sample_duration_present)
+        RCHECK(reader->Read4(&sample_durations[i]));
+      if (sample_size_present)
+        RCHECK(reader->Read4(&sample_sizes[i]));
+      if (sample_flags_present)
+        RCHECK(reader->Read4(&sample_flags[i]));
+      if (sample_composition_time_offsets_present)
+        RCHECK(reader->Read4s(&sample_composition_time_offsets[i]));
+    }
   }
 
   if (first_sample_flags_present) {
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
index 34a733c4..e575c03 100644
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -161,12 +161,6 @@
      VaapiWrapper::CodecMode::kEncode,
      {VAProfileH264Baseline, VAProfileH264Main, VAProfileH264High,
       VAProfileH264ConstrainedBaseline}},
-    // TODO(hiroh): Remove once Chrome supports converting format.
-    // https://crbug.com/828119.
-    {"Mesa Gallium driver",
-     "AMD STONEY",
-     VaapiWrapper::CodecMode::kDecode,
-     {VAProfileJPEGBaseline}},
 };
 
 bool IsBlackListedDriver(const std::string& va_vendor_string,
diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc
index 1dc14e465..8dff5df 100644
--- a/net/quic/quic_chromium_client_session.cc
+++ b/net/quic/quic_chromium_client_session.cc
@@ -801,7 +801,6 @@
   if (connection()->connected()) {
     // Ensure that the connection is closed by the time the session is
     // destroyed.
-    RecordInternalErrorLocation(quic::QUIC_CHROMIUM_CLIENT_SESSION_DESTRUCTOR);
     connection()->CloseConnection(quic::QUIC_INTERNAL_ERROR,
                                   "session torn down",
                                   quic::ConnectionCloseBehavior::SILENT_CLOSE);
@@ -2147,10 +2146,6 @@
     quic::QuicErrorCode quic_error,
     quic::ConnectionCloseBehavior behavior) {
   base::UmaHistogramSparse("Net.QuicSession.CloseSessionOnError", -net_error);
-  if (quic_error == quic::QUIC_INTERNAL_ERROR) {
-    RecordInternalErrorLocation(
-        quic::QUIC_CHROMIUM_CLIENT_SESSION_CLOSE_SESSION_ON_ERROR);
-  }
 
   if (!callback_.is_null()) {
     base::ResetAndReturn(&callback_).Run(net_error);
diff --git a/net/third_party/quic/core/http/quic_headers_stream.cc b/net/third_party/quic/core/http/quic_headers_stream.cc
index 45288ef..104c461 100644
--- a/net/third_party/quic/core/http/quic_headers_stream.cc
+++ b/net/third_party/quic/core/http/quic_headers_stream.cc
@@ -80,7 +80,6 @@
       if (header.unacked_length < header_length) {
         QUIC_BUG << "Unsent stream data is acked. unacked_length: "
                  << header.unacked_length << " acked_length: " << header_length;
-        RecordInternalErrorLocation(QUIC_HEADERS_STREAM);
         CloseConnectionWithDetails(QUIC_INTERNAL_ERROR,
                                    "Unsent stream data is acked");
         return false;
diff --git a/net/third_party/quic/core/http/quic_spdy_session.cc b/net/third_party/quic/core/http/quic_spdy_session.cc
index 0f8ec129..0dcbb01 100644
--- a/net/third_party/quic/core/http/quic_spdy_session.cc
+++ b/net/third_party/quic/core/http/quic_spdy_session.cc
@@ -514,7 +514,6 @@
                                           const QuicHeaderList& header_list) {
   QuicString error = "OnPromiseHeaderList should be overridden in client code.";
   QUIC_BUG << error;
-  RecordInternalErrorLocation(QUIC_SPDY_SESSION);
   connection()->CloseConnection(QUIC_INTERNAL_ERROR, error,
                                 ConnectionCloseBehavior::SILENT_CLOSE);
 }
diff --git a/net/third_party/quic/core/quic_connection.cc b/net/third_party/quic/core/quic_connection.cc
index d5f0f02..b25f0923 100644
--- a/net/third_party/quic/core/quic_connection.cc
+++ b/net/third_party/quic/core/quic_connection.cc
@@ -547,7 +547,6 @@
     QUIC_BUG << ENDPOINT << error_details;
     TearDownLocalConnectionState(QUIC_INTERNAL_ERROR, error_details,
                                  ConnectionCloseSource::FROM_SELF);
-    RecordInternalErrorLocation(QUIC_CONNECTION_PROTOCOL_VERSION_MISMATCH);
     return false;
   }
   DCHECK_NE(version(), received_version);
@@ -615,7 +614,6 @@
     QUIC_BUG << error_details;
     TearDownLocalConnectionState(QUIC_INTERNAL_ERROR, error_details,
                                  ConnectionCloseSource::FROM_SELF);
-    RecordInternalErrorLocation(QUIC_CONNECTION_VERSION_NEGOTIATION_PACKET);
     return;
   }
   if (debug_visitor_ != nullptr) {
@@ -698,7 +696,6 @@
     QUIC_BUG << error_details << ", received header: " << header;
     CloseConnection(QUIC_INTERNAL_ERROR, error_details,
                     ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
-    RecordInternalErrorLocation(QUIC_CONNECTION_UNAUTHENTICATED_HEADER);
     return false;
   }
 
@@ -2046,7 +2043,6 @@
                               queued_packets_.size());
     CloseConnection(QUIC_INTERNAL_ERROR, "Packet written out of order.",
                     ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
-    RecordInternalErrorLocation(QUIC_CONNECTION_WRITE_PACKET);
     return true;
   }
   // Termination packets are encrypted and saved, so don't exit early.
diff --git a/net/third_party/quic/core/quic_control_frame_manager.cc b/net/third_party/quic/core/quic_control_frame_manager.cc
index db954a2..f9ac03c5 100644
--- a/net/third_party/quic/core/quic_control_frame_manager.cc
+++ b/net/third_party/quic/core/quic_control_frame_manager.cc
@@ -123,7 +123,6 @@
     session_->connection()->CloseConnection(
         QUIC_INTERNAL_ERROR, "Try to send control frames out of order",
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
-    RecordInternalErrorLocation(QUIC_CONTROL_FRAME_MANAGER_CONTROL_FRAME_SENT);
     return;
   }
   ++least_unsent_;
@@ -156,7 +155,6 @@
     session_->connection()->CloseConnection(
         QUIC_INTERNAL_ERROR, "Try to mark unsent control frame as lost",
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
-    RecordInternalErrorLocation(QUIC_CONTROL_FRAME_MANAGER_CONTROL_FRAME_LOST);
     return;
   }
   if (id < least_unacked_ ||
@@ -220,8 +218,6 @@
     session_->connection()->CloseConnection(
         QUIC_INTERNAL_ERROR, "Try to retransmit unsent control frame",
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
-    RecordInternalErrorLocation(
-        QUIC_CONTROL_FRAME_MANAGER_RETRANSMIT_CONTROL_FRAME);
     return false;
   }
   if (id < least_unacked_ ||
diff --git a/net/third_party/quic/core/quic_crypto_client_handshaker.cc b/net/third_party/quic/core/quic_crypto_client_handshaker.cc
index cc5ec255..f1b69c2f 100644
--- a/net/third_party/quic/core/quic_crypto_client_handshaker.cc
+++ b/net/third_party/quic/core/quic_crypto_client_handshaker.cc
@@ -328,14 +328,12 @@
     if (max_packet_size <= kFramingOverhead) {
       QUIC_DLOG(DFATAL) << "max_packet_length (" << max_packet_size
                         << ") has no room for framing overhead.";
-      RecordInternalErrorLocation(QUIC_CRYPTO_CLIENT_HANDSHAKER_MAX_PACKET);
       stream_->CloseConnectionWithDetails(QUIC_INTERNAL_ERROR,
                                           "max_packet_size too smalll");
       return;
     }
     if (kClientHelloMinimumSize > max_packet_size - kFramingOverhead) {
       QUIC_DLOG(DFATAL) << "Client hello won't fit in a single packet.";
-      RecordInternalErrorLocation(QUIC_CRYPTO_CLIENT_HANDSHAKER_CHLO);
       stream_->CloseConnectionWithDetails(QUIC_INTERNAL_ERROR,
                                           "CHLO too large");
       return;
diff --git a/net/third_party/quic/core/quic_error_codes.cc b/net/third_party/quic/core/quic_error_codes.cc
index 9b5db05a..ff57c43 100644
--- a/net/third_party/quic/core/quic_error_codes.cc
+++ b/net/third_party/quic/core/quic_error_codes.cc
@@ -4,8 +4,6 @@
 
 #include "net/third_party/quic/core/quic_error_codes.h"
 
-#include "base/metrics/histogram_macros.h"
-
 namespace quic {
 
 #define RETURN_STRING_LITERAL(x) \
@@ -163,10 +161,5 @@
   return "INVALID_ERROR_CODE";
 }
 
-void RecordInternalErrorLocation(QuicInternalErrorLocation location) {
-  UMA_HISTOGRAM_ENUMERATION("Net.QuicSession.InternalErrorLocation", location,
-                            INTERNAL_ERROR_LOCATION_MAX);
-}
-
 #undef RETURN_STRING_LITERAL  // undef for jumbo builds
 }  // namespace quic
diff --git a/net/third_party/quic/core/quic_error_codes.h b/net/third_party/quic/core/quic_error_codes.h
index 124078e0..c0283f4 100644
--- a/net/third_party/quic/core/quic_error_codes.h
+++ b/net/third_party/quic/core/quic_error_codes.h
@@ -329,42 +329,6 @@
 // Returns the name of the QuicErrorCode as a char*
 QUIC_EXPORT const char* QuicErrorCodeToString(QuicErrorCode error);
 
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-// TODO(rch): Remove this once the cause of the INTERNAL_ERROR increase is
-// determined.
-enum QuicInternalErrorLocation {
-  QUIC_CHROMIUM_CLIENT_SESSION_DESTRUCTOR = 0,
-  QUIC_CONNECTION_PROTOCOL_VERSION_MISMATCH = 1,
-  QUIC_CONNECTION_VERSION_NEGOTIATION_PACKET = 2,
-  QUIC_CONNECTION_UNAUTHENTICATED_HEADER = 3,
-  QUIC_CONNECTION_WRITE_PACKET = 4,
-  QUIC_CONTROL_FRAME_MANAGER_CONTROL_FRAME_SENT = 5,
-  QUIC_CONTROL_FRAME_MANAGER_CONTROL_FRAME_ACKED = 6,
-  QUIC_CONTROL_FRAME_MANAGER_CONTROL_FRAME_LOST = 7,
-  QUIC_CONTROL_FRAME_MANAGER_RETRANSMIT_CONTROL_FRAME = 8,
-  QUIC_CRYPTO_CLIENT_HANDSHAKER_MAX_PACKET = 9,
-  QUIC_CRYPTO_CLIENT_HANDSHAKER_CHLO = 10,
-  QUIC_ERROR_CODES = 11,
-  QUIC_FRAMER = 12,
-  QUIC_HEADERS_STREAM = 13,
-  QUIC_SESSION_ON_CAN_WRITE = 14,
-  QUIC_SESSION_WRITEV_DATA = 15,
-  QUIC_SESSION_STREAM_FRAME_RETRANSMITTED = 16,
-  QUIC_SPDY_SESSION = 17,
-  QUIC_STREAM_ACKED_UNSENT_DATA = 18,
-  QUIC_STREAM_ACKED_UNSENT_FIN = 19,
-  QUIC_STREAM_SEQUENCER_BUFFER = 20,
-  QUIC_CHROMIUM_CLIENT_SESSION_CLOSE_SESSION_ON_ERROR = 21,
-  INTERNAL_ERROR_LOCATION_MAX
-};
-
-// Records the location of a QUIC internal error into a histogram.
-// TODO(rch): Remove this once the cause of the INTERNAL_ERROR increase is
-// determined.
-QUIC_EXPORT_PRIVATE
-void RecordInternalErrorLocation(QuicInternalErrorLocation location);
-
 }  // namespace quic
 
 #endif  // NET_THIRD_PARTY_QUIC_CORE_QUIC_ERROR_CODES_H_
diff --git a/net/third_party/quic/core/quic_framer.cc b/net/third_party/quic/core/quic_framer.cc
index a7febfe..db71600 100644
--- a/net/third_party/quic/core/quic_framer.cc
+++ b/net/third_party/quic/core/quic_framer.cc
@@ -582,7 +582,6 @@
              << free_bytes << " first_frame:" << first_frame
              << " last_frame:" << last_frame
              << " seq num length:" << packet_number_length;
-    RecordInternalErrorLocation(QUIC_FRAMER);
     set_error(QUIC_INTERNAL_ERROR);
     visitor_->OnError(this);
     return 0;
diff --git a/net/third_party/quic/core/quic_session.cc b/net/third_party/quic/core/quic_session.cc
index e4d7450..676bdca 100644
--- a/net/third_party/quic/core/quic_session.cc
+++ b/net/third_party/quic/core/quic_session.cc
@@ -362,7 +362,6 @@
           write_blocked_streams_.HasWriteBlockedDataStreams())) {
       // Writing one stream removed another!? Something's broken.
       QUIC_BUG << "WriteBlockedStream is missing";
-      RecordInternalErrorLocation(QUIC_SESSION_ON_CAN_WRITE);
       connection_->CloseConnection(QUIC_INTERNAL_ERROR,
                                    "WriteBlockedStream is missing",
                                    ConnectionCloseBehavior::SILENT_CLOSE);
@@ -432,7 +431,6 @@
   // seems like a reasonable mitigation.
   if (id == kCryptoStreamId && stream != GetMutableCryptoStream()) {
     QUIC_BUG << "Stream id mismatch";
-    RecordInternalErrorLocation(QUIC_SESSION_WRITEV_DATA);
     connection_->CloseConnection(
         QUIC_INTERNAL_ERROR,
         "Non-crypto stream attempted to write data as crypto stream.",
@@ -1143,7 +1141,6 @@
   if (stream == nullptr) {
     QUIC_BUG << "Stream: " << frame.stream_id << " is closed when " << frame
              << " is retransmitted.";
-    RecordInternalErrorLocation(QUIC_SESSION_STREAM_FRAME_RETRANSMITTED);
     connection()->CloseConnection(
         QUIC_INTERNAL_ERROR, "Attempt to retransmit frame of a closed stream",
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
diff --git a/net/third_party/quic/core/quic_stream.cc b/net/third_party/quic/core/quic_stream.cc
index 64a015e..70bf01e 100644
--- a/net/third_party/quic/core/quic_stream.cc
+++ b/net/third_party/quic/core/quic_stream.cc
@@ -627,13 +627,11 @@
   QuicByteCount newly_acked_length = 0;
   if (!send_buffer_.OnStreamDataAcked(offset, data_length,
                                       &newly_acked_length)) {
-    RecordInternalErrorLocation(QUIC_STREAM_ACKED_UNSENT_DATA);
     CloseConnectionWithDetails(QUIC_INTERNAL_ERROR,
                                "Trying to ack unsent data.");
     return false;
   }
   if (!fin_sent_ && fin_acked) {
-    RecordInternalErrorLocation(QUIC_STREAM_ACKED_UNSENT_FIN);
     CloseConnectionWithDetails(QUIC_INTERNAL_ERROR,
                                "Trying to ack unsent fin.");
     return false;
diff --git a/net/third_party/quic/core/quic_stream_sequencer_buffer.cc b/net/third_party/quic/core/quic_stream_sequencer_buffer.cc
index e1549ae..7745acf 100644
--- a/net/third_party/quic/core/quic_stream_sequencer_buffer.cc
+++ b/net/third_party/quic/core/quic_stream_sequencer_buffer.cc
@@ -80,7 +80,6 @@
   if (starting_offset + size > total_bytes_read_ + max_buffer_capacity_bytes_ ||
       starting_offset + size < starting_offset) {
     *error_details = "Received data beyond available range.";
-    RecordInternalErrorLocation(QUIC_STREAM_SEQUENCER_BUFFER);
     return QUIC_INTERNAL_ERROR;
   }
   if (bytes_received_.Empty() ||
diff --git a/pdf/pdfium/fuzzers/BUILD.gn b/pdf/pdfium/fuzzers/BUILD.gn
index 124139e..4aa6514 100644
--- a/pdf/pdfium/fuzzers/BUILD.gn
+++ b/pdf/pdfium/fuzzers/BUILD.gn
@@ -65,10 +65,6 @@
   ]
   dict = "dicts/pdf.dict"
   seed_corpus = "//third_party/pdfium/testing/resources"
-  deps += [
-    "//third_party/pdfium",
-    "//third_party/pdfium:test_support",
-  ]
 }
 
 fuzzer_test("pdf_cmap_fuzzer") {
diff --git a/styleguide/web/es6.md b/styleguide/web/es6.md
index fbe24fc0..f3396dc6 100644
--- a/styleguide/web/es6.md
+++ b/styleguide/web/es6.md
@@ -14,7 +14,7 @@
 hyphen-hyphen-hyphen (change to actual hyphen)
 -->
 
-<style type="text/css">
+<style>
   .doc {
     font-size: 16px;
   }
@@ -58,12 +58,12 @@
 document.addEventListener('DOMContentLoaded', function(event) {
   // Move all headers and corresponding contents to an accordion container.
   document.querySelectorAll('h2[id]').forEach(function(header) {
-    var container = document.createElement('div');
+    const container = document.createElement('div');
     container.classList.add('feature-container');
     header.parentNode.insertBefore(container, header);
 
     // Add all the following siblings until it hits an <hr>.
-    var el = header;
+    let el = header;
     while (el && el.tagName !== 'HR') {
       var nextEl = el.nextElementSibling;
       container.append(el);
@@ -85,12 +85,13 @@
 
 [TOC]
 
-# ES6 Support In Chromium
+# ES2015 Support In Chromium
 
-This is a list of [ECMAScript6](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla)
+This is a list of [ECMAScript 6 a.k.a.
+ES2015](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla)
 features allowed in Chromium code.
 
-This is **not** a status list of [v8](https://developers.google.com/v8/)'s
+This is **not** a status list of [V8](https://developers.google.com/v8/)'s
 support for language features.
 
 > **TBD:** Do we need to differentiate per-project?
@@ -103,8 +104,9 @@
 previous discussion. If the list arrives at some consensus, send a codereview
 to change this file accordingly, linking to your discussion thread.
 
-> Some descriptions and Usage examples are from [kangax](https://kangax.github.io/compat-table/es6/)
-and [http://es6-features.org/](http://es6-features.org/)
+> Some descriptions and usage examples were taken from
+> [kangax](https://kangax.github.io/compat-table/es6/)
+> and [http://es6-features.org/](http://es6-features.org/)
 
 # Allowed Features
 
@@ -139,12 +141,12 @@
 () => {return 1;}  // returns 1.
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-arrow-function-definitions)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-arrow-function-definitions)
 
 **Discussion Notes / Link to Thread:**
 
 **Note**: => does not work in iOS9.  Don't use it in code that runs on Chrome for
-iOS.  There's a presubmit that should warn you about this.
+iOS.  There's a presubmit check that should warn you about this.
 
 [Discussion thread](https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/iJrC4PVSfoU)
 
@@ -159,7 +161,7 @@
 
 ```js
 /** @type {!Promise} */
-var fullyLoaded = new Promise(function(resolve) {
+const fullyLoaded = new Promise(function(resolve) {
   function isLoaded() { return document.readyState == 'complete'; }
 
   if (isLoaded()) {
@@ -175,7 +177,7 @@
 fullyLoaded.then(startTheApp).then(maybeShowFirstRun);
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-promise-objects)
 [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
 
 **Discussion Notes:** Feature already extensively used prior to creation of
@@ -197,7 +199,7 @@
     this.y = y;
   }
 }
-// Note: let Shape = class {...}; is also valid.
+// Note: const Shape = class {...}; is also valid.
 
 class Rectangle extends Shape {
   constructor(x, y, width, height) {
@@ -207,13 +209,13 @@
   }
 
   static goldenRectangle() {
-    var PHI = (1 + Math.sqrt(5)) / 2;
+    const PHI = (1 + Math.sqrt(5)) / 2;
     return new Rectangle(0, 0, PHI, 1);
   }
 }
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-class-definitions)
 
 **Discussion Notes / Link to Thread:**
 https://groups.google.com/a/chromium.org/d/msg/chromium-dev/S1h-0m2ohOw/jyaiMGDlCwAJ
@@ -232,11 +234,11 @@
 **Usage Example:**
 
 ```js
-var map = new Map();
+const map = new Map();
 map.size === 0;  // true
 map.get('foo');  // undefined
 
-var key = 54;
+const key = 54;
 map.set(key, 123);
 map.size === 1;  // true
 map.has(key);  // true
@@ -247,7 +249,7 @@
 map.size === 0;  // true
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-map-objects)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-map-objects)
 [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
 
 **Discussion Notes:** Feature already extensively used prior to creation of
@@ -263,7 +265,7 @@
 **Usage Example:**
 
 ```js
-var set = new Set();
+const set = new Set();
 
 set.add(123);
 set.size();  // 1
@@ -273,7 +275,7 @@
 set.size();  // 1
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-set-objects)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-set-objects)
 [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)
 
 **Discussion Notes:** Feature already extensively used prior to creation of
@@ -281,15 +283,46 @@
 
 ---
 
-## let (Block-Scoped Variables)
+## const (Block-Scoped Constants)
 
-`let` declares a variable within the scope of a block.  This differs from `var`,
-which uses function level scope.
+Constants (also known as "immutable variables") are variables which cannot be
+re-assigned new content. Note that if the value is an object, the object itself
+is still mutable.
+
+`const` is block-scoped, just like `let`.
 
 **Usage Example:**
 
 ```js
-// Scope.
+const gravity = 9.81;
+gravity = 0;  // TypeError: Assignment to constant variable.
+gravity === 9.81;  // true
+
+const frobber = {isFrobbing: true};
+frobber = {isFrobbing: false};  // TypeError: Assignment to constant variable.
+frobber.isFrobbing = false;  // Works.
+```
+
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-let-and-const-declarations)
+
+**See also:** [Object.freeze()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
+
+**Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/MJhTok8Usr8/XCrkisaBBQAJ)
+
+**Note**: `const` [not fully supported](https://caniuse.com/#feat=let) in iOS9.
+Don't use it in code that runs on Chrome for iOS, until support for iOS9 is
+dropped.
+
+---
+
+## let (Block-Scoped Variables)
+
+`let` declares a variable within the scope of a block, like `const`.
+This differs from `var`, which uses function-level scope.
+
+**Usage Example:**
+
+```js
 function varTest() {
   var x = 1;
   if (true) {
@@ -318,7 +351,7 @@
 }
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-let-and-const-declarations)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-let-and-const-declarations)
 
 **Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/MJhTok8Usr8/XCrkisaBBQAJ)
 
@@ -328,46 +361,14 @@
 
 ---
 
-## const (Block-Scoped Constants)
-
-Constants (also known as "immutable variables") are variables which cannot be
-re-assigned new content. Note that if the value is an object, the object itself
-is still mutable.
-
-Also note that in Chrome, `const` is block scoped like `let`.
-
-**Usage Example:**
-
-```js
-const gravity = 9.81;
-gravity = 0;  // TypeError: Assignment to constant variable.
-gravity === 9.81;  // true
-
-const frobber = {isFrobbing: true};
-frobber = {isFrobbing: false};  // TypeError: Assignment to constant variable.
-frobber.isFrobbing = false;  // Works.
-```
-
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-let-and-const-declarations)
-
-**See also:** [Object.freeze()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
-
-**Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/MJhTok8Usr8/XCrkisaBBQAJ)
-
-**Note**: `const` [not fully supported](https://caniuse.com/#feat=let) in iOS9.
-Don't use it in code that runs on Chrome for iOS, until support for iOS9 is
-dropped.
-
----
-
 ## Array Static & Prototype Methods
 
 **Usage Example:**
 
 ```js
 // Static methods
-let a1 = Array.from(document.querySelectorAll('div'));
-let a2 = Array.of(7);
+const a1 = Array.from(document.querySelectorAll('div'));
+const a2 = Array.of(7);
 
 // Prototype methods
 ['a', 'b', 'c', 'd'].copyWithin(2, 0);  // Returns ['a', 'b', 'a', 'b']
@@ -379,12 +380,10 @@
 [2, 4, 6, 8].entries();  // Returns an Array iterator
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-properties-of-the-array-constructor)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-properties-of-the-array-constructor)
 
 **Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/d_2zUYQZJTg/-_PSji_OAQAJ)
 
-**Note**: `Array.prototype.values` is [not implemented in Chrome](https://kangax.github.io/compat-table/es6/#test-Array.prototype_methods) and should not be used. If the code in question is Closure compiled, a compile-time error will be thrown.
-
 ---
 
 ## Number Properties
@@ -401,7 +400,7 @@
 // Number.MAX_SAFE_INTEGER
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-isfinite-number)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-isfinite-number)
 
 **Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/d_2zUYQZJTg/-_PSji_OAQAJ)
 
@@ -426,7 +425,7 @@
 
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-properties-of-the-object-constructor)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-properties-of-the-object-constructor)
 
 **Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/d_2zUYQZJTg/-_PSji_OAQAJ)
 
@@ -435,19 +434,19 @@
 ## for...of Loops
 
 Convenient operator to iterate over all values in an iterable collection. This
-differs from `for ...in`, which iterates over all enumerable properties of an
+differs from `for...in`, which iterates over all enumerable properties of an
 object.
 
 **Usage Example:**
 
 ```js
 // Given an iterable collection of Fibonacci numbers...
-for (let n of fibonacci) {
+for (const n of fibonacci) {
   console.log(n);  // 1, 1, 2, 3, ...
 }
 ```
 
-**Documentation:** [link1](http://www.ecma-international.org/ecma-262/6.0/#sec-for-in-and-for-of-statements)
+**Documentation:** [link1](https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements)
 [link2](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of)
 
 **Discussion Notes / Link to Thread:** [link](https://groups.google.com/a/chromium.org/d/msg/chromium-dev/d_2zUYQZJTg/-_PSji_OAQAJ)
@@ -463,17 +462,17 @@
 
 ```js
 // Simple example
-let greeting = 'hello';
-let myName = {first: 'Foo', last: 'Bar'};
-let from = 1900;
-let to = 2000;
+const greeting = 'hello';
+const myName = {first: 'Foo', last: 'Bar'};
+const from = 1900;
+const to = 2000;
 
 var message = `${greeting}, I am ${myName.first}${myName.last},
 and I am ${to - from} years old`;
 // message == 'hello,\nI am FooBar,\nand I am 100 years old'
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-template-literals)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-template-literals)
 
 **Discussion Notes / Link to Thread:**
 
@@ -509,7 +508,7 @@
 }
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-functiondeclarationinstantiation)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-functiondeclarationinstantiation)
 
 **Discussion Notes / Link to Thread:**
 
@@ -539,7 +538,7 @@
 hide(document.body, false);  // Not animated.
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-functiondeclarationinstantiation)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-functiondeclarationinstantiation)
 [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters)
 
 **Discussion Notes / Link to Thread:**
@@ -562,7 +561,7 @@
 usesRestParams('a', 'b', 1, 2, 3);
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-function-definitions)
 
 **Discussion Notes / Link to Thread:**
 
@@ -577,15 +576,15 @@
 
 ```js
 // Spreading an Array
-var params = ['hello', true, 7];
-var other = [1, 2, ...params];  // [1, 2, 'hello', true, 7]
+const params = ['hello', true, 7];
+const other = [1, 2, ...params];  // [1, 2, 'hello', true, 7]
 
 // Spreading a String
-var str = 'foo';
-var chars = [...str];  // ['f', 'o', 'o']
+const str = 'foo';
+const chars = [...str];  // ['f', 'o', 'o']
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-argument-lists-runtime-semantics-argumentlistevaluation)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-argument-lists-runtime-semantics-argumentlistevaluation)
 
 **Discussion Notes / Link to Thread:**
 
@@ -599,21 +598,21 @@
 
 ```js
 // Computed property name
-var prop = 'foo';
-var o = {
+const prop = 'foo';
+const o = {
   [prop]: 'hey',
   ['b' + 'ar']: 'there',
 };
 console.log(o);  // {foo: 'hey', bar: 'there'}
 
 // Shorthand property
-var foo = 1;
-var bar = 2;
-var o = {foo, bar};
+const foo = 1;
+const bar = 2;
+const o = {foo, bar};
 console.log(o);  // {foo: 1, bar: 2}
 
 // Method property
-var clearSky = {
+const clearSky = {
   // Basically the same as clouds: function() { return 0; }.
   clouds() { return 0; },
   color() { return 'blue'; },
@@ -622,7 +621,7 @@
 console.log(clearSky.clouds());  // 0
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-object-initialiser)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-object-initialiser)
 [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer)
 
 **Discussion Notes / Link to Thread:**
@@ -638,7 +637,7 @@
 0o767 === 503;
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-literals-numeric-literals)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-literals-numeric-literals)
 
 **Discussion Notes / Link to Thread:**
 
@@ -652,7 +651,7 @@
 '𠮷'.match(/./u)[0].length === 2;
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-get-regexp.prototype.sticky)
+**Documentation:** [link](https://mathiasbynens.be/notes/es6-unicode-regex)
 
 **Discussion Notes / Link to Thread:**
 
@@ -666,7 +665,7 @@
 '\u{1d306}' == '\ud834\udf06';  // true
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-literals-string-literals)
+**Documentation:** [link](https://mathiasbynens.be/notes/javascript-unicode#escape-sequences)
 
 **Discussion Notes / Link to Thread:**
 
@@ -701,10 +700,10 @@
 
 ```js
 // Array
-var [a, , b] = [1, 2, 3];  // a = 1, b = 3
+const [a, , b] = [1, 2, 3];  // a = 1, b = 3
 
 // Object
-var {width, height} = document.body.getBoundingClientRect();
+const {width, height} = document.body.getBoundingClientRect();
 // width = rect.width, height = rect.height
 
 // Parameters
@@ -725,7 +724,7 @@
 
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-destructuring-assignment)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-destructuring-assignment)
 
 **Discussion Notes / Link to Thread:**
 
@@ -744,11 +743,10 @@
 export {width, height, unimportant};
 
 // app.js
-import {getArea, width, height} from 'lib/rect';
-
+import {getArea, width, height} from './lib/rect.js';
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-modules)
+**Documentation:** [link](https://developers.google.com/web/fundamentals/primers/modules)
 
 **Discussion Notes / Link to Thread:**
 
@@ -766,7 +764,7 @@
 const bar = Symbol();
 typeof foo === 'symbol';  // true
 typeof bar === 'symbol';  // true
-let obj = {};
+const obj = {};
 obj[foo] = 'foo';
 obj[bar] = 'bar';
 JSON.stringify(obj);  // {}
@@ -775,7 +773,7 @@
 Object.getOwnPropertySymbols(obj);  // [foo, bar]
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-symbol-constructor)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-symbol-constructor)
 
 **Discussion Notes / Link to Thread:**
 
@@ -797,7 +795,7 @@
 // String.prototype.includes
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-constructor)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-properties-of-the-string-constructor)
 
 **Discussion Notes / Link to Thread:**
 
@@ -808,7 +806,7 @@
 **Usage Example:**
 
 ```js
-let fibonacci = {
+const fibonacci = {
   [Symbol.iterator]() {
     let pre = 0, cur = 1;
     return {
@@ -841,13 +839,13 @@
   }
 }
 
-for (let i of range(0, 10, 2)) {
+for (const i of range(0, 10, 2)) {
   console.log(i);  // 0, 2, 4, 6, 8
 }
 
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-generator-function-definitions)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-generator-function-definitions)
 
 **Discussion Notes / Link to Thread:**
 
@@ -861,15 +859,15 @@
 **Usage Example:**
 
 ```js
-var key = {};
-var weakmap = new WeakMap();
+const key = {};
+const weakmap = new WeakMap();
 
 weakmap.set(key, 123);
 
 weakmap.has(key) && weakmap.get(key) === 123;  // true
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-weakmap-objects)
 
 **Discussion Notes / Link to Thread:**
 
@@ -883,8 +881,8 @@
 **Usage Example:**
 
 ```js
-var obj1 = {};
-var weakset = new WeakSet();
+const obj1 = {};
+const weakset = new WeakSet();
 
 weakset.add(obj1);
 weakset.add(obj1);
@@ -892,7 +890,7 @@
 weakset.has(obj1);  // true
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-weakset-objects)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-weakset-objects)
 
 **Discussion Notes / Link to Thread:**
 
@@ -911,7 +909,7 @@
 // ... You get the idea. Click on the Documentation link below to see all.
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-typedarray-objects)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-typedarray-objects)
 
 **Discussion Notes / Link to Thread:**
 
@@ -924,7 +922,7 @@
 **Usage Example:**
 
 ```js
-var keyTracker = new Proxy({}, {
+const keyTracker = new Proxy({}, {
   keysCreated: 0,
 
   get (receiver, key) {
@@ -943,7 +941,7 @@
 keyTracker.key2;  // '2 keys created!'
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-proxy-object-internal-methods-and-internal-slots)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots)
 
 **Discussion Notes / Link to Thread:**
 
@@ -956,13 +954,13 @@
 **Usage Example:**
 
 ```js
-let obj = {a: 1};
+const obj = {a: 1};
 Object.defineProperty(obj, 'b', {value: 2});
 obj[Symbol('c')] = 3;
 Reflect.ownKeys(obj);  // ['a', 'b', Symbol(c)]
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-reflection)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-reflection)
 
 **Discussion Notes / Link to Thread:**
 
@@ -978,7 +976,7 @@
 // See Doc
 ```
 
-**Documentation:** [link](http://www.ecma-international.org/ecma-262/6.0/#sec-math)
+**Documentation:** [link](https://tc39.github.io/ecma262/#sec-math)
 
 **Discussion Notes / Link to Thread:**
 
diff --git a/testing/buildbot/filters/chromeos.single_process_mash.ash_unittests.filter b/testing/buildbot/filters/chromeos.single_process_mash.ash_unittests.filter
index b5168a9..2f2f32b 100644
--- a/testing/buildbot/filters/chromeos.single_process_mash.ash_unittests.filter
+++ b/testing/buildbot/filters/chromeos.single_process_mash.ash_unittests.filter
@@ -43,4 +43,6 @@
 -VirtualKeyboardRootWindowControllerTest.ZOrderTest
 -VirtualKeyboardTest.EventsAreHandledBasedOnHitTestBounds
 -VirtualKeyboardTest.HitTestBoundsAreResetWhenContainerTypeChanges
+-WindowSelectorControllerTest.ToggleOverviewModeHidesVirtualKeyboard
+-WindowSelectorControllerTest.ToggleOverviewModeDoesNotHideLockedVirtualKeyboard
 -WorkspaceLayoutManagerKeyboardTest.IgnoreWorkAreaChangeinNonStickyMode
diff --git a/testing/buildbot/filters/mojo.fyi.chromeos.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.chromeos.network_browser_tests.filter
index e387f32..999bedf 100644
--- a/testing/buildbot/filters/mojo.fyi.chromeos.network_browser_tests.filter
+++ b/testing/buildbot/filters/mojo.fyi.chromeos.network_browser_tests.filter
@@ -19,7 +19,7 @@
 -DeviceIDTest.Migration
 -DeviceIDTest.NewUsers
 -LoginPolicyTestBase.AllowedInputMethods
--LoginPolicyTestBase.AllowedLanguages
+-LoginPolicyTestBase.AllowedUILocales
 -MergeSessionTest.PageThrottle
 -MergeSessionTest.XHRThrottle
 -OAuth2Test.SetInvalidTokenStatus
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-embedded-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-embedded-expected.txt
index 52e62f7..d109dc5 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-embedded-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-embedded-expected.txt
@@ -23,29 +23,29 @@
 PASS img.width: 9 tests
 PASS img.height: 9 tests
 PASS img.referrerPolicy: 27 tests
-NOTRUN test
+FAIL img.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS img.referrerPolicy: 3 tests
-NOTRUN test
+FAIL img.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS img.referrerPolicy: 5 tests
-NOTRUN test
+FAIL img.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS img.referrerPolicy: 3 tests
-NOTRUN test
+FAIL img.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS img.referrerPolicy: 5 tests
-NOTRUN test
+FAIL img.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS img.referrerPolicy: 3 tests
-NOTRUN test
+FAIL img.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS img.referrerPolicy: 30 tests
-NOTRUN test
+FAIL img.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS img.referrerPolicy: 3 tests
-NOTRUN test
+FAIL img.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS img.referrerPolicy: 5 tests
-NOTRUN test
+FAIL img.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS img.referrerPolicy: 3 tests
-NOTRUN test
+FAIL img.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS img.referrerPolicy: 5 tests
-NOTRUN test
+FAIL img.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS img.referrerPolicy: 3 tests
-NOTRUN test
+FAIL img.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS img.referrerPolicy: 5 tests
 PASS img.decoding: 60 tests
 PASS img.name: 32 tests
@@ -66,97 +66,97 @@
 PASS iframe.srcdoc: 32 tests
 PASS iframe.name: 32 tests
 PASS iframe.allowFullscreen: 33 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL iframe.allowUserMedia: typeof IDL attribute assert_equals: expected "boolean" but got "undefined"
+FAIL iframe.allowUserMedia: IDL get with DOM attribute unset assert_equals: expected (boolean) false but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to "" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to " foo " assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to undefined assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to null assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to 7 assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to 1.5 assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to true assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to false assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to object "[object Object]" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to NaN assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to Infinity assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to -Infinity assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to "\0" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to object "test-toString" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: setAttribute() to "allowUserMedia" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL iframe.allowUserMedia: IDL set to "" assert_equals: hasAttribute() expected false but got true
+FAIL iframe.allowUserMedia: IDL set to " foo " assert_equals: IDL get expected (boolean) true but got (string) " foo "
+FAIL iframe.allowUserMedia: IDL set to undefined assert_equals: hasAttribute() expected false but got true
+FAIL iframe.allowUserMedia: IDL set to null assert_equals: hasAttribute() expected false but got true
+FAIL iframe.allowUserMedia: IDL set to 7 assert_equals: IDL get expected (boolean) true but got (number) 7
+FAIL iframe.allowUserMedia: IDL set to 1.5 assert_equals: IDL get expected (boolean) true but got (number) 1.5
+PASS iframe.allowUserMedia: IDL set to true
+FAIL iframe.allowUserMedia: IDL set to false assert_equals: hasAttribute() expected false but got true
+FAIL iframe.allowUserMedia: IDL set to object "[object Object]" assert_equals: IDL get expected (boolean) true but got (object) object "[object Object]"
+FAIL iframe.allowUserMedia: IDL set to NaN assert_equals: hasAttribute() expected false but got true
+FAIL iframe.allowUserMedia: IDL set to Infinity assert_equals: IDL get expected (boolean) true but got (number) Infinity
+FAIL iframe.allowUserMedia: IDL set to -Infinity assert_equals: IDL get expected (boolean) true but got (number) -Infinity
+FAIL iframe.allowUserMedia: IDL set to "\0" assert_equals: IDL get expected (boolean) true but got (string) "\0"
+FAIL iframe.allowUserMedia: IDL set to object "test-toString" assert_equals: IDL get expected (boolean) true but got (object) object "test-toString"
+FAIL iframe.allowUserMedia: IDL set to object "test-valueOf" assert_equals: IDL get expected (boolean) true but got (object) object "test-valueOf"
 PASS iframe.allowPaymentRequest: 33 tests
 PASS iframe.width: 32 tests
 PASS iframe.height: 32 tests
 PASS iframe.referrerPolicy: 27 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS iframe.referrerPolicy: 5 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS iframe.referrerPolicy: 5 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS iframe.referrerPolicy: 30 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS iframe.referrerPolicy: 5 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS iframe.referrerPolicy: 5 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
-NOTRUN test
+FAIL iframe.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS iframe.referrerPolicy: 5 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL iframe.delegateStickyUserActivation: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL iframe.delegateStickyUserActivation: setAttribute() to "vibration" assert_equals: IDL get expected (string) "vibration" but got (undefined) undefined
+FAIL iframe.delegateStickyUserActivation: setAttribute() to "VIBRATION" assert_equals: IDL get expected (string) "vibration" but got (undefined) undefined
+FAIL iframe.delegateStickyUserActivation: setAttribute() to "media" assert_equals: IDL get expected (string) "media" but got (undefined) undefined
+FAIL iframe.delegateStickyUserActivation: setAttribute() to "MEDIA" assert_equals: IDL get expected (string) "media" but got (undefined) undefined
+FAIL iframe.delegateStickyUserActivation: IDL set to "" assert_equals: getAttribute() expected "" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to 7 assert_equals: getAttribute() expected "7" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to true assert_equals: getAttribute() expected "true" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to false assert_equals: getAttribute() expected "false" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "MEDIA"
+PASS iframe.delegateStickyUserActivation: IDL set to null
+FAIL iframe.delegateStickyUserActivation: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to object "test-valueOf" assert_equals: getAttribute() expected "test-valueOf" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "vibration" assert_equals: getAttribute() expected "vibration" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "xvibration" assert_equals: getAttribute() expected "xvibration" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "vibration\0" assert_equals: getAttribute() expected "vibration\0" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "ibration" assert_equals: getAttribute() expected "ibration" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "VIBRATION" assert_equals: getAttribute() expected "VIBRATION" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "media" assert_equals: getAttribute() expected "media" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "xmedia" assert_equals: getAttribute() expected "xmedia" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "media\0" assert_equals: getAttribute() expected "media\0" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "edia" assert_equals: getAttribute() expected "edia" but got "MEDIA"
+FAIL iframe.delegateStickyUserActivation: IDL set to "MEDIA" assert_equals: IDL get expected "media" but got "MEDIA"
 PASS iframe.align: 32 tests
 PASS iframe.scrolling: 32 tests
 PASS iframe.frameBorder: 32 tests
@@ -185,39 +185,39 @@
 PASS object.tabIndex: 24 tests
 PASS object.data: 38 tests
 PASS object.type: 32 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL object.typeMustMatch: typeof IDL attribute assert_equals: expected "boolean" but got "undefined"
+FAIL object.typeMustMatch: IDL get with DOM attribute unset assert_equals: expected (boolean) false but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to "" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to " foo " assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to undefined assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to null assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to 7 assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to 1.5 assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to true assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to false assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to object "[object Object]" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to NaN assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to Infinity assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to -Infinity assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to "\0" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to object "test-toString" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: setAttribute() to "typeMustMatch" assert_equals: IDL get expected (boolean) true but got (undefined) undefined
+FAIL object.typeMustMatch: IDL set to "" assert_equals: hasAttribute() expected false but got true
+FAIL object.typeMustMatch: IDL set to " foo " assert_equals: IDL get expected (boolean) true but got (string) " foo "
+FAIL object.typeMustMatch: IDL set to undefined assert_equals: hasAttribute() expected false but got true
+FAIL object.typeMustMatch: IDL set to null assert_equals: hasAttribute() expected false but got true
+FAIL object.typeMustMatch: IDL set to 7 assert_equals: IDL get expected (boolean) true but got (number) 7
+FAIL object.typeMustMatch: IDL set to 1.5 assert_equals: IDL get expected (boolean) true but got (number) 1.5
+PASS object.typeMustMatch: IDL set to true
+FAIL object.typeMustMatch: IDL set to false assert_equals: hasAttribute() expected false but got true
+FAIL object.typeMustMatch: IDL set to object "[object Object]" assert_equals: IDL get expected (boolean) true but got (object) object "[object Object]"
+FAIL object.typeMustMatch: IDL set to NaN assert_equals: hasAttribute() expected false but got true
+FAIL object.typeMustMatch: IDL set to Infinity assert_equals: IDL get expected (boolean) true but got (number) Infinity
+FAIL object.typeMustMatch: IDL set to -Infinity assert_equals: IDL get expected (boolean) true but got (number) -Infinity
+FAIL object.typeMustMatch: IDL set to "\0" assert_equals: IDL get expected (boolean) true but got (string) "\0"
+FAIL object.typeMustMatch: IDL set to object "test-toString" assert_equals: IDL get expected (boolean) true but got (object) object "test-toString"
+FAIL object.typeMustMatch: IDL set to object "test-valueOf" assert_equals: IDL get expected (boolean) true but got (object) object "test-valueOf"
 PASS object.name: 32 tests
 PASS object.useMap: 32 tests
 PASS object.width: 32 tests
@@ -330,29 +330,29 @@
 PASS area.ping: 32 tests
 PASS area.rel: 32 tests
 PASS area.referrerPolicy: 27 tests
-NOTRUN test
+FAIL area.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS area.referrerPolicy: 3 tests
-NOTRUN test
+FAIL area.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS area.referrerPolicy: 5 tests
-NOTRUN test
+FAIL area.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS area.referrerPolicy: 3 tests
-NOTRUN test
+FAIL area.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS area.referrerPolicy: 5 tests
-NOTRUN test
+FAIL area.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS area.referrerPolicy: 3 tests
-NOTRUN test
+FAIL area.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS area.referrerPolicy: 30 tests
-NOTRUN test
+FAIL area.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS area.referrerPolicy: 3 tests
-NOTRUN test
+FAIL area.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS area.referrerPolicy: 5 tests
-NOTRUN test
+FAIL area.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS area.referrerPolicy: 3 tests
-NOTRUN test
+FAIL area.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS area.referrerPolicy: 5 tests
-NOTRUN test
+FAIL area.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS area.referrerPolicy: 3 tests
-NOTRUN test
+FAIL area.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS area.referrerPolicy: 5 tests
 PASS area.href: 38 tests
 PASS area.noHref: 33 tests
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-forms-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-forms-expected.txt
index a61ffae..abb91ee 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-forms-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-forms-expected.txt
@@ -180,31 +180,31 @@
 PASS meter.accessKey: 32 tests
 PASS meter.tabIndex: 24 tests
 PASS meter.value: 2 tests
-NOTRUN test
+FAIL meter.value: IDL set to -10000000000 assert_equals: getAttribute() expected "-10000000000" but got "-1.00000e+10"
 PASS meter.value: 4 tests
-NOTRUN test
+FAIL meter.value: IDL set to 10000000000 assert_equals: getAttribute() expected "10000000000" but got "1.00000e+10"
 PASS meter.min: 2 tests
-NOTRUN test
+FAIL meter.min: IDL set to -10000000000 assert_equals: getAttribute() expected "-10000000000" but got "-1.00000e+10"
 PASS meter.min: 4 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL meter.min: IDL set to 10000000000 assert_equals: getAttribute() expected "10000000000" but got "1.00000e+10"
+PASS meter.max: typeof IDL attribute
+FAIL meter.max: IDL get with DOM attribute unset assert_equals: expected 0 but got 1
+FAIL meter.max: IDL set to -10000000000 assert_equals: getAttribute() expected "-10000000000" but got "-1.00000e+10"
 PASS meter.max: 4 tests
-NOTRUN test
+FAIL meter.max: IDL set to 10000000000 assert_equals: getAttribute() expected "10000000000" but got "1.00000e+10"
 PASS meter.low: 2 tests
-NOTRUN test
+FAIL meter.low: IDL set to -10000000000 assert_equals: getAttribute() expected "-10000000000" but got "-1.00000e+10"
 PASS meter.low: 4 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL meter.low: IDL set to 10000000000 assert_equals: getAttribute() expected "10000000000" but got "1.00000e+10"
+PASS meter.high: typeof IDL attribute
+FAIL meter.high: IDL get with DOM attribute unset assert_equals: expected 0 but got 1
+FAIL meter.high: IDL set to -10000000000 assert_equals: getAttribute() expected "-10000000000" but got "-1.00000e+10"
 PASS meter.high: 4 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL meter.high: IDL set to 10000000000 assert_equals: getAttribute() expected "10000000000" but got "1.00000e+10"
+PASS meter.optimum: typeof IDL attribute
+FAIL meter.optimum: IDL get with DOM attribute unset assert_equals: expected 0 but got 0.5
+FAIL meter.optimum: IDL set to -10000000000 assert_equals: getAttribute() expected "-10000000000" but got "-1.00000e+10"
 PASS meter.optimum: 4 tests
-NOTRUN test
+FAIL meter.optimum: IDL set to 10000000000 assert_equals: getAttribute() expected "10000000000" but got "1.00000e+10"
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-metadata-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-metadata-expected.txt
index dfca6251..4ad790f 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-metadata-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-metadata-expected.txt
@@ -21,8 +21,8 @@
 PASS base.hidden: 33 tests
 PASS base.accessKey: 32 tests
 PASS base.tabIndex: 24 tests
-NOTRUN test
-NOTRUN test
+PASS base.href: typeof IDL attribute
+FAIL base.href: IDL get with DOM attribute unset assert_equals: expected "" but got "http://web-platform.test:8001/html/dom/reflection-metadata.html"
 PASS base.href: 18 tests
 PASS base.target: 32 tests
 PASS link.title: 32 tests
@@ -36,107 +36,107 @@
 PASS link.crossOrigin: 52 tests
 PASS link.rel: 32 tests
 PASS link.as: 27 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "document" assert_equals: IDL get expected "document" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
+FAIL link.as: setAttribute() to "DOCUMENT" assert_equals: IDL get expected "document" but got ""
+FAIL link.as: setAttribute() to "embed" assert_equals: IDL get expected "embed" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "EMBED" assert_equals: IDL get expected "embed" but got ""
 PASS link.as: 10 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "manifest" assert_equals: IDL get expected "manifest" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
+FAIL link.as: setAttribute() to "MANIFEST" assert_equals: IDL get expected "manifest" but got ""
+FAIL link.as: setAttribute() to "object" assert_equals: IDL get expected "object" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
+FAIL link.as: setAttribute() to "OBJECT" assert_equals: IDL get expected "object" but got ""
+FAIL link.as: setAttribute() to "report" assert_equals: IDL get expected "report" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "REPORT" assert_equals: IDL get expected "report" but got ""
 PASS link.as: 5 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "sharedworker" assert_equals: IDL get expected "sharedworker" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "SHAREDWORKER" assert_equals: IDL get expected "sharedworker" but got ""
 PASS link.as: 17 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "worker" assert_equals: IDL get expected "worker" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL link.as: setAttribute() to "WORKER" assert_equals: IDL get expected "worker" but got ""
+PASS link.as: setAttribute() to "worKer"
+FAIL link.as: setAttribute() to "xslt" assert_equals: IDL get expected "xslt" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: setAttribute() to "XSLT" assert_equals: IDL get expected "xslt" but got ""
 PASS link.as: 25 tests
-NOTRUN test
+FAIL link.as: IDL set to "document" assert_equals: IDL get expected "document" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
+FAIL link.as: IDL set to "DOCUMENT" assert_equals: IDL get expected "document" but got ""
+FAIL link.as: IDL set to "embed" assert_equals: IDL get expected "embed" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: IDL set to "EMBED" assert_equals: IDL get expected "embed" but got ""
 PASS link.as: 10 tests
-NOTRUN test
+FAIL link.as: IDL set to "manifest" assert_equals: IDL get expected "manifest" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
+FAIL link.as: IDL set to "MANIFEST" assert_equals: IDL get expected "manifest" but got ""
+FAIL link.as: IDL set to "object" assert_equals: IDL get expected "object" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
+FAIL link.as: IDL set to "OBJECT" assert_equals: IDL get expected "object" but got ""
+FAIL link.as: IDL set to "report" assert_equals: IDL get expected "report" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: IDL set to "REPORT" assert_equals: IDL get expected "report" but got ""
 PASS link.as: 5 tests
-NOTRUN test
+FAIL link.as: IDL set to "sharedworker" assert_equals: IDL get expected "sharedworker" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: IDL set to "SHAREDWORKER" assert_equals: IDL get expected "sharedworker" but got ""
 PASS link.as: 17 tests
-NOTRUN test
+FAIL link.as: IDL set to "worker" assert_equals: IDL get expected "worker" but got ""
 PASS link.as: 3 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL link.as: IDL set to "WORKER" assert_equals: IDL get expected "worker" but got ""
+PASS link.as: IDL set to "worKer"
+FAIL link.as: IDL set to "xslt" assert_equals: IDL get expected "xslt" but got ""
 PASS link.as: 3 tests
-NOTRUN test
+FAIL link.as: IDL set to "XSLT" assert_equals: IDL get expected "xslt" but got ""
 PASS link.media: 32 tests
 PASS link.nonce: 17 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL link.nonce: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL link.nonce: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL link.nonce: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL link.nonce: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL link.nonce: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL link.nonce: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL link.nonce: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL link.nonce: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL link.nonce: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL link.nonce: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL link.nonce: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL link.nonce: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL link.nonce: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL link.nonce: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+PASS link.nonce: IDL set to object "test-valueOf"
 PASS link.integrity: 32 tests
 PASS link.hreflang: 32 tests
 PASS link.type: 32 tests
 PASS link.referrerPolicy: 27 tests
-NOTRUN test
+FAIL link.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS link.referrerPolicy: 3 tests
-NOTRUN test
+FAIL link.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS link.referrerPolicy: 5 tests
-NOTRUN test
+FAIL link.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS link.referrerPolicy: 3 tests
-NOTRUN test
+FAIL link.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS link.referrerPolicy: 5 tests
-NOTRUN test
+FAIL link.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS link.referrerPolicy: 3 tests
-NOTRUN test
+FAIL link.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS link.referrerPolicy: 30 tests
-NOTRUN test
+FAIL link.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS link.referrerPolicy: 3 tests
-NOTRUN test
+FAIL link.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS link.referrerPolicy: 5 tests
-NOTRUN test
+FAIL link.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS link.referrerPolicy: 3 tests
-NOTRUN test
+FAIL link.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS link.referrerPolicy: 5 tests
-NOTRUN test
+FAIL link.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS link.referrerPolicy: 3 tests
-NOTRUN test
+FAIL link.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS link.referrerPolicy: 5 tests
 PASS link.charset: 32 tests
 PASS link.rev: 32 tests
@@ -161,21 +161,21 @@
 PASS style.tabIndex: 24 tests
 PASS style.media: 32 tests
 PASS style.nonce: 17 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL style.nonce: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL style.nonce: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL style.nonce: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL style.nonce: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL style.nonce: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL style.nonce: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL style.nonce: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL style.nonce: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL style.nonce: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL style.nonce: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL style.nonce: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL style.nonce: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL style.nonce: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL style.nonce: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+PASS style.nonce: IDL set to object "test-valueOf"
 PASS style.type: 32 tests
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-misc-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-misc-expected.txt
index 720e06b..0688a78 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-misc-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-misc-expected.txt
@@ -22,21 +22,21 @@
 PASS script.defer: 33 tests
 PASS script.crossOrigin: 52 tests
 PASS script.nonce: 17 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL script.nonce: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL script.nonce: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL script.nonce: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL script.nonce: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL script.nonce: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL script.nonce: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL script.nonce: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL script.nonce: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL script.nonce: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL script.nonce: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL script.nonce: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL script.nonce: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL script.nonce: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL script.nonce: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+PASS script.nonce: IDL set to object "test-valueOf"
 PASS script.integrity: 32 tests
 PASS script.event: 32 tests
 PASS script.htmlFor (<script for>): 32 tests
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-obsolete-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-obsolete-expected.txt
index da2ef48..718597f9 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-obsolete-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-obsolete-expected.txt
@@ -7,430 +7,430 @@
 PASS applet.hidden: 33 tests
 PASS applet.accessKey: 32 tests
 PASS applet.tabIndex: 24 tests
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
-NOTRUN test
+FAIL applet.align: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.align: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.align: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.align: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.align: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.align: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.align: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.align: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.align: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.align: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.align: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.align: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.align: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.align: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.align: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.align: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.align: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.align: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.align: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.align: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.align: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.align: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.align: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.align: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.align: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.align: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.align: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.align: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.align: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.align: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.align: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.align: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.alt: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.alt: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.alt: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.alt: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.alt: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.alt: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.alt: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.alt: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.alt: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.alt: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.alt: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.alt: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.alt: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.alt: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.alt: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.alt: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.alt: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.alt: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.alt: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.archive: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.archive: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.archive: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.archive: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.archive: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.archive: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.archive: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.archive: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.archive: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.archive: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.archive: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.archive: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.archive: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.archive: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.archive: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.archive: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.archive: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.archive: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.archive: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.code: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.code: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.code: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.code: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.code: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.code: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.code: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.code: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.code: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.code: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.code: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.code: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.code: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.code: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.code: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.code: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.code: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.code: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.code: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.code: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.code: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.code: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.code: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.code: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.code: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.code: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.code: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.code: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.code: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.code: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.code: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.code: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.codeBase: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.codeBase: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to "" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/reflection-obsolete.html" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to " foo " assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/foo" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to "http://site.example/" assert_equals: IDL get expected (string) "http://site.example/" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to "//site.example/path???@#l" assert_equals: IDL get expected (string) "http://site.example/path???@#l" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to "\0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f " assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/reflection-obsolete.html" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to undefined assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/undefined" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to 7 assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/7" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to 1.5 assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/1.5" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to true assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/true" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to false assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/false" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/[object%20Object]" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to NaN assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/NaN" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to Infinity assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/Infinity" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to -Infinity assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/-Infinity" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to "\0" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/reflection-obsolete.html" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to null assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/null" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/test-toString" but got (undefined) undefined
+FAIL applet.codeBase: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/test-valueOf" but got (undefined) undefined
+FAIL applet.codeBase: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to " foo " assert_equals: getAttribute() expected " foo " but got "test-valueOf"
+FAIL applet.codeBase: IDL set to "http://site.example/" assert_equals: getAttribute() expected "http://site.example/" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to "//site.example/path???@#l" assert_equals: getAttribute() expected "//site.example/path???@#l" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to "\0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f " assert_equals: getAttribute() expected "\0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f " but got "test-valueOf"
+FAIL applet.codeBase: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.codeBase: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.height: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.height: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.height: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.height: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.height: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.height: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.height: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.height: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.height: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.height: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.height: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.height: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.height: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.height: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.height: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.height: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.height: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.height: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.height: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.height: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.height: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.height: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.height: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.height: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.height: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.height: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.height: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.height: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.height: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.height: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.height: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.height: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.hspace: typeof IDL attribute assert_equals: expected "number" but got "undefined"
+FAIL applet.hspace: IDL get with DOM attribute unset assert_equals: expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to -2147483649 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to -2147483648 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to -36 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to -1 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 0 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 1 assert_equals: IDL get expected (number) 1 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 257 assert_equals: IDL get expected (number) 257 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 2147483647 assert_equals: IDL get expected (number) 2147483647 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 2147483648 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 4294967295 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 4294967296 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "-1" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "-0" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "0" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "1" assert_equals: IDL get expected (number) 1 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "\t7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "\v7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "\f7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "\n7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "\r7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "
7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "
7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "᠎7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to undefined assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to 1.5 assert_equals: IDL get expected (number) 1 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to true assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to false assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to object "[object Object]" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to NaN assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to Infinity assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to -Infinity assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to "\0" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to object "2" assert_equals: IDL get expected (number) 2 but got (undefined) undefined
+FAIL applet.hspace: setAttribute() to object "3" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.hspace: IDL set to 0 assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.hspace: IDL set to 1 assert_equals: getAttribute() expected "1" but got "[object Object]"
+FAIL applet.hspace: IDL set to 257 assert_equals: getAttribute() expected "257" but got "[object Object]"
+FAIL applet.hspace: IDL set to 2147483647 assert_equals: getAttribute() expected "2147483647" but got "[object Object]"
+FAIL applet.hspace: IDL set to "-0" assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.hspace: IDL set to 2147483648 assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.hspace: IDL set to 4294967295 assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.name: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.name: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.name: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.name: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.name: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.name: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.name: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.name: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.name: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.name: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.name: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.name: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.name: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.name: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.name: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.name: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.name: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.name: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.name: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.name: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.name: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.name: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.name: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.name: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.name: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.name: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.name: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.name: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.name: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.name: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.name: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.name: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.object: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.object: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.object: setAttribute() to "" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/reflection-obsolete.html" but got (undefined) undefined
+FAIL applet.object: setAttribute() to " foo " assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/foo" but got (undefined) undefined
+FAIL applet.object: setAttribute() to "http://site.example/" assert_equals: IDL get expected (string) "http://site.example/" but got (undefined) undefined
+FAIL applet.object: setAttribute() to "//site.example/path???@#l" assert_equals: IDL get expected (string) "http://site.example/path???@#l" but got (undefined) undefined
+FAIL applet.object: setAttribute() to "\0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f " assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/reflection-obsolete.html" but got (undefined) undefined
+FAIL applet.object: setAttribute() to undefined assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/undefined" but got (undefined) undefined
+FAIL applet.object: setAttribute() to 7 assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/7" but got (undefined) undefined
+FAIL applet.object: setAttribute() to 1.5 assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/1.5" but got (undefined) undefined
+FAIL applet.object: setAttribute() to true assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/true" but got (undefined) undefined
+FAIL applet.object: setAttribute() to false assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/false" but got (undefined) undefined
+FAIL applet.object: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/[object%20Object]" but got (undefined) undefined
+FAIL applet.object: setAttribute() to NaN assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/NaN" but got (undefined) undefined
+FAIL applet.object: setAttribute() to Infinity assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/Infinity" but got (undefined) undefined
+FAIL applet.object: setAttribute() to -Infinity assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/-Infinity" but got (undefined) undefined
+FAIL applet.object: setAttribute() to "\0" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/reflection-obsolete.html" but got (undefined) undefined
+FAIL applet.object: setAttribute() to null assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/null" but got (undefined) undefined
+FAIL applet.object: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/test-toString" but got (undefined) undefined
+FAIL applet.object: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/test-valueOf" but got (undefined) undefined
+FAIL applet.object: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.object: IDL set to " foo " assert_equals: getAttribute() expected " foo " but got "test-valueOf"
+FAIL applet.object: IDL set to "http://site.example/" assert_equals: getAttribute() expected "http://site.example/" but got "test-valueOf"
+FAIL applet.object: IDL set to "//site.example/path???@#l" assert_equals: getAttribute() expected "//site.example/path???@#l" but got "test-valueOf"
+FAIL applet.object: IDL set to "\0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f " assert_equals: getAttribute() expected "\0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f " but got "test-valueOf"
+FAIL applet.object: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.object: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.object: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.object: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.object: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.object: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.object: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.object: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.object: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.object: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.object: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.object: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.object: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "http://web-platform.test:8001/html/dom/test-valueOf" but got (object) object "test-valueOf"
+FAIL applet.vspace: typeof IDL attribute assert_equals: expected "number" but got "undefined"
+FAIL applet.vspace: IDL get with DOM attribute unset assert_equals: expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to -2147483649 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to -2147483648 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to -36 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to -1 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 0 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 1 assert_equals: IDL get expected (number) 1 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 257 assert_equals: IDL get expected (number) 257 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 2147483647 assert_equals: IDL get expected (number) 2147483647 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 2147483648 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 4294967295 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 4294967296 assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "-1" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "-0" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "0" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "1" assert_equals: IDL get expected (number) 1 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "\t7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "\v7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "\f7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "\n7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "\r7" assert_equals: IDL get expected (number) 7 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "
7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "
7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "᠎7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " 7" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to undefined assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to 1.5 assert_equals: IDL get expected (number) 1 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to true assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to false assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to object "[object Object]" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to NaN assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to Infinity assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to -Infinity assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to "\0" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to object "2" assert_equals: IDL get expected (number) 2 but got (undefined) undefined
+FAIL applet.vspace: setAttribute() to object "3" assert_equals: IDL get expected (number) 0 but got (undefined) undefined
+FAIL applet.vspace: IDL set to 0 assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.vspace: IDL set to 1 assert_equals: getAttribute() expected "1" but got "[object Object]"
+FAIL applet.vspace: IDL set to 257 assert_equals: getAttribute() expected "257" but got "[object Object]"
+FAIL applet.vspace: IDL set to 2147483647 assert_equals: getAttribute() expected "2147483647" but got "[object Object]"
+FAIL applet.vspace: IDL set to "-0" assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.vspace: IDL set to 2147483648 assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.vspace: IDL set to 4294967295 assert_equals: getAttribute() expected "0" but got "[object Object]"
+FAIL applet.width: typeof IDL attribute assert_equals: expected "string" but got "undefined"
+FAIL applet.width: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
+FAIL applet.width: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
+FAIL applet.width: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got (undefined) undefined
+FAIL applet.width: setAttribute() to undefined assert_equals: IDL get expected (string) "undefined" but got (undefined) undefined
+FAIL applet.width: setAttribute() to 7 assert_equals: IDL get expected (string) "7" but got (undefined) undefined
+FAIL applet.width: setAttribute() to 1.5 assert_equals: IDL get expected (string) "1.5" but got (undefined) undefined
+FAIL applet.width: setAttribute() to true assert_equals: IDL get expected (string) "true" but got (undefined) undefined
+FAIL applet.width: setAttribute() to false assert_equals: IDL get expected (string) "false" but got (undefined) undefined
+FAIL applet.width: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "[object Object]" but got (undefined) undefined
+FAIL applet.width: setAttribute() to NaN assert_equals: IDL get expected (string) "NaN" but got (undefined) undefined
+FAIL applet.width: setAttribute() to Infinity assert_equals: IDL get expected (string) "Infinity" but got (undefined) undefined
+FAIL applet.width: setAttribute() to -Infinity assert_equals: IDL get expected (string) "-Infinity" but got (undefined) undefined
+FAIL applet.width: setAttribute() to "\0" assert_equals: IDL get expected (string) "\0" but got (undefined) undefined
+FAIL applet.width: setAttribute() to null assert_equals: IDL get expected (string) "null" but got (undefined) undefined
+FAIL applet.width: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "test-toString" but got (undefined) undefined
+FAIL applet.width: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (undefined) undefined
+FAIL applet.width: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
+FAIL applet.width: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
+FAIL applet.width: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "test-valueOf"
+FAIL applet.width: IDL set to 7 assert_equals: getAttribute() expected "7" but got "test-valueOf"
+FAIL applet.width: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "test-valueOf"
+FAIL applet.width: IDL set to true assert_equals: getAttribute() expected "true" but got "test-valueOf"
+FAIL applet.width: IDL set to false assert_equals: getAttribute() expected "false" but got "test-valueOf"
+FAIL applet.width: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "test-valueOf"
+FAIL applet.width: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "test-valueOf"
+FAIL applet.width: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "test-valueOf"
+FAIL applet.width: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "test-valueOf"
+FAIL applet.width: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "test-valueOf"
+FAIL applet.width: IDL set to null assert_equals: getAttribute() expected "null" but got "test-valueOf"
+FAIL applet.width: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "test-valueOf"
+FAIL applet.width: IDL set to object "test-valueOf" assert_equals: IDL get expected (string) "test-valueOf" but got (object) object "test-valueOf"
 PASS marquee.title: 32 tests
 PASS marquee.lang: 32 tests
 PASS marquee.dir: 62 tests
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-text-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-text-expected.txt
index 7b45bcba..4607069 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-text-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/reflection-text-expected.txt
@@ -14,29 +14,29 @@
 PASS a.hreflang: 32 tests
 PASS a.type: 32 tests
 PASS a.referrerPolicy: 27 tests
-NOTRUN test
+FAIL a.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS a.referrerPolicy: 3 tests
-NOTRUN test
+FAIL a.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS a.referrerPolicy: 5 tests
-NOTRUN test
+FAIL a.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS a.referrerPolicy: 3 tests
-NOTRUN test
+FAIL a.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS a.referrerPolicy: 5 tests
-NOTRUN test
+FAIL a.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS a.referrerPolicy: 3 tests
-NOTRUN test
+FAIL a.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS a.referrerPolicy: 30 tests
-NOTRUN test
+FAIL a.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS a.referrerPolicy: 3 tests
-NOTRUN test
+FAIL a.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
 PASS a.referrerPolicy: 5 tests
-NOTRUN test
+FAIL a.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS a.referrerPolicy: 3 tests
-NOTRUN test
+FAIL a.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
 PASS a.referrerPolicy: 5 tests
-NOTRUN test
+FAIL a.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS a.referrerPolicy: 3 tests
-NOTRUN test
+FAIL a.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS a.referrerPolicy: 5 tests
 PASS a.href: 38 tests
 PASS a.coords: 32 tests
diff --git a/third_party/WebKit/LayoutTests/fast/autoresize/autoresize-with-iframe.html b/third_party/WebKit/LayoutTests/fast/autoresize/autoresize-with-iframe.html
index b8d6f55..c5c4503d 100644
--- a/third_party/WebKit/LayoutTests/fast/autoresize/autoresize-with-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/autoresize/autoresize-with-iframe.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
     testRunner.enableAutoResizeMode(10, 10, 1000, 1000);
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/css-generated-content/positioned-div-with-floating-after-content-crash.html b/third_party/WebKit/LayoutTests/fast/css-generated-content/positioned-div-with-floating-after-content-crash.html
index d013be02..c6e44a1 100644
--- a/third_party/WebKit/LayoutTests/fast/css-generated-content/positioned-div-with-floating-after-content-crash.html
+++ b/third_party/WebKit/LayoutTests/fast/css-generated-content/positioned-div-with-floating-after-content-crash.html
@@ -3,7 +3,7 @@
     if (window.testRunner) {
         testRunner.waitUntilDone();
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 }
 window.onload = runTest;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-dnsprefetch-valid.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-dnsprefetch-valid.html
index bb18041..d321da5 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-dnsprefetch-valid.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-dnsprefetch-valid.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-crossorigin.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-crossorigin.html
index aaeeefee..14bd02a9b 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-crossorigin.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-crossorigin.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-dynamic.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-dynamic.html
index 9273447..8fb228f2 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-dynamic.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-dynamic.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-nonhttp.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-nonhttp.html
index 2cb5e65b..1338a39 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-nonhttp.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-nonhttp.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-valid.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-valid.html
index 8ec7d59..b2f7f22 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-valid.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preconnect-valid.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preload-validity.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preload-validity.html
index 904b168..375f906 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preload-validity.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLLinkElement/link-preload-validity.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogPreload(true);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/Location/ancestor-origins.html b/third_party/WebKit/LayoutTests/fast/dom/Window/Location/ancestor-origins.html
index 00178009..7afea03 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/Window/Location/ancestor-origins.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/Window/Location/ancestor-origins.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 var origins = location.ancestorOrigins;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-closed-during-layout-dump.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-closed-during-layout-dump.html
index 424e88d1..f6d83af 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-closed-during-layout-dump.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-closed-during-layout-dump.html
@@ -4,7 +4,7 @@
 // See also https://crbug.com/798598.
 if (testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 window.close();
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/frame-loading-via-document-write.html b/third_party/WebKit/LayoutTests/fast/dom/frame-loading-via-document-write.html
index cfa8008f..5ab1c88 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/frame-loading-via-document-write.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/frame-loading-via-document-write.html
@@ -9,7 +9,7 @@
     if (window.testRunner) {
         testRunner.waitUntilDone();
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     var outHTML="<frameset rows=\"33%, 33%, 33%\">"+
diff --git a/third_party/WebKit/LayoutTests/fast/dom/javascript-url-crash-function.html b/third_party/WebKit/LayoutTests/fast/dom/javascript-url-crash-function.html
index 5f11742..a349b618 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/javascript-url-crash-function.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/javascript-url-crash-function.html
@@ -8,7 +8,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/encoding/meta-overrules-auto.html b/third_party/WebKit/LayoutTests/fast/encoding/meta-overrules-auto.html
index 4c220dda..5bce18b3 100644
--- a/third_party/WebKit/LayoutTests/fast/encoding/meta-overrules-auto.html
+++ b/third_party/WebKit/LayoutTests/fast/encoding/meta-overrules-auto.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 if (!window.internals)
     alert("This test requires window.internals");
diff --git a/third_party/WebKit/LayoutTests/fast/events/before-unload-forbidden-navigation.html b/third_party/WebKit/LayoutTests/fast/events/before-unload-forbidden-navigation.html
index cdbf9b7..9147866 100644
--- a/third_party/WebKit/LayoutTests/fast/events/before-unload-forbidden-navigation.html
+++ b/third_party/WebKit/LayoutTests/fast/events/before-unload-forbidden-navigation.html
@@ -7,7 +7,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/events/before-unload-in-subframe.html b/third_party/WebKit/LayoutTests/fast/events/before-unload-in-subframe.html
index f922da78..a6e99bd3 100644
--- a/third_party/WebKit/LayoutTests/fast/events/before-unload-in-subframe.html
+++ b/third_party/WebKit/LayoutTests/fast/events/before-unload-in-subframe.html
@@ -7,7 +7,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/events/before-unload-remove-itself.html b/third_party/WebKit/LayoutTests/fast/events/before-unload-remove-itself.html
index eda4e4d..43ecf193 100644
--- a/third_party/WebKit/LayoutTests/fast/events/before-unload-remove-itself.html
+++ b/third_party/WebKit/LayoutTests/fast/events/before-unload-remove-itself.html
@@ -7,7 +7,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/events/before-unload-with-subframes.html b/third_party/WebKit/LayoutTests/fast/events/before-unload-with-subframes.html
index 5dc58ec..cf659c7 100644
--- a/third_party/WebKit/LayoutTests/fast/events/before-unload-with-subframes.html
+++ b/third_party/WebKit/LayoutTests/fast/events/before-unload-with-subframes.html
@@ -7,7 +7,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/events/focusingUnloadedFrame.html b/third_party/WebKit/LayoutTests/fast/events/focusingUnloadedFrame.html
index 688480a..90578c0 100644
--- a/third_party/WebKit/LayoutTests/fast/events/focusingUnloadedFrame.html
+++ b/third_party/WebKit/LayoutTests/fast/events/focusingUnloadedFrame.html
@@ -10,7 +10,7 @@
         return;
 
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     
     var modifiers = ["altKey"];
     eventSender.keyDown("\t", modifiers);
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-events-within-no-element.html b/third_party/WebKit/LayoutTests/fast/events/mouse-events-within-no-element.html
index 5ead498..6f6b740 100644
--- a/third_party/WebKit/LayoutTests/fast/events/mouse-events-within-no-element.html
+++ b/third_party/WebKit/LayoutTests/fast/events/mouse-events-within-no-element.html
@@ -6,5 +6,5 @@
 <script>
 description("Tests that the mouse event is fired when the mouse pointer stays in document but there is no element");
 if (window.testRunner)
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 </script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/events/onbeforeunload-focused-iframe.html b/third_party/WebKit/LayoutTests/fast/events/onbeforeunload-focused-iframe.html
index fddecd73..dc23f0b 100644
--- a/third_party/WebKit/LayoutTests/fast/events/onbeforeunload-focused-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/events/onbeforeunload-focused-iframe.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/fast/events/onloadFrameCrash.html b/third_party/WebKit/LayoutTests/fast/events/onloadFrameCrash.html
index a655603..85cda80 100644
--- a/third_party/WebKit/LayoutTests/fast/events/onloadFrameCrash.html
+++ b/third_party/WebKit/LayoutTests/fast/events/onloadFrameCrash.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <!-- This test PASSED if we don't crash. -->
diff --git a/third_party/WebKit/LayoutTests/fast/events/open-window-from-another-frame.html b/third_party/WebKit/LayoutTests/fast/events/open-window-from-another-frame.html
index 1e67c6e..ab8791be 100644
--- a/third_party/WebKit/LayoutTests/fast/events/open-window-from-another-frame.html
+++ b/third_party/WebKit/LayoutTests/fast/events/open-window-from-another-frame.html
@@ -4,7 +4,7 @@
         if (window.testRunner) {
             testRunner.dumpAsText();
             testRunner.setCanOpenWindows();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
             testRunner.setCloseRemainingWindowsWhenComplete()
             testRunner.setPopupBlockingEnabled(true);
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-blocking-click-in-iframe.html b/third_party/WebKit/LayoutTests/fast/events/popup-blocking-click-in-iframe.html
index fed70e3..62d803fa 100644
--- a/third_party/WebKit/LayoutTests/fast/events/popup-blocking-click-in-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/events/popup-blocking-click-in-iframe.html
@@ -4,7 +4,7 @@
         if (window.testRunner) {
             testRunner.dumpAsText();
             testRunner.setCanOpenWindows();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
             testRunner.setCloseRemainingWindowsWhenComplete()
             testRunner.setPopupBlockingEnabled(true);
diff --git a/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html b/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html
index c5a4062c..7fd97afe 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html
@@ -4,7 +4,7 @@
   <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
 
diff --git a/third_party/WebKit/LayoutTests/fast/frames/contentWindow_Frame.html b/third_party/WebKit/LayoutTests/fast/frames/contentWindow_Frame.html
index b67c8461..e979627b 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/contentWindow_Frame.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/contentWindow_Frame.html
@@ -4,7 +4,7 @@
     function putText() {
       if (window.testRunner) {
           testRunner.dumpAsText();
-          testRunner.dumpChildFramesAsText();
+          testRunner.dumpChildFrames();
       }
       var t = document.getElementById("t_frame");
       var b = document.getElementById("b_frame");
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-element-name.html b/third_party/WebKit/LayoutTests/fast/frames/frame-element-name.html
index 22dd38e..416947e 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-element-name.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-element-name.html
@@ -2,7 +2,7 @@
 <head>
 <script>
 if (window.testRunner) {
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-inherit-noresize-from-frameset.html b/third_party/WebKit/LayoutTests/fast/frames/frame-inherit-noresize-from-frameset.html
index 96ff948..5fe64db3 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-inherit-noresize-from-frameset.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-inherit-noresize-from-frameset.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 window.onload = runTests;
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-programmatic-noresize.html b/third_party/WebKit/LayoutTests/fast/frames/frame-programmatic-noresize.html
index 70f34213..7ccf4811 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-programmatic-noresize.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-programmatic-noresize.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 window.onload = runTests;
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-set-location-badstring.html b/third_party/WebKit/LayoutTests/fast/frames/frame-set-location-badstring.html
index b0324421..fb9ced1 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-set-location-badstring.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-set-location-badstring.html
@@ -1,6 +1,6 @@
 <script>
 if (window.testRunner)
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 </script>
 
 <frameset cols="1,1">
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-src-attribute.html b/third_party/WebKit/LayoutTests/fast/frames/frame-src-attribute.html
index 6d193ab..083461df 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-src-attribute.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-src-attribute.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function write(s)
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-removal-of-noresize.html b/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-removal-of-noresize.html
index 8c963ac..88ad4863 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-removal-of-noresize.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-removal-of-noresize.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 window.onload = runTests;
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-setting-noResize-to-false.html b/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-setting-noResize-to-false.html
index 3a8190f7..bd3797d 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-setting-noResize-to-false.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frame-with-noresize-can-be-resized-after-setting-noResize-to-false.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 window.onload = runTests;
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frames-with-frameborder-zero-can-be-resized.html b/third_party/WebKit/LayoutTests/fast/frames/frames-with-frameborder-zero-can-be-resized.html
index ba49b77..0debc92 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frames-with-frameborder-zero-can-be-resized.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frames-with-frameborder-zero-can-be-resized.html
@@ -28,7 +28,7 @@
             function run() {
                 if (window.testRunner) {
                     testRunner.dumpAsText();
-                    testRunner.dumpChildFramesAsText();
+                    testRunner.dumpChildFrames();
 
                     document.getElementById("results").contentDocument.getElementById("description").innerText = "\nThis tests that frames with frameborder=0 can be resized. See WebKit Bug 23750. On success, two 'PASS' messages will be shown below.";
 
diff --git a/third_party/WebKit/LayoutTests/fast/frames/iframe-reparenting-unique-name.html b/third_party/WebKit/LayoutTests/fast/frames/iframe-reparenting-unique-name.html
index 8f8ebf6..1cd3c2c7 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/iframe-reparenting-unique-name.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/iframe-reparenting-unique-name.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function runTest()
diff --git a/third_party/WebKit/LayoutTests/fast/frames/iframe-set-inner-html.html b/third_party/WebKit/LayoutTests/fast/frames/iframe-set-inner-html.html
index b64ba88b..122639d3 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/iframe-set-inner-html.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/iframe-set-inner-html.html
@@ -3,7 +3,7 @@
 function runTest() {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     
     var c = document.getElementById('container');
diff --git a/third_party/WebKit/LayoutTests/fast/frames/remove-frame-during-load-event.html b/third_party/WebKit/LayoutTests/fast/frames/remove-frame-during-load-event.html
index eb10076..b84e91dd 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/remove-frame-during-load-event.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/remove-frame-during-load-event.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function runTests() {
diff --git a/third_party/WebKit/LayoutTests/fast/frames/reparent-in-unload-contentdocument.html b/third_party/WebKit/LayoutTests/fast/frames/reparent-in-unload-contentdocument.html
index 3b4906fa..9552796 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/reparent-in-unload-contentdocument.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/reparent-in-unload-contentdocument.html
@@ -13,7 +13,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-noscript.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-noscript.html
index 8955239..89fcf8ea 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-noscript.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-noscript.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-storage.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-storage.html
index 959fb4b4..b5f7de48 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-storage.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-storage.html
@@ -5,7 +5,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 window.onload = function() { 
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-workers.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-workers.html
index edb7a2cc3..0c034edb 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-workers.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-workers.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
     <p>This test verifies that shared workers are not available in a sandboxed iframe.</p>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/srcdoc/setting-src-does-nothing.html b/third_party/WebKit/LayoutTests/fast/frames/srcdoc/setting-src-does-nothing.html
index ef491d9..f19a317 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/srcdoc/setting-src-does-nothing.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/srcdoc/setting-src-does-nothing.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <p>This test ensures that setting the src attribute does not cause the document
diff --git a/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-can-navigate.html b/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-can-navigate.html
index e321322..f57b175 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-can-navigate.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-can-navigate.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-loads-content.html b/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-loads-content.html
index 5599c62a..181c8770 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-loads-content.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/srcdoc/srcdoc-loads-content.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <iframe srcdoc="PASS"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/unique-name-all-subframes-have-same-name.html b/third_party/WebKit/LayoutTests/fast/frames/unique-name-all-subframes-have-same-name.html
index 39c8db3..c46d383 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/unique-name-all-subframes-have-same-name.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/unique-name-all-subframes-have-same-name.html
@@ -6,7 +6,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     function removeFrameAndAddNewFrame(oldFrameId) {
diff --git a/third_party/WebKit/LayoutTests/fast/frames/unique-name-ancestor-concatenation-conflict.html b/third_party/WebKit/LayoutTests/fast/frames/unique-name-ancestor-concatenation-conflict.html
index 4347e7c..7a88ec3 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/unique-name-ancestor-concatenation-conflict.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/unique-name-ancestor-concatenation-conflict.html
@@ -11,7 +11,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <body>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/unique-name-main-frame-conflict.html b/third_party/WebKit/LayoutTests/fast/frames/unique-name-main-frame-conflict.html
index 3a401009..80acf24 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/unique-name-main-frame-conflict.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/unique-name-main-frame-conflict.html
@@ -6,7 +6,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     // Before https://crrev.com/1968213002 main frame's unique name would be
     // set without any checks for conflicts with names of subframes.
diff --git a/third_party/WebKit/LayoutTests/fast/frames/unique-name-remove-add-child.html b/third_party/WebKit/LayoutTests/fast/frames/unique-name-remove-add-child.html
index ca7fe5e7..302f806b 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/unique-name-remove-add-child.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/unique-name-remove-add-child.html
@@ -6,7 +6,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     body = document.getElementById('body');
     frame1 = document.getElementById('frame1');
diff --git a/third_party/WebKit/LayoutTests/fast/frames/unique-name-set-same-name.html b/third_party/WebKit/LayoutTests/fast/frames/unique-name-set-same-name.html
index e9234f1..4620f56 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/unique-name-set-same-name.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/unique-name-set-same-name.html
@@ -6,7 +6,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     body = document.getElementById('body');
     frame1 = document.getElementById('frame1');
diff --git a/third_party/WebKit/LayoutTests/fast/frames/unload-reparent-sibling-frame.html b/third_party/WebKit/LayoutTests/fast/frames/unload-reparent-sibling-frame.html
index 4b28d89..3aae4d8 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/unload-reparent-sibling-frame.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/unload-reparent-sibling-frame.html
@@ -21,7 +21,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function runTest()
diff --git a/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html b/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html
index 683f527..4142cbce1 100644
--- a/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html
+++ b/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame-via-onclick.html
@@ -12,7 +12,7 @@
     testRunner.clearBackForwardList();
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 var formSubmitted = false;
diff --git a/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame.html b/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame.html
index f3de54d6..3de6f87 100644
--- a/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame.html
+++ b/third_party/WebKit/LayoutTests/fast/history/form-submit-in-frame.html
@@ -12,7 +12,7 @@
     testRunner.clearBackForwardList();
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 var formSubmitted = false;
diff --git a/third_party/WebKit/LayoutTests/fast/history/history-back-initial-vs-final-url.html b/third_party/WebKit/LayoutTests/fast/history/history-back-initial-vs-final-url.html
index b2e871d..75576bf 100644
--- a/third_party/WebKit/LayoutTests/fast/history/history-back-initial-vs-final-url.html
+++ b/third_party/WebKit/LayoutTests/fast/history/history-back-initial-vs-final-url.html
@@ -16,7 +16,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.dumpBackForwardList();
 } else {
diff --git a/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-fragment.html b/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-fragment.html
index 33219f0..4c990037 100644
--- a/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-fragment.html
+++ b/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-fragment.html
@@ -16,7 +16,7 @@
 description('Tests that we trigger same-document navigation when history entries are generated via fragment changes, even if the frames present in the document change between history entries.');
 
 if (window.testRunner) {
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.clearBackForwardList();
     testRunner.dumpBackForwardList();
 }
diff --git a/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-pushstate.html b/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-pushstate.html
index 324a6d6..1ce78eac 100644
--- a/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-pushstate.html
+++ b/third_party/WebKit/LayoutTests/fast/history/same-document-iframes-changing-pushstate.html
@@ -16,7 +16,7 @@
 description('Tests that we trigger same-document navigation when history entries are generated via pushState, even if the frames present in the document change between history entries.');
 
 if (window.testRunner) {
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.clearBackForwardList();
     testRunner.dumpBackForwardList();
 }
diff --git a/third_party/WebKit/LayoutTests/fast/loader/child-frame-add-after-back-forward.html b/third_party/WebKit/LayoutTests/fast/loader/child-frame-add-after-back-forward.html
index 61a856cd..297ce4b 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/child-frame-add-after-back-forward.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/child-frame-add-after-back-forward.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function navigate() {
diff --git a/third_party/WebKit/LayoutTests/fast/loader/frame-src-change-added-to-history.html b/third_party/WebKit/LayoutTests/fast/loader/frame-src-change-added-to-history.html
index 9ba60a9c..0d7d3120 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/frame-src-change-added-to-history.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/frame-src-change-added-to-history.html
@@ -4,7 +4,7 @@
 
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
   testRunner.dumpBackForwardList();
   testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/fast/loader/grandparent-completion-starts-redirect.html b/third_party/WebKit/LayoutTests/fast/loader/grandparent-completion-starts-redirect.html
index ab8818103..3bc9d61 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/grandparent-completion-starts-redirect.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/grandparent-completion-starts-redirect.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/plain-text-document.html b/third_party/WebKit/LayoutTests/fast/loader/plain-text-document.html
index 8b7c8ae0..9e5a3530 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/plain-text-document.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/plain-text-document.html
@@ -1,7 +1,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 </script>
 <iframe src="resources/plain-text-document.txt">
diff --git a/third_party/WebKit/LayoutTests/fast/loader/subframe-self-close.html b/third_party/WebKit/LayoutTests/fast/loader/subframe-self-close.html
index 6cc427b..81ed927 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/subframe-self-close.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/subframe-self-close.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/fast/overflow/scrollRevealButton.html b/third_party/WebKit/LayoutTests/fast/overflow/scrollRevealButton.html
index c94e27c..5724d1f 100644
--- a/third_party/WebKit/LayoutTests/fast/overflow/scrollRevealButton.html
+++ b/third_party/WebKit/LayoutTests/fast/overflow/scrollRevealButton.html
@@ -1,6 +1,6 @@
 <html>This test should scroll recursively to reveal the button.
 <body onload="document.getElementById('fr').contentDocument.getElementById('bt').focus();">
-<script>if(window.testRunner) testRunner.dumpChildFrameScrollPositions();</script>
+<script>if(window.testRunner) testRunner.dumpChildFrames();</script>
 <div style="height:500px"></div>
 <iframe src="resources/scrollButton1.html" id="fr" name="fr"></iframe>
 <div style="height:500px"></div>
diff --git a/third_party/WebKit/LayoutTests/fast/overflow/transformed-frame-scrollIntoView.html b/third_party/WebKit/LayoutTests/fast/overflow/transformed-frame-scrollIntoView.html
index 8cb7b15..fe284750 100644
--- a/third_party/WebKit/LayoutTests/fast/overflow/transformed-frame-scrollIntoView.html
+++ b/third_party/WebKit/LayoutTests/fast/overflow/transformed-frame-scrollIntoView.html
@@ -26,7 +26,7 @@
 <script>
 if (window.testRunner) {
     testRunner.waitUntilDone();
-    testRunner.dumpChildFrameScrollPositions();
+    testRunner.dumpChildFrames();
 }
 document.getElementById('frame').contentWindow.addEventListener('load', function() {
     document.getElementById('frame').contentDocument.getElementById('green').scrollIntoViewIfNeeded(false);
diff --git a/third_party/WebKit/LayoutTests/fast/parser/iframe-sets-parent-to-javascript-url.html b/third_party/WebKit/LayoutTests/fast/parser/iframe-sets-parent-to-javascript-url.html
index 6846e283..6ca4a05 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/iframe-sets-parent-to-javascript-url.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/iframe-sets-parent-to-javascript-url.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/parser/javascript-url-compat-mode.html b/third_party/WebKit/LayoutTests/fast/parser/javascript-url-compat-mode.html
index 493e679..26f5633 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/javascript-url-compat-mode.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/javascript-url-compat-mode.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <iframe src="javascript:'<HTML><BODY><script>document.write(document.compatMode)</script></BODY></HTML>'"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/move-during-parsing.html b/third_party/WebKit/LayoutTests/fast/parser/move-during-parsing.html
index 82fe44c..1f5e647 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/move-during-parsing.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/move-during-parsing.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/noscript-with-javascript-disabled.html b/third_party/WebKit/LayoutTests/fast/parser/noscript-with-javascript-disabled.html
index 92bc798..6723046 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/noscript-with-javascript-disabled.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/noscript-with-javascript-disabled.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.overridePreference("WebKitJavaScriptEnabled", false);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/script-tests/double-write-from-closed-iframe.js b/third_party/WebKit/LayoutTests/fast/parser/script-tests/double-write-from-closed-iframe.js
index e72fe37..381ce465 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/script-tests/double-write-from-closed-iframe.js
+++ b/third_party/WebKit/LayoutTests/fast/parser/script-tests/double-write-from-closed-iframe.js
@@ -1,5 +1,5 @@
 if (window.testRunner)
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
 var iframe = document.createElement('iframe');
 document.body.appendChild(iframe);
diff --git a/third_party/WebKit/LayoutTests/fast/parser/xml-colon-entity.html b/third_party/WebKit/LayoutTests/fast/parser/xml-colon-entity.html
index 53b67bd..09d39f5 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/xml-colon-entity.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/xml-colon-entity.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 
diff --git a/third_party/WebKit/LayoutTests/fast/parser/xml-declaration-missing-ending-mark.html b/third_party/WebKit/LayoutTests/fast/parser/xml-declaration-missing-ending-mark.html
index 46d4a8d..0321bc6 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/xml-declaration-missing-ending-mark.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/xml-declaration-missing-ending-mark.html
@@ -8,7 +8,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 
diff --git a/third_party/WebKit/LayoutTests/fast/plugins/empty-url-object.html b/third_party/WebKit/LayoutTests/fast/plugins/empty-url-object.html
index c717630a..f6c9fcf 100644
--- a/third_party/WebKit/LayoutTests/fast/plugins/empty-url-object.html
+++ b/third_party/WebKit/LayoutTests/fast/plugins/empty-url-object.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 This text should only appear once.
diff --git a/third_party/WebKit/LayoutTests/fast/preloader/iframe-srcdoc.html b/third_party/WebKit/LayoutTests/fast/preloader/iframe-srcdoc.html
index 6facae1..4f4e5dd2 100644
--- a/third_party/WebKit/LayoutTests/fast/preloader/iframe-srcdoc.html
+++ b/third_party/WebKit/LayoutTests/fast/preloader/iframe-srcdoc.html
@@ -1,7 +1,7 @@
 <body>
 <script>
     if (window.testRunner) {
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.dumpAsText();
     }
 
diff --git a/third_party/WebKit/LayoutTests/fast/tokenizer/text-plain.html b/third_party/WebKit/LayoutTests/fast/tokenizer/text-plain.html
index d604c45a..f271fe1b 100644
--- a/third_party/WebKit/LayoutTests/fast/tokenizer/text-plain.html
+++ b/third_party/WebKit/LayoutTests/fast/tokenizer/text-plain.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <iframe src="resources/text.txt"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/xsl/xslt-in-subframe.html b/third_party/WebKit/LayoutTests/fast/xsl/xslt-in-subframe.html
index 45bed27..8073720e 100644
--- a/third_party/WebKit/LayoutTests/fast/xsl/xslt-in-subframe.html
+++ b/third_party/WebKit/LayoutTests/fast/xsl/xslt-in-subframe.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 <body>
diff --git a/third_party/WebKit/LayoutTests/fast/xsl/xslt-text.html b/third_party/WebKit/LayoutTests/fast/xsl/xslt-text.html
index ff6f813..99398dd 100644
--- a/third_party/WebKit/LayoutTests/fast/xsl/xslt-text.html
+++ b/third_party/WebKit/LayoutTests/fast/xsl/xslt-text.html
@@ -1,7 +1,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     function log(message)
diff --git a/third_party/WebKit/LayoutTests/fullscreen/full-screen-frameset.html b/third_party/WebKit/LayoutTests/fullscreen/full-screen-frameset.html
index 97af268..abede27 100644
--- a/third_party/WebKit/LayoutTests/fullscreen/full-screen-frameset.html
+++ b/third_party/WebKit/LayoutTests/fullscreen/full-screen-frameset.html
@@ -1,7 +1,7 @@
 <script src="full-screen-test.js"></script>
 <script>
 if (window.testRunner)
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
 var waitingFor = 2;
 function runTest() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/asmjs/asm-warnings.html b/third_party/WebKit/LayoutTests/http/tests/asmjs/asm-warnings.html
index 9eb2eae..fba4f54b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/asmjs/asm-warnings.html
+++ b/third_party/WebKit/LayoutTests/http/tests/asmjs/asm-warnings.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setDumpConsoleMessages(true);
     testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/feature-policy/resources/xslt-document-insertion.xsl b/third_party/WebKit/LayoutTests/http/tests/feature-policy/resources/xslt-document-insertion.xsl
index 8dc9150..ffd3b78 100644
--- a/third_party/WebKit/LayoutTests/http/tests/feature-policy/resources/xslt-document-insertion.xsl
+++ b/third_party/WebKit/LayoutTests/http/tests/feature-policy/resources/xslt-document-insertion.xsl
@@ -7,7 +7,7 @@
         if (window.testRunner) {
           testRunner.waitUntilDone();
           testRunner.dumpAsText();
-          testRunner.dumpChildFramesAsText();
+          testRunner.dumpChildFrames();
         }
       </script>
       <body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/history/client-redirect-after-push-state.html b/third_party/WebKit/LayoutTests/http/tests/history/client-redirect-after-push-state.html
index c3cfdcc..e820436 100644
--- a/third_party/WebKit/LayoutTests/http/tests/history/client-redirect-after-push-state.html
+++ b/third_party/WebKit/LayoutTests/http/tests/history/client-redirect-after-push-state.html
@@ -11,7 +11,7 @@
 description('Test that history.pushState can be called between scheduling and firing of a client redirect and still create just one new history entry. This was regressed in r149960');
 
 if (window.testRunner)
-    testRunner.dumpChildFramesAsText(true);
+    testRunner.dumpChildFrames(true);
 
 function run()
 {
diff --git a/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-dnsprefetch-in-frame.html b/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-dnsprefetch-in-frame.html
index 566740c..abb79fed 100644
--- a/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-dnsprefetch-in-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-dnsprefetch-in-frame.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
     if (window.internals) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-preconnect-in-frame.html b/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-preconnect-in-frame.html
index 2dd496c..ca13a4e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-preconnect-in-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/linkHeader/link-preconnect-in-frame.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
     if (window.internals) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/form-target-iframe-location-change.html b/third_party/WebKit/LayoutTests/http/tests/misc/form-target-iframe-location-change.html
index 8a69373f..e1be0deb 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/form-target-iframe-location-change.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/form-target-iframe-location-change.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/frameset-disables-resource-scheduling.html b/third_party/WebKit/LayoutTests/http/tests/misc/frameset-disables-resource-scheduling.html
index cc053d8..5abc13c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/frameset-disables-resource-scheduling.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/frameset-disables-resource-scheduling.html
@@ -3,7 +3,7 @@
         <script>
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
             }
         </script>
     </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/last-modified-parsing.html b/third_party/WebKit/LayoutTests/http/tests/misc/last-modified-parsing.html
index dc66316..5b5d765 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/last-modified-parsing.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/last-modified-parsing.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function getExpectedLastModified(lastModified) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.html b/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.html
index 89ee46d..500c0032 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.https.html b/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.https.html
index 89ee46d..500c0032 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.https.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/link-preconnect-schemeless.https.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     if (window.internals)
         internals.settings.setLogDnsPrefetchAndPreconnect(true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/policy-delegate-called-twice.html b/third_party/WebKit/LayoutTests/http/tests/misc/policy-delegate-called-twice.html
index 74614f3..7213f7a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/policy-delegate-called-twice.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/policy-delegate-called-twice.html
@@ -4,7 +4,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/tests-finishing-simultaneously.html b/third_party/WebKit/LayoutTests/http/tests/misc/tests-finishing-simultaneously.html
index d08e60ab..4636864 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/tests-finishing-simultaneously.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/tests-finishing-simultaneously.html
@@ -20,7 +20,7 @@
     document.body.innerText = 'Main frame';
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
     window.addEventListener("message", function(event) {
         loaded_frames = loaded_frames + 1;
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-cross-origin.html b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-cross-origin.html
index e340997..a6abc3b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-cross-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-cross-origin.html
@@ -3,7 +3,7 @@
   <script>
     if (window.testRunner) {
         testRunner.waitUntilDone();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
   </script>
   <!-- small same-origin child frame loading large cross-orgin grandchild frame -->
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-gbk.html b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-gbk.html
index 544d247..c21b1216 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-gbk.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-gbk.html
@@ -5,7 +5,7 @@
   <!-- See also https://bugs.webkit.org/show_bug.cgi?id=71316 -->
   <script>
     if (window.testRunner)
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
   </script>
   <frameset rows="90%,10%">
     <frame src="resources/frame-with-anchor-gbk.html#%89g" name="main">
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-same-origin.html b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-same-origin.html
index 6f16175..08dcf4d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-same-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames-same-origin.html
@@ -4,7 +4,7 @@
   <script>
     if (window.testRunner) {
         testRunner.waitUntilDone();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
   </script>
   <!-- small same-origin child frame loading large same-orgin grandchild frame -->
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames.html b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames.html
index 740625a..4cb31f53 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-frames.html
@@ -2,7 +2,7 @@
   <!-- See resources/frame-with-anchor.html for description of test -->
   <script>
     if (window.testRunner)
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
   </script>
   <frameset rows="90%,10%">
     <frame src="resources/frame-with-anchor.html#anchor1" name="main">
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-subframeload.html b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-subframeload.html
index 532dee73..ebef4f0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-subframeload.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/anchor-subframeload.html
@@ -1,9 +1,7 @@
 <script type="text/javascript" src="resources/testcode.js"></script>
 <script>
-    if(window.testRunner) { 
-        testRunner.dumpChildFrameScrollPositions();
+    if (window.testRunner)
         testRunner.dumpAsText();
-    }
     runLoadChildFrameTest("resources/success200.html#anchor1");
 </script>
 This page just kicks off a test, and should not appear in the expected test output.
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/error404-frames.html b/third_party/WebKit/LayoutTests/http/tests/navigation/error404-frames.html
index 33250878..80bc450 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/error404-frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/error404-frames.html
@@ -3,7 +3,7 @@
   <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.clearBackForwardList();
         testRunner.dumpBackForwardList();        
     }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-get.html b/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-get.html
index c632ee83..a5f0a0e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-get.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-get.html
@@ -14,7 +14,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     function onLoad() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-no-referrer.html b/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-no-referrer.html
index d564b68b..5ade6578 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-no-referrer.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-no-referrer.html
@@ -15,7 +15,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     function onLoad() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-post.html b/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-post.html
index 7a737ae..9401f7b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-post.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/form-targets-cross-site-frame-post.html
@@ -14,7 +14,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     function onLoad() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/form-with-enctype-targets-cross-site-frame.html b/third_party/WebKit/LayoutTests/http/tests/navigation/form-with-enctype-targets-cross-site-frame.html
index 411f54e..1118bce 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/form-with-enctype-targets-cross-site-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/form-with-enctype-targets-cross-site-frame.html
@@ -24,7 +24,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     function onLoad() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames-goback1.html b/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames-goback1.html
index d71a2b9..0ee2598 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames-goback1.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames-goback1.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.dumpBackForwardList();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames.html b/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames.html
index 23715b5..1bfd30e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-frames.html
@@ -1,7 +1,7 @@
 <script>
   if (window.testRunner) {
       testRunner.dumpAsText();
-      testRunner.dumpChildFramesAsText();
+      testRunner.dumpChildFrames();
       testRunner.waitUntilDone();
       testRunner.dumpBackForwardList();
    }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames-goback1.html b/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames-goback1.html
index 774ad84..e4dc3ff 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames-goback1.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames-goback1.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.dumpBackForwardList();
  }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames.html b/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames.html
index a00757c..962eee32 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/postredirect-frames.html
@@ -2,7 +2,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
     runBasicTest("resources/frameset.pl?frameURL=success200.html", "postredirect");
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/relativeanchor-frames.html b/third_party/WebKit/LayoutTests/http/tests/navigation/relativeanchor-frames.html
index 2db54d8..c7ada1c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/relativeanchor-frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/relativeanchor-frames.html
@@ -1,10 +1,8 @@
 <script type="text/javascript" src="resources/testcode.js"></script>
 <!-- %23 below is a #, which is escaped so the anchor applies to the subframe instead of the frameset. -->
 <script>
-    if(window.testRunner) {
-        testRunner.dumpChildFrameScrollPositions();
+    if(window.testRunner)
         testRunner.dumpAsText();
-    }
     runBasicTest("resources/frameset.pl?frameURL=success200.html", "relativeanchor");
 </script>
 This page just kicks off a test, and should not appear in the expected test output.
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-frame.html b/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-frame.html
index 9397a34c..a7c36ec 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-frame.html
@@ -4,7 +4,7 @@
 function startTest()
 {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.queueLoad("resources/reload-subframe.pl?type=frame");
     testRunner.queueReload();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-iframe.html b/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-iframe.html
index 01696254..841042e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-iframe.html
@@ -4,7 +4,7 @@
 function startTest()
 {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.queueLoad("resources/reload-subframe.pl?type=iframe");
     testRunner.queueReload();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-object.html b/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-object.html
index c00d508..a41e4b4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-object.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/reload-subframe-object.html
@@ -4,7 +4,7 @@
 function startTest()
 {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.queueLoad("resources/reload-subframe.pl?type=object");
     testRunner.queueReload();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/rename-subframe-goback.html b/third_party/WebKit/LayoutTests/http/tests/navigation/rename-subframe-goback.html
index 0c3294b52..748a288 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/rename-subframe-goback.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/rename-subframe-goback.html
@@ -3,7 +3,7 @@
   <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
         testRunner.clearBackForwardList();
     }
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/target-frame-from-window.html b/third_party/WebKit/LayoutTests/http/tests/navigation/target-frame-from-window.html
index 515b734..f417f1a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/target-frame-from-window.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/target-frame-from-window.html
@@ -6,7 +6,7 @@
 if (window.testRunner) {
     testRunner.setCanOpenWindows();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/notifications/notification-sandbox-permission.html b/third_party/WebKit/LayoutTests/http/tests/notifications/notification-sandbox-permission.html
index f8da6ac..9e883a5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/notifications/notification-sandbox-permission.html
+++ b/third_party/WebKit/LayoutTests/http/tests/notifications/notification-sandbox-permission.html
@@ -10,7 +10,7 @@
             if (window.testRunner) {
                 testRunner.setPermission('notifications', 'granted', location.origin, location.origin);
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
             }
         </script>
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/plugins/cross-frame-object-access.html b/third_party/WebKit/LayoutTests/http/tests/plugins/cross-frame-object-access.html
index 8103aeb..2df91ca 100644
--- a/third_party/WebKit/LayoutTests/http/tests/plugins/cross-frame-object-access.html
+++ b/third_party/WebKit/LayoutTests/http/tests/plugins/cross-frame-object-access.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <iframe name="childFrame" src="http://localhost:8000/plugins/resources/cross-frame-object-access.html"></iframe>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html b/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html
index e1495f1..cf65986 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html
@@ -12,7 +12,7 @@
             testRunner.waitUntilDone();
             testRunner.setCanOpenWindows();
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         var message_fail = 'FAIL: XSS was allowed.';
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html b/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html
index ebb7a68..3345fd3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html
@@ -12,7 +12,7 @@
             testRunner.waitUntilDone();
             testRunner.setCanOpenWindows();
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         var message_fail = 'FAIL: XSS was allowed.';
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html b/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html
index 415388c..208fb05 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html
@@ -12,7 +12,7 @@
             testRunner.waitUntilDone();
             testRunner.setCanOpenWindows();
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         var message_fail = 'FAIL: XSS was allowed.';
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/canvas-cors-with-two-hosts.html b/third_party/WebKit/LayoutTests/http/tests/security/canvas-cors-with-two-hosts.html
index 0b058c9..f50de7b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/canvas-cors-with-two-hosts.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/canvas-cors-with-two-hosts.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html
index 875e3710..fdd63cd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-data.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type">
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html
index 88cb2cd..0f18299 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-mismatched-url.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type">
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html
index c997d9b..8c1f8f7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-data.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <script src="/js-test-resources/plugin.js"></script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html
index 3cc09e3..1bf87ed 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/1.1/plugintypes-notype-url.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type">
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-01.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-01.html
index d4e036e..399c641 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-01.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-01.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-02.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-02.html
index e1be72b2..e2b3b66a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-02.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-02.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-03.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-03.html
index a568863a..20ab01d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-03.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-03.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-04.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-04.html
index b253361..e96e5ad 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-04.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-04.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-05.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-05.html
index 5339887..75d752f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-05.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-05.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-multiple-headers.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-multiple-headers.html
index ad46653..c7cb7c8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-multiple-headers.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/directive-parsing-multiple-headers.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-allowed.html
index 85267ce9..0773188 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-allowed.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-blocked.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-blocked.html
index f8a80ac..4abe0ee 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-blocked.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/object-src-none-blocked.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js
index c94194b6..8987a98 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-plugin-test.js
@@ -1,7 +1,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function testExperimentalPolicy() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-test.js b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-test.js
index cfc7292..4bb16ae8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-test.js
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/multiple-iframe-test.js
@@ -1,7 +1,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 function testPreescapedPolicy() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/reflected-xss-and-xss-protection.js b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/reflected-xss-and-xss-protection.js
index e573a00..fb09d2a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/reflected-xss-and-xss-protection.js
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/resources/reflected-xss-and-xss-protection.js
@@ -1,6 +1,6 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setXSSAuditorEnabled(true);
     testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-loads-with-img-src.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-loads-with-img-src.html
index 368c4af..7cdac3d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-loads-with-img-src.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-loads-with-img-src.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-in-iframe.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-in-iframe.html
index d932e84..eceb270 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-in-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-in-iframe.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none-inline-event.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none-inline-event.html
index 5ebee34..358347e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none-inline-event.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none-inline-event.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none.html
index 1ead91f..2db6be8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-none.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-01.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-01.html
index 758bf525..432e17d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-01.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-01.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-02.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-02.html
index 26cbb8d..5244a88 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-02.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-02.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-03.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-03.html
index 4a58376..175fcee2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-03.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self-blocked-03.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self.html
index 31dc3e2..51dcae9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-self.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-star-cross-scheme.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-star-cross-scheme.html
index 34dad04..83eccbd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-star-cross-scheme.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/script-src-star-cross-scheme.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/first-party-cookie-allow.xsl b/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/first-party-cookie-allow.xsl
index e825ad0e..34783c7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/first-party-cookie-allow.xsl
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/first-party-cookie-allow.xsl
@@ -7,7 +7,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
     // Start with a clean state, as otherwise an expired cookie for this domain could affect behavior with CFNetwork.
     // Can be removed once rdar://problem/10080130 is fixed.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/third-party-cookie-blocking.xsl b/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/third-party-cookie-blocking.xsl
index b89ba1f1..56d4ee2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/third-party-cookie-blocking.xsl
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cookies/resources/third-party-cookie-blocking.xsl
@@ -7,7 +7,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
     // Start with a clean state, as otherwise an expired cookie for this domain could affect behavior with CFNetwork.
     // Can be removed once rdar://problem/10080130 is fixed.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-main-frame.html b/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-main-frame.html
index 73c24b3..de752620a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-main-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-main-frame.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
     // Start with a clean state, as otherwise an expired cookie for this domain could affect behavior with CFNetwork.
     // Can be removed once <rdar://problem/10080130> is fixed.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-user-action.html b/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-user-action.html
index 227f68b5..73c1472 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-user-action.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-user-action.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
     // Start with a clean state, as otherwise an expired cookie for this domain could affect behavior with CFNetwork.
     // Can be removed once <rdar://problem/10080130> is fixed.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking.html b/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking.html
index 6a92ec6..ebc163c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cookies/third-party-cookie-blocking.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
     testRunner.waitUntilDone();
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 
     // Start with a clean state, as otherwise an expired cookie for this domain could affect behavior with CFNetwork.
     // Can be removed once <rdar://problem/10080130> is fixed.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-callback-explicit-domain-DENY.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-callback-explicit-domain-DENY.html
index 0ac4fdb..23b27d6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-callback-explicit-domain-DENY.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-callback-explicit-domain-DENY.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 <iframe src="resources/cross-frame-iframe-callback-explicit-domain-DENY.html" style=""></iframe>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-delete.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-delete.html
index deb6a8a8..3c508ef 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-delete.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-delete.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-dispatchEvent.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-dispatchEvent.html
index 08af109f..4ce673e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-dispatchEvent.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-dispatchEvent.html
@@ -5,7 +5,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-document-direct.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-document-direct.html
index a017fba0..e6aef6fd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-document-direct.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-document-direct.html
@@ -1,7 +1,7 @@
 <script>
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frameelement.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frameelement.html
index 8dc68ae..18553fb7a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frameelement.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frameelement.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-location-put.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-location-put.html
index d4b489ae..bb4253c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-location-put.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-location-put.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-object-prototype.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-object-prototype.html
index 7950864..0511d8c7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-object-prototype.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-object-prototype.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-appcache-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-appcache-allowed.html
index 54b93183..e5da986 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-appcache-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-appcache-allowed.html
@@ -6,7 +6,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
     window.onmessage = function(message) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-indexeddb-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-indexeddb-allowed.html
index e727c36..c8b0e88 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-indexeddb-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-indexeddb-allowed.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-local-storage-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-local-storage-allowed.html
index a78ee145..76fc468 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-local-storage-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-local-storage-allowed.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
 	testRunner.dumpAsText();
-	testRunner.dumpChildFramesAsText();
+	testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-session-storage-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-session-storage-allowed.html
index cbb1431..2b9ecf0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-session-storage-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-session-storage-allowed.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
 	testRunner.dumpAsText();
-	testRunner.dumpChildFramesAsText();
+	testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-shared-worker-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-shared-worker-allowed.html
index a92ca52..d6dc996 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-shared-worker-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-shared-worker-allowed.html
@@ -4,7 +4,7 @@
 var frames = 2;
 if (window.testRunner) {
 	testRunner.dumpAsText();
-	testRunner.dumpChildFramesAsText();
+	testRunner.dumpChildFrames();
 	testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-websql-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-websql-allowed.html
index 089ef71..27d26d7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-websql-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-websql-allowed.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
 	testRunner.dumpAsText();
-	testRunner.dumpChildFramesAsText();
+	testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html
index ff9050d0..f0374c3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-worker-indexeddb-allowed.html
@@ -5,7 +5,7 @@
         var frames = 2;
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-BLOCKED.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-BLOCKED.html
index d380590..2ecee18 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-BLOCKED.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-BLOCKED.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
   testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-redirect-BLOCKED.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-redirect-BLOCKED.html
index 3a0cff2..0d42562 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-redirect-BLOCKED.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-origin-xsl-redirect-BLOCKED.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
   testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/data-url-xsl.html b/third_party/WebKit/LayoutTests/http/tests/security/data-url-xsl.html
index 8e5a768..e6e3805 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/data-url-xsl.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/data-url-xsl.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
   testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html
index 40a06809..37ff9e7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-2-level.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-2-level.html
index 9d05396..e18ea250 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-2-level.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-2-level.html
@@ -3,7 +3,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         function loaded() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-to-data-url-sub-frame.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-to-data-url-sub-frame.html
index 55504f0..a0df1f8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-to-data-url-sub-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-to-data-url-sub-frame.html
@@ -5,7 +5,7 @@
         var subFramesLoaded = 0;
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame.html
index 155a157..00949556 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame.html
@@ -3,7 +3,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-to-data-url.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-to-data-url.html
index 9550958..5d69fa8d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-to-data-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-to-data-url.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-from-data-url.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-from-data-url.html
index 80a5222..c18e18b9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-from-data-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-from-data-url.html
@@ -3,7 +3,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html
index d33d329..4b8897b6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe-location-change.html
@@ -6,7 +6,7 @@
         {
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
                 testRunner.waitUntilDone();
             }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html
index 53dfb4ce..faecb93 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-in-foreign-domain-subframe.html
@@ -6,7 +6,7 @@
         {
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
                 testRunner.waitUntilDone();
             }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-2-level.html b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-2-level.html
index 9c19ebd..bf54dd6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-2-level.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-2-level.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frame-loading-via-document-write.html b/third_party/WebKit/LayoutTests/http/tests/security/frame-loading-via-document-write.html
index 96b2b36..d1ac786 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frame-loading-via-document-write.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frame-loading-via-document-write.html
@@ -9,7 +9,7 @@
     if (window.testRunner) {
         testRunner.waitUntilDone();
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     }
 
     var outHTML="<frameset rows=\"33%, 33%, 33%\">"+
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-etld-plus-1-top-navigation-without-user-gesture.html b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-etld-plus-1-top-navigation-without-user-gesture.html
index 806f64e7..8244804 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-etld-plus-1-top-navigation-without-user-gesture.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-etld-plus-1-top-navigation-without-user-gesture.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setDumpConsoleMessages(true);
     testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-origin-top-navigation-without-user-gesture.html b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-origin-top-navigation-without-user-gesture.html
index 96658d4..e1df9237 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-origin-top-navigation-without-user-gesture.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-same-origin-top-navigation-without-user-gesture.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setDumpConsoleMessages(true);
     testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-targeted-subframe-navigation-change.html b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-targeted-subframe-navigation-change.html
index 7d1733dac..70c77602 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-targeted-subframe-navigation-change.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-targeted-subframe-navigation-change.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html
index 3dd40fe0b..9a0ec2d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html
@@ -6,7 +6,7 @@
         {
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
                 testRunner.setDumpConsoleMessages(false);
                 testRunner.waitUntilDone();
                 testRunner.setCanOpenWindows();
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-user-gesture-in-parent.html b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-user-gesture-in-parent.html
index 98aba2f0..f473720 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-user-gesture-in-parent.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-user-gesture-in-parent.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setDumpConsoleMessages(false);
     testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html
index 84d404b9..25079cc 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/frameNavigation/xss-DENIED-top-navigation-without-user-gesture.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setDumpConsoleMessages(true);
     testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/host-compare-case-insensitive.html b/third_party/WebKit/LayoutTests/http/tests/security/host-compare-case-insensitive.html
index 11d1a62..0e8a800 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/host-compare-case-insensitive.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/host-compare-case-insensitive.html
@@ -3,7 +3,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/resources/javascriptURL-execution-context.js b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/resources/javascriptURL-execution-context.js
index a166f4eb..1da566c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/resources/javascriptURL-execution-context.js
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/resources/javascriptURL-execution-context.js
@@ -1,6 +1,6 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-2-level.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-2-level.html
index c7e8a99..1aff943 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-2-level.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-2-level.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         var innerURL = 'javascript:\\\"<html>'
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-to-javascript-url-sub-frame.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-to-javascript-url-sub-frame.html
index 5409431..a95eb6e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-to-javascript-url-sub-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame-to-javascript-url-sub-frame.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame.html
index ce83c72..9cc027d4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-sub-frame.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         var url = "javascript:\"<html>"
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-to-javscript-url.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-to-javscript-url.html
index 8a7fa34..cc3bd63 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-to-javscript-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-from-javascript-url-to-javscript-url.html
@@ -5,7 +5,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-from-javscript-url.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-from-javscript-url.html
index 17f9af7..8967138b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-from-javscript-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-from-javscript-url.html
@@ -6,7 +6,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         var innerURL = 'javascript:\\\"<html>'
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame-2-level.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame-2-level.html
index 5d18a05..fe7e6b3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame-2-level.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame-2-level.html
@@ -6,7 +6,7 @@
         {
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
                 testRunner.waitUntilDone();
             }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-from-javascript-url-in-foreign-domain-subframe.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-from-javascript-url-in-foreign-domain-subframe.html
index 018b9c7..20dd2337e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-from-javascript-url-in-foreign-domain-subframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-from-javascript-url-in-foreign-domain-subframe.html
@@ -9,7 +9,7 @@
         if (window.testRunner) {
             testRunner.dumpAsText();
             testRunner.waitUntilDone();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-to-javascript-url-in-foreign-domain-subframe.html b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-to-javascript-url-in-foreign-domain-subframe.html
index 7015adf..2aaada8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-to-javascript-url-in-foreign-domain-subframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/javascriptURL/xss-DENIED-to-javascript-url-in-foreign-domain-subframe.html
@@ -6,7 +6,7 @@
         {
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
                 testRunner.waitUntilDone();
             }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-01.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-01.html
index 95749106..31b9bd8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-01.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-01.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-02.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-02.html
index 32494c0..83985aa6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-02.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-02.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-03.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-03.html
index b4aad94a..0b48982 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-03.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-03.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-04.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-04.html
index 50245d7..2029e51a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-04.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-04.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-05.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-05.html
index b7617e40..508bd16 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-05.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-05.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-06.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-06.html
index 4743a1e..8ed4eb0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-06.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-06.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-07.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-07.html
index 43c9958..8a06052 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-07.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-07.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-08.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-08.html
index 8b1c2cf..7f82de0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-08.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-08.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-09.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-09.html
index ba7e4a55..1f2be97 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-09.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-09.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-10.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-10.html
index da2aa4cd..ef3bc63 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-10.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-10.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-11.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-11.html
index 0f9ec4af..5a323308 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-11.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-11.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-12.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-12.html
index 0343400..ed2af76 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-12.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-12.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-13.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-13.html
index bf077684..e68a1ba0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-13.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-13.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-14.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-14.html
index 7ff2ab0..b30e13a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-14.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-14.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-15.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-15.html
index ff581f6..28c3b520 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-15.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-15.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-16.html b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-16.html
index d7abd75..ce48a2d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-16.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mime-type-execute-as-html-16.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/blob-url-in-iframe.html b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/blob-url-in-iframe.html
index cad7467..b3fa3ee 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/blob-url-in-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/blob-url-in-iframe.html
@@ -11,7 +11,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/filesystem-url-in-iframe.html b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/filesystem-url-in-iframe.html
index 5b6e641..db86fbd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/filesystem-url-in-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/filesystem-url-in-iframe.html
@@ -11,7 +11,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/nonwebby-scheme-in-iframe-allowed.https.html b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/nonwebby-scheme-in-iframe-allowed.https.html
index 880e3dd..8c54e58 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/nonwebby-scheme-in-iframe-allowed.https.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/nonwebby-scheme-in-iframe-allowed.https.html
@@ -9,7 +9,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.overridePreference("WebKitAllowRunningInsecureContent", false);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/originHeader/origin-header-for-data.html b/third_party/WebKit/LayoutTests/http/tests/security/originHeader/origin-header-for-data.html
index 5afbcc8..cf27554 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/originHeader/origin-header-for-data.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/originHeader/origin-header-for-data.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-always.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-always.html
index e9784e5..6ed8e75 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-always.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-always.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-default.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-default.html
index d78d4f3e..65f8a610 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-default.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-default.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-always.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-always.html
index 4d1704c..30da133b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-always.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-always.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-default.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-default.html
index fb3b2d9..e2980116 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-default.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-default.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-never.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-never.html
index 711749a..8b8940ae 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-never.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-never.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer-when-downgrade.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer-when-downgrade.html
index c2a7803..35b3048 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer-when-downgrade.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer-when-downgrade.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer.html
index 0badc6ff..7c35d73 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-no-referrer.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin-when-crossorigin.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin-when-crossorigin.html
index b2717be5..0104947 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin-when-crossorigin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin-when-crossorigin.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin.html
index 56a2fed..4eabcd3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-origin.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-unsafe-url.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-unsafe-url.html
index d0d2da57..5bc30e8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-unsafe-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-https-unsafe-url.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-invalid.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-invalid.html
index a52425b..0aed842 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-invalid.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-invalid.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-never.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-never.html
index 8a2f925..0255b51 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-never.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-never.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer-when-downgrade.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer-when-downgrade.html
index b69c43b..68ac3f8f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer-when-downgrade.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer-when-downgrade.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer.html
index 13710b55..e74dd54 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-no-referrer.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-crossorigin.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-crossorigin.html
index cc03244..7d5731c0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-crossorigin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-crossorigin.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-sameorigin.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-sameorigin.html
index bdb08ec1..2a8dcb1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-sameorigin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin-when-crossorigin-is-sameorigin.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin.html
index 0f6620ba2..9122845 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-origin.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect-link.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect-link.html
index c092a55b..b50cdcd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect-link.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect-link.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setCanOpenWindows();
     testRunner.setCloseRemainingWindowsWhenComplete(true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect.html
index 02da7ca..e256055 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-redirect.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-rel-noreferrer.html b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-rel-noreferrer.html
index f635eecd..4732eed 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-rel-noreferrer.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/referrer-policy-rel-noreferrer.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/resources/cross-frame-access.js b/third_party/WebKit/LayoutTests/http/tests/security/resources/cross-frame-access.js
index ce47fbc..e58da59 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/resources/cross-frame-access.js
+++ b/third_party/WebKit/LayoutTests/http/tests/security/resources/cross-frame-access.js
@@ -145,7 +145,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
 
@@ -186,7 +186,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
 
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-blocks-access-from-parent.html b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-blocks-access-from-parent.html
index 28a79fe0..1c2dc16 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-blocks-access-from-parent.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-blocks-access-from-parent.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
 
         function test() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-document-cookie.html b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-document-cookie.html
index 9493d3a..8407cf4c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-document-cookie.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-document-cookie.html
@@ -5,7 +5,7 @@
 
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-meta-refresh.html b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-meta-refresh.html
index 472e256a..a974ae4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-meta-refresh.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-meta-refresh.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
         }
     </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-opener-can-close-window.html b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-opener-can-close-window.html
index eb03aaab..ac56571 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-opener-can-close-window.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-opener-can-close-window.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setCanOpenWindows(true);
     testRunner.setCloseRemainingWindowsWhenComplete(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer-for-forms.html b/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer-for-forms.html
index 9232f69..18ff210 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer-for-forms.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer-for-forms.html
@@ -2,7 +2,7 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
     testRunner.waitUntilDone();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 The srcdoc iframe below should use this document's URL as its referrer.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer.html b/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer.html
index 756781d..4e9686f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/srcdoc-inherits-referrer.html
@@ -1,7 +1,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
 }
 </script>
 The srcdoc iframe below should use this document's URL as its referrer.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-blocked.html b/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-blocked.html
index ac39ba1..674b569 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-blocked.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-blocked.html
@@ -7,7 +7,7 @@
         <script>
           if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
           }
        </script>
     </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-with-user-gesture-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-with-user-gesture-allowed.html
index 0ce69d7..93ac1a70 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-with-user-gesture-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-cross-origin-iframe-with-user-gesture-allowed.html
@@ -7,7 +7,7 @@
         <script>
           if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
           }
         function loaded()
         {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-same-origin-iframe-with-user-gesture-allowed.html b/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-same-origin-iframe-with-user-gesture-allowed.html
index e034dfc..a200c75 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-same-origin-iframe-with-user-gesture-allowed.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/vibration/vibrate-in-same-origin-iframe-with-user-gesture-allowed.html
@@ -7,7 +7,7 @@
         <script>
           if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
           }
         function loaded()
         {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-domain.html b/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-domain.html
index e1505e3b..c9b558c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-domain.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-domain.html
@@ -4,7 +4,7 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
     testRunner.waitUntilDone();
-    testRunner.dumpChildFramesAsText()
+    testRunner.dumpChildFrames()
 }
 function test()
 {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-port.html b/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-port.html
index 4b88ee9..df58ff0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-port.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/window-properties-clear-port.html
@@ -4,7 +4,7 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
     testRunner.waitUntilDone();
-    testRunner.dumpChildFramesAsText()
+    testRunner.dumpChildFrames()
 }
 function test()
 {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/window-properties-pass.html b/third_party/WebKit/LayoutTests/http/tests/security/window-properties-pass.html
index 94eeed3ef..c856e09 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/window-properties-pass.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/window-properties-pass.html
@@ -4,7 +4,7 @@
 if (window.testRunner) {
     testRunner.dumpAsText();
     testRunner.waitUntilDone();
-    testRunner.dumpChildFramesAsText()
+    testRunner.dumpChildFrames()
 }
 function test()
 {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-assign-location-href-javascript.html b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-assign-location-href-javascript.html
index cf9e7772..28d239e5 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-assign-location-href-javascript.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-assign-location-href-javascript.html
@@ -2,7 +2,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 
 function runTest() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-javascript-variations.html b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-javascript-variations.html
index 0a26245..db2e399 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-javascript-variations.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-javascript-variations.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 
 function runTest() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/chunked-big-script.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/chunked-big-script.html
index 3414de61..c18867f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/chunked-big-script.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/chunked-big-script.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setXSSAuditorEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script1.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script1.html
index 4a15e5a..eca586c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script1.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script1.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setXSSAuditorEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script2.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script2.html
index b10f1a08..c861a70 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script2.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script2.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setXSSAuditorEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script3.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script3.html
index 0a9f5c2..6e9f59d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script3.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/faux-script3.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setXSSAuditorEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-base-href.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-base-href.html
index e088a13..d94fb02 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-base-href.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-base-href.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-get-from-iframe.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-get-from-iframe.html
index 24e5b83..9c30f3c6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-get-from-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-get-from-iframe.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-javascript-url.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-javascript-url.html
index 5948aaf..7aa4ae6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-javascript-url.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-javascript-url.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-no-inherit.php b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-no-inherit.php
index 58f4bf7..77707a9b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-no-inherit.php
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-iframe-no-inherit.php
@@ -8,7 +8,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-javascript-link.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-javascript-link.html
index 6c5f827..7319bb7 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-javascript-link.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-javascript-link.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-link-onclick.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-link-onclick.html
index 4ae96f9..651dec165 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-link-onclick.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-link-onclick.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-object-tag.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-object-tag.html
index 2378e51a..6dc765db6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-object-tag.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-object-tag.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-post-from-iframe.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-post-from-iframe.html
index f836b79..97a2cd48 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-post-from-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-post-from-iframe.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-cross-domain.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-cross-domain.html
index 506ead8..03dc4d0 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-cross-domain.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-cross-domain.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-with-source.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-with-source.html
index 76a9c4f..1319471 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-with-source.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag-with-source.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag.html
index ea5313fd..e890275 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/full-block-script-tag.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe.html
index d8d230cc..bda03212c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
   testRunner.setXSSAuditorEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/link-opens-new-window.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/link-opens-new-window.html
index b884eae0..24f26cb 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/link-opens-new-window.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/link-opens-new-window.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
     testRunner.setXSSAuditorEnabled(true);
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setCanOpenWindows();
     testRunner.setCloseRemainingWindowsWhenComplete(true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-HTML.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-HTML.html
index d06c615d..ea74723 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-HTML.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-HTML.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.setXSSAuditorEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-xss-protection-header-1.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-xss-protection-header-1.html
index 882ee9f..aa85753 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-xss-protection-header-1.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/malformed-xss-protection-header-1.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/non-block-javascript-url-frame.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/non-block-javascript-url-frame.html
index aa3798b..c365c83 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/non-block-javascript-url-frame.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/non-block-javascript-url-frame.html
@@ -5,7 +5,7 @@
 if (window.testRunner) {
   testRunner.dumpAsText();
   testRunner.setXSSAuditorEnabled(true);
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 </script>
 </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/reflection-in-path.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/reflection-in-path.html
index 576645c..b453f12 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/reflection-in-path.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/reflection-in-path.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin-https.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin-https.html
index b6f0a2e..ad34bad 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin-https.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin-https.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin.html
index ca8a315..1179be1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-cross-origin.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block.html
index 05aa1d0d..4217a8c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-replace-state.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-replace-state.html
index 37ddfbd..0b459d4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-replace-state.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag-replace-state.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag.html
index 26ee37a..ff7c492 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/report-script-tag.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/script-tag-post-redirect.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/script-tag-post-redirect.html
index 45c64dbe..7075da8 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/script-tag-post-redirect.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/script-tag-post-redirect.html
@@ -4,7 +4,7 @@
 <script>
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
   testRunner.setXSSAuditorEnabled(true);
   testRunner.waitUntilDone();
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter-2.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter-2.html
index 569de47..a144685e2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter-2.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter-2.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
             testRunner.setXSSAuditorEnabled(true);
         }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter.html
index 9796cd7..d4f31f54 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-clutter.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
             testRunner.setXSSAuditorEnabled(true);
         }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-href.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-href.html
index e7fbb2da..90c569ce 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-href.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate-href.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
             testRunner.setXSSAuditorEnabled(true);
         }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate.html
index a8f7230..9b36cbb 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/svg-animate.html
@@ -4,7 +4,7 @@
     <script>
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
             testRunner.setXSSAuditorEnabled(true);
         }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover-expected.txt
index 3038378..3c1d9525 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover-expected.txt
@@ -5,7 +5,7 @@
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
     testRunner.dumpAsMarkup();
-    testRunner.dumpChildFramesAsMarkup();
+    testRunner.dumpChildFrames();
     testRunner.setViewSourceForFrame('x', true);
     frame.onload = testRunner.notifyDone.bind(testRunner);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover.html
index cea770c..699c685e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-onmouseover.html
@@ -7,7 +7,7 @@
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
     testRunner.dumpAsMarkup();
-    testRunner.dumpChildFramesAsMarkup();
+    testRunner.dumpChildFrames();
     testRunner.setViewSourceForFrame('x', true);
     frame.onload = testRunner.notifyDone.bind(testRunner);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag-expected.txt
index a45c145e..803aee87 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag-expected.txt
@@ -5,7 +5,7 @@
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
     testRunner.dumpAsMarkup();
-    testRunner.dumpChildFramesAsMarkup();
+    testRunner.dumpChildFrames();
     testRunner.setViewSourceForFrame('x', true);
     frame.onload = testRunner.notifyDone.bind(testRunner);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag.html
index df81ce16..d6a8df6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/viewsource-script-tag.html
@@ -7,7 +7,7 @@
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
     testRunner.dumpAsMarkup();
-    testRunner.dumpChildFramesAsMarkup();
+    testRunner.dumpChildFrames();
     testRunner.setViewSourceForFrame('x', true);
     frame.onload = testRunner.notifyDone.bind(testRunner);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-01.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-01.html
index 63ec260..80cb24a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-01.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-01.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-02.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-02.html
index d2b0b84..f9da37f 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-02.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-02.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-03.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-03.html
index 3f393319..e2279db9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-03.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-03.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-04.html b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-04.html
index 4a62a10..ce2ef04 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-04.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/xss-protection-parsing-04.html
@@ -5,7 +5,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.waitUntilDone();
     testRunner.setXSSAuditorEnabled(true);
 }
diff --git a/third_party/WebKit/LayoutTests/http/tests/storage/callbacks-are-called-in-correct-context.html b/third_party/WebKit/LayoutTests/http/tests/storage/callbacks-are-called-in-correct-context.html
index 50816aa..23e6be4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/storage/callbacks-are-called-in-correct-context.html
+++ b/third_party/WebKit/LayoutTests/http/tests/storage/callbacks-are-called-in-correct-context.html
@@ -5,7 +5,7 @@
 {
     if (window.testRunner) {
         testRunner.dumpAsText();
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
         testRunner.waitUntilDone();
     }
     top.frames[0].document.getElementById("console").innerText = "";
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/origin-exact-matching-test.js b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/origin-exact-matching-test.js
index 4ebec9a7..e3bc8bc 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/origin-exact-matching-test.js
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/origin-exact-matching-test.js
@@ -29,7 +29,7 @@
 
 function injectIframeTest() {
     if (window.testRunner)
-        testRunner.dumpChildFramesAsText();
+        testRunner.dumpChildFrames();
     var which = window.location.href.match(/(\d\d).html/)[1];
     var frame = document.createElement('iframe');
     frame.src = "http://localhost:8000/xmlhttprequest/resources/origin-exact-matching-iframe.html?" + which;
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-004.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-004.html
index 5c7f7e0..27683083 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-004.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-004.html
@@ -6,7 +6,7 @@
     {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         var client = new frame.contentWindow.XMLHttpRequest();
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-005.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-005.html
index 065e994..7e9cb77 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-005.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-005.html
@@ -6,7 +6,7 @@
     {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         var client = new frame.contentWindow.XMLHttpRequest();
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-006.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-006.html
index acc3fd2..75ab426 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-006.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-006.html
@@ -6,7 +6,7 @@
     {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         var client = new frame.contentWindow.XMLHttpRequest();
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-007.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-007.html
index 02004d0..f2310dc 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-007.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-007.html
@@ -6,7 +6,7 @@
     {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         var client = new frame.contentWindow.XMLHttpRequest();
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-008.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-008.html
index 8c9a69a9..7e44094 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-008.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-008.html
@@ -6,7 +6,7 @@
     {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         var client = frame.contentWindow.client();
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-009.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-009.html
index eba8ef1..561791f4 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-009.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-009.html
@@ -6,7 +6,7 @@
     {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.waitUntilDone();
         }
         var client = frame.contentWindow.client();
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-010.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-010.html
index f2bd9ddc4..eccc814 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-010.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/uri-resolution-opera-open-010.html
@@ -6,7 +6,7 @@
         <script>
             if (window.testRunner) {
                 testRunner.dumpAsText();
-                testRunner.dumpChildFramesAsText();
+                testRunner.dumpChildFrames();
                 testRunner.waitUntilDone();
             }
         </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html b/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html
index eb55b34..fa24254 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html
@@ -15,7 +15,7 @@
     if (++iframesOpened === 2) {
         if (window.testRunner) {
             testRunner.dumpAsText();
-            testRunner.dumpChildFramesAsText();
+            testRunner.dumpChildFrames();
             testRunner.notifyDone();
         }
     }
diff --git a/third_party/WebKit/LayoutTests/http/tests/xsl/xslt-transform-with-javascript-disabled.html b/third_party/WebKit/LayoutTests/http/tests/xsl/xslt-transform-with-javascript-disabled.html
index cb90582b..810411b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xsl/xslt-transform-with-javascript-disabled.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xsl/xslt-transform-with-javascript-disabled.html
@@ -3,7 +3,7 @@
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
     testRunner.overridePreference("WebKitJavaScriptEnabled", false);
 }
 
diff --git a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move-expected.txt b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move-expected.txt
deleted file mode 100644
index dd13da7..0000000
--- a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL media controls overlay play button document move assert_false: overlay play button should not be visible expected false got true
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move.html b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move.html
index 297aee7..cacba37 100644
--- a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move.html
+++ b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-document-move.html
@@ -9,8 +9,6 @@
 async_test(function(t) {
   // Make sure the overlay play button is turned on, as it's typically off
   // unless we're dealing with Android.
-  // TODO(steimel): This can probably be removed since with modern controls the
-  //                overlay play button is always enabled.
   enableOverlayPlayButtonForTest(t);
 
   var video = createAndMoveVideo();
diff --git a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-narrow-expected.txt b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-narrow-expected.txt
deleted file mode 100644
index cfd95183..0000000
--- a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-narrow-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL media controls overlay play button narrow assert_false: overlay play button should not be visible expected false got true
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-resizes-with-video.html b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-resizes-with-video.html
deleted file mode 100644
index 2bcbd11..0000000
--- a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button-resizes-with-video.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Test that the overlay play button size updates with the video size</title>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script src="../media-controls.js"></script>
-<script src="overlay-play-button.js"></script>
-<body></body>
-<script>
-const testCases = [
-  { width: 0, height: 0, expected: 48 },
-  { width: 1, height: 1, expected: 48 },
-  { width: 300, height: 200, expected: 50 },
-  { width: 200, height: 300, expected: 50 },
-  { width: 600, height: 300, expected: 75 },
-  { width: 1500, height: 1000, expected: 110 },
-  { width: 800, height: 100, expected: 48 },
-  { width: 800, height: 500, expected: 75 },
-  { width: 800, height: 1500, expected: 120 },
-];
-
-testCases.forEach(test => {
-  async_test(runTestCase, 'Video with ' + test.width + 'px width and ' + test.height + 'px height', test);
-});
-
-function runTestCase(t) {
-  // This test is only valid when the overlay play button is enabled.
-  enableOverlayPlayButtonForTest(t);
-
-  let test = t.properties;
-  test.video = createVideo(test);
-  setTimeout(t.step_func_done(() => {
-    checkOverlayPlayButtonSize(test);
-  }));
-}
-
-function createVideo(test) {
-  let video = document.createElement('video');
-  video.controls = true;
-  video.preload = 'none';
-  video.src = '../content/60_sec_video.webm';
-  video.width = test.width;
-  video.height = test.height;
-  document.body.append(video);
-  return video;
-}
-
-function checkOverlayPlayButtonSize(test) {
-  const style = getComputedStyle(mediaControlsOverlayPlayButtonInternal(test.video));
-  assert_equals(style.width, test.expected.toString() + 'px', 'video with ' + test.width +
-                'px width and ' + test.height  + 'px height should have overlay play button ' +
-                'width of ' + test.expected + 'px.');
-  assert_equals(style.height, test.expected.toString() + 'px', 'video with ' + test.width +
-                'px width and ' + test.height  + 'px height should have overlay play button ' +
-                'height of ' + test.expected + 'px.');
-}
-</script>
-</html>
diff --git a/third_party/WebKit/LayoutTests/mhtml/mhtml_in_iframe.html b/third_party/WebKit/LayoutTests/mhtml/mhtml_in_iframe.html
index db06892..af440d1e 100644
--- a/third_party/WebKit/LayoutTests/mhtml/mhtml_in_iframe.html
+++ b/third_party/WebKit/LayoutTests/mhtml/mhtml_in_iframe.html
@@ -3,7 +3,7 @@
 <script>
   if (window.testRunner) {
     testRunner.dumpAsText();
-    testRunner.dumpChildFramesAsText();
+    testRunner.dumpChildFrames();
   }
 </script>
 
diff --git a/third_party/WebKit/LayoutTests/resources/dump-as-markup.js b/third_party/WebKit/LayoutTests/resources/dump-as-markup.js
index c21f1a81..1fed0e0 100644
--- a/third_party/WebKit/LayoutTests/resources/dump-as-markup.js
+++ b/third_party/WebKit/LayoutTests/resources/dump-as-markup.js
@@ -61,7 +61,7 @@
         wrapper.insertBefore(document.createTextNode('\nDump of markup 1:\n'), wrapper.firstChild);
     }
 
-    // FIXME: Have this respect testRunner.dumpChildFramesAsText?
+    // FIXME: Have this respect testRunner.dumpChildFrames?
     // FIXME: Should we care about framesets?
     // DocumentFragment doesn't have a getElementsByTagName method.
     if (node.getElementsByTagName) {
diff --git a/third_party/WebKit/LayoutTests/resources/testharnessreport.js b/third_party/WebKit/LayoutTests/resources/testharnessreport.js
index 301fd29..eceebae4 100644
--- a/third_party/WebKit/LayoutTests/resources/testharnessreport.js
+++ b/third_party/WebKit/LayoutTests/resources/testharnessreport.js
@@ -302,7 +302,7 @@
                     }
                 }
             }
-            testResults.push(resultLine(test));
+            testResults.push(resultLine(tests[i]));
         }
         return testResults.join('');
     }
diff --git a/third_party/WebKit/LayoutTests/vibration/vibration-durations.html b/third_party/WebKit/LayoutTests/vibration/vibration-durations.html
index 49a5791..b1150cf 100644
--- a/third_party/WebKit/LayoutTests/vibration/vibration-durations.html
+++ b/third_party/WebKit/LayoutTests/vibration/vibration-durations.html
@@ -11,7 +11,7 @@
 
 if (window.testRunner) {
   testRunner.dumpAsText();
-  testRunner.dumpChildFramesAsText();
+  testRunner.dumpChildFrames();
 }
 
 // Simulates a user click for vibrate to be allowed.
diff --git a/third_party/blink/public/platform/web_feature.mojom b/third_party/blink/public/platform/web_feature.mojom
index 627fe7b..02bd43185 100644
--- a/third_party/blink/public/platform/web_feature.mojom
+++ b/third_party/blink/public/platform/web_feature.mojom
@@ -2042,7 +2042,7 @@
   kCursorImageLE32x32 = 2589,
   kCursorImageGT32x32 = 2590,
   kRTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics = 2591,
-
+  kResizeObserver_Constructor = 2592,
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
   // Also, run update_use_counter_feature_enum.py in
diff --git a/third_party/blink/renderer/bindings/core/v8/scheduled_action.cc b/third_party/blink/renderer/bindings/core/v8/scheduled_action.cc
index 94b91e7e..e4a74ce 100644
--- a/third_party/blink/renderer/bindings/core/v8/scheduled_action.cc
+++ b/third_party/blink/renderer/bindings/core/v8/scheduled_action.cc
@@ -123,7 +123,7 @@
     Execute(frame);
   } else {
     DVLOG(1) << "ScheduledAction::execute " << this << ": worker scope";
-    Execute(ToWorkerGlobalScope(context));
+    Execute(To<WorkerGlobalScope>(context));
   }
 }
 
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
index 5db8763..3364e34a 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
@@ -429,9 +429,8 @@
   if (!execution_context)
     return;
 
-  DCHECK(execution_context->IsWorkerGlobalScope());
-  WorkerOrWorkletScriptController* script_controller =
-      ToWorkerGlobalScope(execution_context)->ScriptController();
+  auto* script_controller =
+      To<WorkerGlobalScope>(execution_context)->ScriptController();
   DCHECK(script_controller);
 
   PromiseRejectHandler(data, *script_controller->GetRejectedPromises(),
diff --git a/third_party/blink/renderer/core/css/css_font_face.cc b/third_party/blink/renderer/core/css/css_font_face.cc
index 9ef4032f..397dfeb7 100644
--- a/third_party/blink/renderer/core/css/css_font_face.cc
+++ b/third_party/blink/renderer/core/css/css_font_face.cc
@@ -205,14 +205,11 @@
   if (!segmented_font_face_ || !font_face_->GetExecutionContext())
     return;
 
-  if (Document* document =
-          DynamicTo<Document>(font_face_->GetExecutionContext())) {
+  if (auto* document = DynamicTo<Document>(font_face_->GetExecutionContext())) {
     if (new_status == FontFace::kLoading)
       FontFaceSetDocument::From(*document)->BeginFontLoading(font_face_);
-  }
-  if (font_face_->GetExecutionContext()->IsWorkerGlobalScope()) {
-    WorkerGlobalScope* scope =
-        ToWorkerGlobalScope(font_face_->GetExecutionContext());
+  } else if (auto* scope = DynamicTo<WorkerGlobalScope>(
+                 font_face_->GetExecutionContext())) {
     if (new_status == FontFace::kLoading)
       FontFaceSetWorker::From(*scope)->BeginFontLoading(font_face_);
   }
diff --git a/third_party/blink/renderer/core/css/css_font_face_src_value.cc b/third_party/blink/renderer/core/css/css_font_face_src_value.cc
index c8b5f4fd..9e2ff30 100644
--- a/third_party/blink/renderer/core/css/css_font_face_src_value.cc
+++ b/third_party/blink/renderer/core/css/css_font_face_src_value.cc
@@ -101,8 +101,8 @@
     }
     // For Workers, Fetcher is lazily loaded, so we must ensure it's available
     // here.
-    if (context->IsWorkerGlobalScope()) {
-      ToWorkerGlobalScope(context)->EnsureFetcher();
+    if (auto* scope = DynamicTo<WorkerGlobalScope>(context)) {
+      scope->EnsureFetcher();
     }
     fetched_ = FontResourceHelper::Create(
         FontResource::Fetch(params, context->Fetcher(), client),
diff --git a/third_party/blink/renderer/core/css/font_face.cc b/third_party/blink/renderer/core/css/font_face.cc
index 88a4b9b..d8e57f50 100644
--- a/third_party/blink/renderer/core/css/font_face.cc
+++ b/third_party/blink/renderer/core/css/font_face.cc
@@ -725,8 +725,8 @@
         FontSelector* font_selector = nullptr;
         if (auto* document = DynamicTo<Document>(context)) {
           font_selector = document->GetStyleEngine().GetFontSelector();
-        } else if (context->IsWorkerGlobalScope()) {
-          font_selector = ToWorkerGlobalScope(context)->GetFontSelector();
+        } else if (auto* scope = DynamicTo<WorkerGlobalScope>(context)) {
+          font_selector = scope->GetFontSelector();
         } else {
           NOTREACHED();
         }
diff --git a/third_party/blink/renderer/core/css/font_face_set_worker.cc b/third_party/blink/renderer/core/css/font_face_set_worker.cc
index c65f6ab..5e7ee27f 100644
--- a/third_party/blink/renderer/core/css/font_face_set_worker.cc
+++ b/third_party/blink/renderer/core/css/font_face_set_worker.cc
@@ -32,7 +32,7 @@
 FontFaceSetWorker::~FontFaceSetWorker() = default;
 
 WorkerGlobalScope* FontFaceSetWorker::GetWorker() const {
-  return ToWorkerGlobalScope(GetExecutionContext());
+  return To<WorkerGlobalScope>(GetExecutionContext());
 }
 
 AtomicString FontFaceSetWorker::status() const {
diff --git a/third_party/blink/renderer/core/editing/finder/text_finder.cc b/third_party/blink/renderer/core/editing/finder/text_finder.cc
index dabd9b3..a75f4be8 100644
--- a/third_party/blink/renderer/core/editing/finder/text_finder.cc
+++ b/third_party/blink/renderer/core/editing/finder/text_finder.cc
@@ -67,6 +67,7 @@
 namespace blink {
 
 namespace {
+const int kScopingTimeoutMS = 100;
 constexpr TimeDelta kTextFinderTestTimeout = TimeDelta::FromSeconds(10);
 }
 
@@ -113,9 +114,15 @@
         identifier_(identifier),
         search_text_(search_text),
         options_(options.Clone()) {
+    // We need to add deadline because some webpages might have frames
+    // that are always busy, resulting in bad experience in find-in-page
+    // because the scoping tasks are not run.
+    // See crbug.com/893465.
+    IdleRequestOptions request_options;
+    request_options.setTimeout(kScopingTimeoutMS);
     callback_handle_ =
         text_finder->GetFrame()->GetDocument()->RequestIdleCallback(
-            this, IdleRequestOptions());
+            this, request_options);
   }
 
   void invoke(IdleDeadline* deadline) override {
diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
index 23a80a2..87c846d3 100644
--- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
@@ -195,11 +195,8 @@
   // Wrap the passed-in channel in a MessagePort, and send it off via a connect
   // event.
   DCHECK(worker_thread_->IsCurrentThread());
-  WorkerGlobalScope* worker_global_scope =
-      ToWorkerGlobalScope(worker_thread_->GlobalScope());
-  SECURITY_DCHECK(worker_global_scope->IsSharedWorkerGlobalScope());
-  static_cast<SharedWorkerGlobalScope*>(worker_global_scope)
-      ->ConnectPausable(std::move(channel));
+  auto* scope = To<SharedWorkerGlobalScope>(worker_thread_->GlobalScope());
+  scope->ConnectPausable(std::move(channel));
 }
 
 void WebSharedWorkerImpl::StartWorkerContext(
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
index 586be34..664bfe3 100644
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
@@ -1443,14 +1443,13 @@
       EventTypeNames::securitypolicyviolation, violation_data);
   DCHECK(event.bubbles());
 
-  if (auto* document = DynamicTo<Document>(execution_context_.Get())) {
+  if (auto* document = DynamicTo<Document>(*execution_context_)) {
     if (element && element->isConnected() && element->GetDocument() == document)
       element->EnqueueEvent(event, TaskType::kInternalDefault);
     else
       document->EnqueueEvent(event, TaskType::kInternalDefault);
-  } else if (execution_context_->IsWorkerGlobalScope()) {
-    ToWorkerGlobalScope(execution_context_)
-        ->EnqueueEvent(event, TaskType::kInternalDefault);
+  } else if (auto* scope = DynamicTo<WorkerGlobalScope>(*execution_context_)) {
+    scope->EnqueueEvent(event, TaskType::kInternalDefault);
   }
 }
 
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
index c188cbc..53c474e9 100644
--- a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
+++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
@@ -213,9 +213,8 @@
   if (LocalDOMWindow* window = event_target.ToLocalDOMWindow())
     return FromInternal(*window);
 
-  DCHECK(event_target.GetExecutionContext()->IsWorkerGlobalScope());
   return ImageBitmapFactories::FromInternal(
-      *ToWorkerGlobalScope(event_target.GetExecutionContext()));
+      *To<WorkerGlobalScope>(event_target.GetExecutionContext()));
 }
 
 template <class GlobalObject>
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
index 1d6549b2..b58f61b 100644
--- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -902,8 +902,8 @@
   if (auto* document = DynamicTo<Document>(context)) {
     value->SetString("frame",
                      IdentifiersFactory::FrameId(document->GetFrame()));
-  } else if (context->IsWorkerGlobalScope()) {
-    value->SetString("worker", ToHexString(ToWorkerGlobalScope(context)));
+  } else if (auto* scope = DynamicTo<WorkerGlobalScope>(context)) {
+    value->SetString("worker", ToHexString(scope));
   }
   SetCallStack(value.get());
   return value;
diff --git a/third_party/blink/renderer/core/inspector/worker_inspector_controller.cc b/third_party/blink/renderer/core/inspector/worker_inspector_controller.cc
index 83e69621..1ba0c5c 100644
--- a/third_party/blink/renderer/core/inspector/worker_inspector_controller.cc
+++ b/third_party/blink/renderer/core/inspector/worker_inspector_controller.cc
@@ -62,8 +62,7 @@
     WorkerThreadDebugger* debugger)
     : debugger_(debugger), thread_(thread), probe_sink_(new CoreProbeSink()) {
   probe_sink_->addInspectorTraceEvents(new InspectorTraceEvents());
-  if (thread->GlobalScope()->IsWorkerGlobalScope()) {
-    WorkerGlobalScope* scope = ToWorkerGlobalScope(thread->GlobalScope());
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(thread->GlobalScope())) {
     worker_devtools_token_ = thread->GetDevToolsWorkerToken();
     parent_devtools_token_ = scope->GetParentDevToolsToken();
     url_ = scope->Url();
@@ -89,15 +88,12 @@
       debugger_->GetV8Inspector(), debugger_->ContextGroupId(thread_), nullptr);
   session->Append(new InspectorLogAgent(thread_->GetConsoleMessageStorage(),
                                         nullptr, session->V8Session()));
-  if (thread_->GlobalScope()->IsWorkerGlobalScope()) {
-    WorkerGlobalScope* worker_global_scope =
-        ToWorkerGlobalScope(thread_->GlobalScope());
-    DCHECK(worker_global_scope->EnsureFetcher());
-    session->Append(new InspectorNetworkAgent(
-        inspected_frames, worker_global_scope, session->V8Session()));
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(thread_->GlobalScope())) {
+    DCHECK(scope->EnsureFetcher());
+    session->Append(new InspectorNetworkAgent(inspected_frames, scope,
+                                              session->V8Session()));
     session->Append(new InspectorEmulationAgent(nullptr));
-    session->Append(
-        new InspectorWorkerAgent(inspected_frames, worker_global_scope));
+    session->Append(new InspectorWorkerAgent(inspected_frames, scope));
   }
   if (sessions_.IsEmpty())
     thread_->GetWorkerBackingThread().BackingThread().AddTaskObserver(this);
diff --git a/third_party/blink/renderer/core/loader/threadable_loader.cc b/third_party/blink/renderer/core/loader/threadable_loader.cc
index d1bffb9..1a42723 100644
--- a/third_party/blink/renderer/core/loader/threadable_loader.cc
+++ b/third_party/blink/renderer/core/loader/threadable_loader.cc
@@ -213,8 +213,8 @@
       redirect_mode_(network::mojom::FetchRedirectMode::kFollow),
       override_referrer_(false) {
   DCHECK(client);
-  if (execution_context_->IsWorkerGlobalScope())
-    ToWorkerGlobalScope(execution_context_)->EnsureFetcher();
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(*execution_context_))
+    scope->EnsureFetcher();
 }
 
 void ThreadableLoader::Start(const ResourceRequest& request) {
diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/third_party/blink/renderer/core/loader/worker_fetch_context.cc
index a95f66ac..3b9f38c 100644
--- a/third_party/blink/renderer/core/loader/worker_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/worker_fetch_context.cc
@@ -387,7 +387,8 @@
   // worklets.
   if (global_scope_->IsWorkletGlobalScope())
     return;
-  WorkerGlobalScopePerformance::performance(*ToWorkerGlobalScope(global_scope_))
+  WorkerGlobalScopePerformance::performance(
+      To<WorkerGlobalScope>(*global_scope_))
       ->GenerateAndAddResourceTiming(info);
 }
 
@@ -420,9 +421,8 @@
 }
 
 WorkerSettings* WorkerFetchContext::GetWorkerSettings() const {
-  if (!global_scope_->IsWorkerGlobalScope())
-    return nullptr;
-  return ToWorkerGlobalScope(global_scope_)->GetWorkerSettings();
+  auto* scope = DynamicTo<WorkerGlobalScope>(*global_scope_);
+  return scope ? scope->GetWorkerSettings() : nullptr;
 }
 
 WorkerContentSettingsClient*
diff --git a/third_party/blink/renderer/core/messaging/message_port.cc b/third_party/blink/renderer/core/messaging/message_port.cc
index ec7d6dca..31fb702 100644
--- a/third_party/blink/renderer/core/messaging/message_port.cc
+++ b/third_party/blink/renderer/core/messaging/message_port.cc
@@ -290,9 +290,9 @@
 
   // WorkerGlobalScope::close() in Worker onmessage handler should prevent
   // the next message from dispatching.
-  if (GetExecutionContext()->IsWorkerGlobalScope() &&
-      ToWorkerGlobalScope(GetExecutionContext())->IsClosing()) {
-    return true;
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(GetExecutionContext())) {
+    if (scope->IsClosing())
+      return true;
   }
 
   Event* evt;
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
index 0dab135f..96aed2d 100644
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
@@ -66,7 +66,7 @@
   if (HasPlaceholderCanvas() && GetTopExecutionContext() &&
       GetTopExecutionContext()->IsWorkerGlobalScope()) {
     WorkerAnimationFrameProvider* animation_frame_provider =
-        ToWorkerGlobalScope(GetTopExecutionContext())
+        To<WorkerGlobalScope>(GetTopExecutionContext())
             ->GetAnimationFrameProvider();
     if (animation_frame_provider)
       animation_frame_provider->DeregisterOffscreenCanvas(this);
@@ -78,7 +78,7 @@
   if (GetTopExecutionContext() &&
       GetTopExecutionContext()->IsWorkerGlobalScope()) {
     WorkerAnimationFrameProvider* animation_frame_provider =
-        ToWorkerGlobalScope(GetTopExecutionContext())
+        To<WorkerGlobalScope>(GetTopExecutionContext())
             ->GetAnimationFrameProvider();
     if (animation_frame_provider)
       animation_frame_provider->RegisterOffscreenCanvas(this);
@@ -397,7 +397,7 @@
   if (auto* document = DynamicTo<Document>(GetExecutionContext())) {
     return document->GetStyleEngine().GetFontSelector();
   }
-  return ToWorkerGlobalScope(execution_context_)->GetFontSelector();
+  return To<WorkerGlobalScope>(GetExecutionContext())->GetFontSelector();
 }
 
 void OffscreenCanvas::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.idl b/third_party/blink/renderer/core/resize_observer/resize_observer.idl
index ca88e70..11ccfc8 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer.idl
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer.idl
@@ -11,6 +11,7 @@
 [
     ActiveScriptWrappable,
     Constructor(ResizeObserverCallback callback),
+    MeasureAs=ResizeObserver_Constructor,
     ConstructorCallWith=Document
 ] interface ResizeObserver {
     void observe(Element target);
diff --git a/third_party/blink/renderer/core/script/modulator.cc b/third_party/blink/renderer/core/script/modulator.cc
index 69c0b52..aa4453357 100644
--- a/third_party/blink/renderer/core/script/modulator.cc
+++ b/third_party/blink/renderer/core/script/modulator.cc
@@ -50,13 +50,13 @@
     // See comment in WorkerOrWorkletGlobalScope::modulator_ for this
     // workaround.
     ToWorkletGlobalScope(execution_context)->SetModulator(modulator);
-  } else if (execution_context->IsWorkerGlobalScope()) {
+  } else if (auto* scope = To<WorkerGlobalScope>(execution_context)) {
     modulator = WorkerModulatorImpl::Create(script_state);
     Modulator::SetModulator(script_state, modulator);
 
     // See comment in WorkerOrWorkletGlobalScope::modulator_ for this
     // workaround.
-    ToWorkerGlobalScope(execution_context)->SetModulator(modulator);
+    scope->SetModulator(modulator);
   } else {
     NOTREACHED();
   }
diff --git a/third_party/blink/renderer/core/script/worker_modulator_impl.cc b/third_party/blink/renderer/core/script/worker_modulator_impl.cc
index 3cba154..a23be87 100644
--- a/third_party/blink/renderer/core/script/worker_modulator_impl.cc
+++ b/third_party/blink/renderer/core/script/worker_modulator_impl.cc
@@ -22,7 +22,7 @@
 
 ModuleScriptFetcher* WorkerModulatorImpl::CreateModuleScriptFetcher(
     ModuleScriptCustomFetchType custom_fetch_type) {
-  auto* global_scope = ToWorkerGlobalScope(GetExecutionContext());
+  auto* global_scope = To<WorkerGlobalScope>(GetExecutionContext());
   switch (custom_fetch_type) {
     case ModuleScriptCustomFetchType::kNone:
       return new DocumentModuleScriptFetcher(global_scope->EnsureFetcher());
diff --git a/third_party/blink/renderer/core/timing/performance_observer.cc b/third_party/blink/renderer/core/timing/performance_observer.cc
index 9df0dbb..b76df6092 100644
--- a/third_party/blink/renderer/core/timing/performance_observer.cc
+++ b/third_party/blink/renderer/core/timing/performance_observer.cc
@@ -34,12 +34,10 @@
     return new PerformanceObserver(
         context, DOMWindowPerformance::performance(*window), callback);
   }
-  if (context->IsWorkerGlobalScope()) {
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(context)) {
     UseCounter::Count(context, WebFeature::kPerformanceObserverForWorker);
-    return new PerformanceObserver(context,
-                                   WorkerGlobalScopePerformance::performance(
-                                       *ToWorkerGlobalScope(context)),
-                                   callback);
+    return new PerformanceObserver(
+        context, WorkerGlobalScopePerformance::performance(*scope), callback);
   }
   V8ThrowException::ThrowTypeError(
       script_state->GetIsolate(),
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc
index a058c4ba..b88de052b 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -321,7 +321,7 @@
     settings = std::make_unique<WorkerSettings>(document->GetSettings());
   } else {
     WorkerGlobalScope* worker_global_scope =
-        ToWorkerGlobalScope(GetExecutionContext());
+        To<WorkerGlobalScope>(GetExecutionContext());
     devtools_worker_token = worker_global_scope->GetParentDevToolsToken();
     settings = WorkerSettings::Copy(worker_global_scope->GetWorkerSettings());
   }
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_object_proxy.cc b/third_party/blink/renderer/core/workers/dedicated_worker_object_proxy.cc
index 88aa262c..9407e99 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker_object_proxy.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker_object_proxy.cc
@@ -76,7 +76,7 @@
 void DedicatedWorkerObjectProxy::ProcessMessageFromWorkerObject(
     BlinkTransferableMessage message,
     WorkerThread* worker_thread) {
-  ToWorkerGlobalScope(worker_thread->GlobalScope())
+  To<WorkerGlobalScope>(worker_thread->GlobalScope())
       ->ReceiveMessagePausable(std::move(message));
 }
 
@@ -84,7 +84,7 @@
     int exception_id,
     WorkerThread* worker_thread) {
   WorkerGlobalScope* global_scope =
-      ToWorkerGlobalScope(worker_thread->GlobalScope());
+      To<WorkerGlobalScope>(worker_thread->GlobalScope());
   global_scope->ExceptionUnhandled(exception_id);
 }
 
diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope.h b/third_party/blink/renderer/core/workers/shared_worker_global_scope.h
index 9f51411..6ab9114a 100644
--- a/third_party/blink/renderer/core/workers/shared_worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/shared_worker_global_scope.h
@@ -76,6 +76,14 @@
 
   const String name_;
 };
+
+template <>
+struct DowncastTraits<SharedWorkerGlobalScope> {
+  static bool AllowFrom(const ExecutionContext& context) {
+    return context.IsSharedWorkerGlobalScope();
+  }
+};
+
 }  // namespace blink
 
 #endif  // THIRD_PARTY_BLINK_RENDERER_CORE_WORKERS_SHARED_WORKER_GLOBAL_SCOPE_H_
diff --git a/third_party/blink/renderer/core/workers/threaded_messaging_proxy_base.cc b/third_party/blink/renderer/core/workers/threaded_messaging_proxy_base.cc
index 79a53c6..6435dec 100644
--- a/third_party/blink/renderer/core/workers/threaded_messaging_proxy_base.cc
+++ b/third_party/blink/renderer/core/workers/threaded_messaging_proxy_base.cc
@@ -73,10 +73,9 @@
           GetExecutionContext()->Fetcher()->Context().ApplicationCacheHostID());
       web_worker_fetch_context->SetIsOnSubframe(!frame->IsMainFrame());
     }
-  } else if (execution_context_->IsWorkerGlobalScope()) {
+  } else if (auto* scope = DynamicTo<WorkerGlobalScope>(*execution_context_)) {
     web_worker_fetch_context =
-        static_cast<WorkerFetchContext&>(
-            ToWorkerGlobalScope(execution_context_)->Fetcher()->Context())
+        static_cast<WorkerFetchContext&>(scope->Fetcher()->Context())
             .GetWebWorkerFetchContext()
             ->CloneForNestedWorker();
   }
@@ -97,10 +96,8 @@
   GetWorkerInspectorProxy()->WorkerThreadCreated(execution_context_,
                                                  GetWorkerThread(), script_url);
 
-  if (execution_context_->IsWorkerGlobalScope()) {
-    ToWorkerGlobalScope(execution_context_)
-        ->GetThread()
-        ->ChildThreadStartedOnWorkerThread(worker_thread_.get());
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(*execution_context_)) {
+    scope->GetThread()->ChildThreadStartedOnWorkerThread(worker_thread_.get());
   }
 }
 
@@ -145,10 +142,9 @@
   // Worker/Worklet object may still exist, and it assumes that the proxy
   // exists, too.
   asked_to_terminate_ = true;
-  WorkerThread* parent_thread =
-      execution_context_->IsWorkerGlobalScope()
-          ? ToWorkerGlobalScope(execution_context_)->GetThread()
-          : nullptr;
+  WorkerThread* parent_thread = nullptr;
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(*execution_context_))
+    parent_thread = scope->GetThread();
   std::unique_ptr<WorkerThread> child_thread = std::move(worker_thread_);
   worker_inspector_proxy_->WorkerThreadTerminated();
 
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.h b/third_party/blink/renderer/core/workers/worker_global_scope.h
index 18c26947..aa5bee47 100644
--- a/third_party/blink/renderer/core/workers/worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.h
@@ -46,6 +46,7 @@
 #include "third_party/blink/renderer/core/workers/worker_settings.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/loader/fetch/cached_metadata_handler.h"
+#include "third_party/blink/renderer/platform/wtf/casting.h"
 
 namespace service_manager {
 class InterfaceProvider;
@@ -264,11 +265,12 @@
   Vector<base::OnceClosure> paused_calls_;
 };
 
-DEFINE_TYPE_CASTS(WorkerGlobalScope,
-                  ExecutionContext,
-                  context,
-                  context->IsWorkerGlobalScope(),
-                  context.IsWorkerGlobalScope());
+template <>
+struct DowncastTraits<WorkerGlobalScope> {
+  static bool AllowFrom(const ExecutionContext& context) {
+    return context.IsWorkerGlobalScope();
+  }
+};
 
 }  // namespace blink
 
diff --git a/third_party/blink/renderer/core/workers/worker_module_tree_client.cc b/third_party/blink/renderer/core/workers/worker_module_tree_client.cc
index 1a6a7922..e7a315c 100644
--- a/third_party/blink/renderer/core/workers/worker_module_tree_client.cc
+++ b/third_party/blink/renderer/core/workers/worker_module_tree_client.cc
@@ -24,7 +24,7 @@
   auto* execution_context =
       ExecutionContext::From(modulator_->GetScriptState());
   blink::WorkerReportingProxy& worker_reporting_proxy =
-      ToWorkerGlobalScope(execution_context)->ReportingProxy();
+      To<WorkerGlobalScope>(execution_context)->ReportingProxy();
 
   if (!module_script) {
     // Step 12: "If the algorithm asynchronously completes with null, queue
diff --git a/third_party/blink/renderer/core/workers/worker_thread.cc b/third_party/blink/renderer/core/workers/worker_thread.cc
index a231d07..ebe6539 100644
--- a/third_party/blink/renderer/core/workers/worker_thread.cc
+++ b/third_party/blink/renderer/core/workers/worker_thread.cc
@@ -496,7 +496,7 @@
     String source_code,
     std::unique_ptr<Vector<char>> cached_meta_data,
     const v8_inspector::V8StackTraceId& stack_id) {
-  ToWorkerGlobalScope(GlobalScope())
+  To<WorkerGlobalScope>(GlobalScope())
       ->EvaluateClassicScriptPausable(script_url, access_control_status,
                                       std::move(source_code),
                                       std::move(cached_meta_data), stack_id);
@@ -510,7 +510,7 @@
   // Worklets have a different code path to import module scripts.
   // TODO(nhiroki): Consider excluding this code path from WorkerThread like
   // Worklets.
-  ToWorkerGlobalScope(GlobalScope())
+  To<WorkerGlobalScope>(GlobalScope())
       ->ImportModuleScriptPausable(script_url,
                                    new FetchClientSettingsObjectSnapshot(
                                        std::move(outside_settings_object)),
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
index 37e47045..930608c0 100644
--- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
@@ -41,7 +41,7 @@
   }
   dirty_rect_for_commit_.setEmpty();
   WorkerSettings* worker_settings =
-      ToWorkerGlobalScope(execution_context)->GetWorkerSettings();
+      To<WorkerGlobalScope>(execution_context)->GetWorkerSettings();
   if (worker_settings && worker_settings->DisableReadingFromCanvas())
     canvas->SetDisableReadingFromCanvasTrue();
 }
diff --git a/third_party/blink/renderer/modules/filesystem/local_file_system.cc b/third_party/blink/renderer/modules/filesystem/local_file_system.cc
index c14ff58d..676cd7a 100644
--- a/third_party/blink/renderer/modules/filesystem/local_file_system.cc
+++ b/third_party/blink/renderer/modules/filesystem/local_file_system.cc
@@ -206,7 +206,7 @@
     return file_system;
   }
 
-  WorkerClients* clients = ToWorkerGlobalScope(context).Clients();
+  WorkerClients* clients = To<WorkerGlobalScope>(context).Clients();
   DCHECK(clients);
   LocalFileSystem* file_system =
       Supplement<WorkerClients>::From<LocalFileSystem>(clients);
diff --git a/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc b/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc
index ab6d6ec..8b661c9 100644
--- a/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc
+++ b/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc
@@ -60,8 +60,7 @@
     return false;
   }
 
-  DCHECK(context->IsWorkerGlobalScope());
-  return WorkerContentSettingsClient::From(*ToWorkerGlobalScope(context))
+  return WorkerContentSettingsClient::From(*To<WorkerGlobalScope>(context))
       ->RequestFileSystemAccessSync();
 }
 
diff --git a/third_party/blink/renderer/modules/indexeddb/indexed_db_client.cc b/third_party/blink/renderer/modules/indexeddb/indexed_db_client.cc
index 40640a0..39f879f 100644
--- a/third_party/blink/renderer/modules/indexeddb/indexed_db_client.cc
+++ b/third_party/blink/renderer/modules/indexeddb/indexed_db_client.cc
@@ -36,7 +36,7 @@
     return Supplement<LocalFrame>::From<IndexedDBClient>(document->GetFrame());
   }
 
-  WorkerClients* clients = ToWorkerGlobalScope(*context).Clients();
+  WorkerClients* clients = To<WorkerGlobalScope>(*context).Clients();
   DCHECK(clients);
   return Supplement<WorkerClients>::From<IndexedDBClient>(clients);
 }
@@ -55,7 +55,7 @@
         name, context->GetSecurityOrigin());
   }
 
-  WorkerGlobalScope& worker_global_scope = *ToWorkerGlobalScope(context);
+  WorkerGlobalScope& worker_global_scope = *To<WorkerGlobalScope>(context);
   return WorkerContentSettingsClient::From(worker_global_scope)
       ->AllowIndexedDB(name);
 }
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
index 5034b4b..43a10f5 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
@@ -29,7 +29,6 @@
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/public/platform/web_size.h"
 #include "third_party/blink/renderer/bindings/core/v8/string_or_trusted_html.h"
-#include "third_party/blink/renderer/core/css/css_style_declaration.h"
 #include "third_party/blink/renderer/core/dom/events/event_dispatch_forbidden_scope.h"
 #include "third_party/blink/renderer/core/dom/mutation_observer.h"
 #include "third_party/blink/renderer/core/dom/mutation_observer_init.h"
@@ -133,15 +132,6 @@
 const char kTestModeCSSClass[] = "test-mode";
 const char kImmersiveModeCSSClass[] = "immersive-mode";
 
-// The ratio of video width/height to use for play button size.
-constexpr float kSizingSmallOverlayPlayButtonSizeRatio = 0.25;
-constexpr float kSizingMediumOverlayPlayButtonSizeRatio = 0.15;
-constexpr float kSizingLargeOverlayPlayButtonSizeRatio = 0.11;
-
-// Used for setting overlay play button width CSS variable.
-constexpr double kMinOverlayPlayButtonWidth = 48;
-const char kOverlayPlayButtonWidthCSSVar[] = "--overlay-play-button-width";
-
 // The delay between two taps to be recognized as a double tap gesture.
 constexpr WTF::TimeDelta kDoubleTapDelay = TimeDelta::FromMilliseconds(300);
 
@@ -1399,42 +1389,6 @@
   SetClass(kMediaControlsSizingLargeCSSClass,
            ShouldShowVideoControls() &&
                sizing_class == MediaControlsSizingClass::kLarge);
-
-  UpdateOverlayPlayButtonWidthCSSVar();
-}
-
-void MediaControlsImpl::UpdateOverlayPlayButtonWidthCSSVar() {
-  // The logic for sizing the overlay play button and its use inside the
-  // controls is a bit too complex for CSS alone (the sizing is a min of two
-  // values maxed with another, and then that needs to be used in calculations
-  // for the spinner as well). To work around this, we're using a CSS variable
-  // set here and used inside the controls CSS.
-  int width = size_.Width();
-  int height = size_.Height();
-  double minDimension = std::min(width, height);
-
-  MediaControlsSizingClass sizing_class = MediaControls::GetSizingClass(width);
-  double sizingRatio;
-  if (sizing_class == MediaControlsSizingClass::kLarge) {
-    sizingRatio = kSizingLargeOverlayPlayButtonSizeRatio;
-  } else if (sizing_class == MediaControlsSizingClass::kMedium) {
-    sizingRatio = kSizingMediumOverlayPlayButtonSizeRatio;
-  } else {
-    sizingRatio = kSizingSmallOverlayPlayButtonSizeRatio;
-  }
-
-  double play_button_width =
-      std::max(kMinOverlayPlayButtonWidth, minDimension * sizingRatio);
-
-  WTF::String play_button_css_value = WTF::String::Number(play_button_width);
-  play_button_css_value.append("px");
-
-  if (!overlay_play_button_width_.has_value() ||
-      overlay_play_button_width_.value() != play_button_width) {
-    overlay_play_button_width_ = play_button_width;
-    style()->setProperty(&GetDocument(), kOverlayPlayButtonWidthCSSVar,
-                         play_button_css_value, "", ASSERT_NO_EXCEPTION);
-  }
 }
 
 void MediaControlsImpl::MaybeToggleControlsFromTap() {
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_impl.h b/third_party/blink/renderer/modules/media_controls/media_controls_impl.h
index c0572a0..53e85b7 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_impl.h
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_impl.h
@@ -283,7 +283,6 @@
   void UpdateOverflowMenuWanted() const;
   void UpdateScrubbingMessageFits() const;
   void UpdateSizingCSSClass();
-  void UpdateOverlayPlayButtonWidthCSSVar();
   void MaybeRecordElementsDisplayed() const;
 
   // Takes a popup menu (caption, overflow) and position on the screen. This is
@@ -410,10 +409,6 @@
   // Timer for distinguishing double-taps.
   TaskRunnerTimer<MediaControlsImpl> tap_timer_;
 
-  // Holds the currently set --overlay-play-button-width value. Used to check if
-  // we need to update.
-  base::Optional<double> overlay_play_button_width_;
-
   bool is_test_mode_ = false;
 };
 
diff --git a/third_party/blink/renderer/modules/media_controls/resources/modernMediaControls.css b/third_party/blink/renderer/modules/media_controls/resources/modernMediaControls.css
index 7f114af..9d6ecde 100644
--- a/third_party/blink/renderer/modules/media_controls/resources/modernMediaControls.css
+++ b/third_party/blink/renderer/modules/media_controls/resources/modernMediaControls.css
@@ -369,11 +369,8 @@
   position: absolute;
   left: 50%;
   top: 50%;
-  margin-left: calc((var(--overlay-play-button-width) / -2) - 20px /* Padding */);
-  margin-top: calc((
-      (var(--overlay-play-button-width, 48px)
-          + 24px /* timeline height + padding-bottom */)
-      / -2) - 20px /* overlay play button padding */);
+  margin-left: -56px /* (72px play button width / -2) - 20px padding */;
+  margin-top: -68px /* ((72px play button width + 24px timeline height + padding-bottom) / -2) - 20px padding */;
   min-height: 0;
   width: fit-content;
   overflow: hidden;
@@ -399,8 +396,8 @@
 }
 
 input[pseudo="-webkit-media-controls-overlay-play-button" i]::-internal-media-controls-overlay-play-button-internal {
-  width: var(--overlay-play-button-width, 48px);
-  height: var(--overlay-play-button-width, 48px);
+  width: 72px;
+  height: 72px;
   border-radius: 50%;
 
   background-size: 50%;
@@ -504,13 +501,10 @@
   left: 50%;
   overflow: hidden;
 
-  height: var(--overlay-play-button-width, 48px);
-  width: var(--overlay-play-button-width, 48px);
-  margin-left: calc(var(--overlay-play-button-width) / -2);
-  margin-top: calc(
-      (var(--overlay-play-button-width, 48px)
-          + 24px /* timeline height + padding-bottom */)
-      / -2);
+  height: 72px /* overlay play button height */;
+  width: 72px /* overlay play button width */;
+  margin-left: -36px /* (72px overlay play button width / -2) */;
+  margin-top: -48px /* (72px overlay play button height + 24px timeline height + padding-bottom) / -2) */;
 }
 
 div[pseudo="-internal-media-controls-loading-panel" i]::-internal-media-controls-loading-panel-spinner-mask-1-background {
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_clients.cc b/third_party/blink/renderer/modules/service_worker/service_worker_clients.cc
index af1a97e1..90dcfe4f 100644
--- a/third_party/blink/renderer/modules/service_worker/service_worker_clients.cc
+++ b/third_party/blink/renderer/modules/service_worker/service_worker_clients.cc
@@ -159,7 +159,8 @@
   ScriptPromise promise = resolver->Promise();
   ExecutionContext* context = ExecutionContext::From(script_state);
 
-  KURL parsed_url = KURL(ToWorkerGlobalScope(context)->location()->Url(), url);
+  KURL parsed_url =
+      KURL(To<WorkerGlobalScope>(context)->location()->Url(), url);
   if (!parsed_url.IsValid()) {
     resolver->Reject(V8ThrowException::CreateTypeError(
         script_state->GetIsolate(), "'" + url + "' is not a valid URL."));
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_client.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_client.cc
index 5810258..481a0f3 100644
--- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_client.cc
+++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_client.cc
@@ -336,7 +336,7 @@
     ExecutionContext* context) {
   // TODO(horo): Replace CHECK() to DCHECK() when crbug.com/749930 is fixed.
   CHECK(context);
-  WorkerClients* worker_clients = ToWorkerGlobalScope(context)->Clients();
+  WorkerClients* worker_clients = To<WorkerGlobalScope>(context)->Clients();
   CHECK(worker_clients);
   ServiceWorkerGlobalScopeClient* client =
       Supplement<WorkerClients>::From<ServiceWorkerGlobalScopeClient>(
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_window_client.cc b/third_party/blink/renderer/modules/service_worker/service_worker_window_client.cc
index 6e9f320..d20519a 100644
--- a/third_party/blink/renderer/modules/service_worker/service_worker_window_client.cc
+++ b/third_party/blink/renderer/modules/service_worker/service_worker_window_client.cc
@@ -92,7 +92,8 @@
   ScriptPromise promise = resolver->Promise();
   ExecutionContext* context = ExecutionContext::From(script_state);
 
-  KURL parsed_url = KURL(ToWorkerGlobalScope(context)->location()->Url(), url);
+  KURL parsed_url =
+      KURL(To<WorkerGlobalScope>(context)->location()->Url(), url);
   if (!parsed_url.IsValid() || parsed_url.ProtocolIsAbout()) {
     resolver->Reject(V8ThrowException::CreateTypeError(
         script_state->GetIsolate(), "'" + url + "' is not a valid URL."));
diff --git a/third_party/blink/renderer/modules/websockets/inspector_websocket_events.cc b/third_party/blink/renderer/modules/websockets/inspector_websocket_events.cc
index f94cb8d9..bf5eff3 100644
--- a/third_party/blink/renderer/modules/websockets/inspector_websocket_events.cc
+++ b/third_party/blink/renderer/modules/websockets/inspector_websocket_events.cc
@@ -27,11 +27,10 @@
   if (auto* document = DynamicTo<Document>(execution_context)) {
     value->SetString("frame",
                      IdentifiersFactory::FrameId(document->GetFrame()));
-  } else if (execution_context->IsWorkerGlobalScope()) {
-    value->SetString("workerId", IdentifiersFactory::IdFromToken(
-                                     ToWorkerGlobalScope(execution_context)
-                                         ->GetThread()
-                                         ->GetDevToolsWorkerToken()));
+  } else if (auto* scope = DynamicTo<WorkerGlobalScope>(execution_context)) {
+    value->SetString("workerId",
+                     IdentifiersFactory::IdFromToken(
+                         scope->GetThread()->GetDevToolsWorkerToken()));
   } else {
     NOTREACHED()
         << "WebSocket is available only in Document and WorkerGlobalScope";
@@ -51,11 +50,10 @@
   if (auto* document = DynamicTo<Document>(execution_context)) {
     value->SetString("frame",
                      IdentifiersFactory::FrameId(document->GetFrame()));
-  } else if (execution_context->IsWorkerGlobalScope()) {
-    value->SetString("workerId", IdentifiersFactory::IdFromToken(
-                                     ToWorkerGlobalScope(execution_context)
-                                         ->GetThread()
-                                         ->GetDevToolsWorkerToken()));
+  } else if (auto* scope = DynamicTo<WorkerGlobalScope>(execution_context)) {
+    value->SetString("workerId",
+                     IdentifiersFactory::IdFromToken(
+                         scope->GetThread()->GetDevToolsWorkerToken()));
   } else {
     NOTREACHED()
         << "WebSocket is available only in Document and WorkerGlobalScope";
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
index f08c1c4..c945b0f 100644
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
@@ -193,8 +193,8 @@
       sent_size_of_top_message_(0),
       location_at_construction_(std::move(location)),
       throttle_passed_(false) {
-  if (execution_context_->IsWorkerGlobalScope())
-    ToWorkerGlobalScope(execution_context_)->EnsureFetcher();
+  if (auto* scope = DynamicTo<WorkerGlobalScope>(*execution_context_))
+    scope->EnsureFetcher();
 }
 
 WebSocketChannelImpl::~WebSocketChannelImpl() {
diff --git a/third_party/closure_compiler/externs/language_settings_private.js b/third_party/closure_compiler/externs/language_settings_private.js
index a656d42..f82fa01 100644
--- a/third_party/closure_compiler/externs/language_settings_private.js
+++ b/third_party/closure_compiler/externs/language_settings_private.js
@@ -34,7 +34,7 @@
  *   supportsUI: (boolean|undefined),
  *   supportsSpellcheck: (boolean|undefined),
  *   supportsTranslate: (boolean|undefined),
- *   isProhibitedLanguage: (boolean|undefined)
+ *   isProhibitedUILocale: (boolean|undefined)
  * }}
  */
 chrome.languageSettingsPrivate.Language;
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 661784b8..5153b511 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -14634,7 +14634,7 @@
   <int value="441" label="ChromeCleanupEnabled"/>
   <int value="442" label="ChromeCleanupReportingEnabled"/>
   <int value="443" label="DeveloperToolsAvailability"/>
-  <int value="444" label="AllowedLanguages"/>
+  <int value="444" label="AllowedUILocales"/>
   <int value="445" label="IsolateOriginsAndroid"/>
   <int value="446" label="SitePerProcessAndroid"/>
   <int value="447" label="ArcAppInstallEventLoggingEnabled"/>
@@ -20454,6 +20454,7 @@
   <int value="2590" label="CursorImageGT32x32"/>
   <int value="2591"
       label="RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics"/>
+  <int value="2592" label="ResizeObserver_Constructor"/>
 </enum>
 
 <enum name="FeaturePolicyFeature">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index a7d4436..8e4af9d 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -106090,6 +106090,14 @@
   </summary>
 </histogram>
 
+<histogram base="true" name="Sync.InvalidationPerModelType"
+    enum="SyncModelTypes" expires_after="M75">
+  <owner>melandory@chromium.org</owner>
+  <summary>
+    Histogram tracks the number of invalidations received per sync data type.
+  </summary>
+</histogram>
+
 <histogram name="Sync.InvalidationSessionsAndroid" enum="BooleanHit">
   <obsolete>
     Deprecated as of 5/2016.
diff --git a/tools/perf/benchmark.csv b/tools/perf/benchmark.csv
index e678cfe..23c0c69 100644
--- a/tools/perf/benchmark.csv
+++ b/tools/perf/benchmark.csv
@@ -8,7 +8,7 @@
 blink_perf.css,"futhark@chromium.org, andruud@chromium.org",Blink>CSS,https://bit.ly/blink-perf-benchmarks,
 blink_perf.dom,"hayato@chromium.org, tkent@chromium.org, yosin@chromium.org",Blink>DOM,https://bit.ly/blink-perf-benchmarks,
 blink_perf.events,hayato@chromium.org,Blink>DOM,https://bit.ly/blink-perf-benchmarks,
-blink_perf.image_decoder,cblume@chromium.org,,https://bit.ly/blink-perf-benchmarks,
+blink_perf.image_decoder,cblume@chromium.org,Internals>Images>Codecs,https://bit.ly/blink-perf-benchmarks,
 blink_perf.layout,eae@chromium.org,,https://bit.ly/blink-perf-benchmarks,
 blink_perf.owp_storage,dmurph@chromium.org,,https://bit.ly/blink-perf-benchmarks,
 blink_perf.paint,wangxianzhu@chromium.org,Blink>Paint,https://bit.ly/blink-perf-benchmarks,
diff --git a/tools/perf/benchmarks/blink_perf.py b/tools/perf/benchmarks/blink_perf.py
index 71babb85..e7fe7f9f 100644
--- a/tools/perf/benchmarks/blink_perf.py
+++ b/tools/perf/benchmarks/blink_perf.py
@@ -443,6 +443,7 @@
 
 
 @benchmark.Info(emails=['cblume@chromium.org'],
+                component='Internals>Images>Codecs',
                 documentation_url='https://bit.ly/blink-perf-benchmarks')
 class BlinkPerfImageDecoder(_BlinkPerfBenchmark):
   tag = 'image_decoder'
diff --git a/ui/accessibility/ax_event_generator.cc b/ui/accessibility/ax_event_generator.cc
index ed747ec3..83e0b4d0 100644
--- a/ui/accessibility/ax_event_generator.cc
+++ b/ui/accessibility/ax_event_generator.cc
@@ -270,7 +270,7 @@
     AddEvent(node, Event::SELECTED_CHANGED);
     ui::AXNode* container = node;
     while (container &&
-           !ui::IsContainerWithSelectableChildrenRole(container->data().role))
+           !ui::IsContainerWithSelectableChildren(container->data().role))
       container = container->parent();
     if (container)
       AddEvent(container, Event::SELECTED_CHILDREN_CHANGED);
diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc
index 6de2663..423d2b6 100644
--- a/ui/accessibility/ax_node_data.cc
+++ b/ui/accessibility/ax_node_data.cc
@@ -24,18 +24,18 @@
 namespace {
 
 bool IsFlagSet(uint32_t bitfield, uint32_t flag) {
-  return 0 != (bitfield & (1 << flag));
+  return (bitfield & (1 << flag)) != 0;
 }
 
 uint32_t ModifyFlag(uint32_t bitfield, uint32_t flag, bool set) {
   return set ? (bitfield |= (1 << flag)) : (bitfield &= ~(1 << flag));
 }
 
-std::string StateBitfieldToString(uint32_t state) {
+std::string StateBitfieldToString(uint32_t state_enum) {
   std::string str;
   for (uint32_t i = static_cast<uint32_t>(ax::mojom::State::kNone) + 1;
        i <= static_cast<uint32_t>(ax::mojom::State::kMaxValue); ++i) {
-    if (IsFlagSet(state, i))
+    if (IsFlagSet(state_enum, i))
       str += " " +
              base::ToUpperASCII(ui::ToString(static_cast<ax::mojom::State>(i)));
   }
@@ -519,16 +519,29 @@
   return IsFlagSet(state, static_cast<uint32_t>(state_enum));
 }
 
-bool AXNodeData::HasAction(ax::mojom::Action action_enum) const {
-  return IsFlagSet(actions, static_cast<uint32_t>(action_enum));
+bool AXNodeData::HasAction(ax::mojom::Action action) const {
+  return IsFlagSet(actions, static_cast<uint32_t>(action));
 }
 
-void AXNodeData::AddState(ax::mojom::State state_enum) {
-  DCHECK_NE(state_enum, ax::mojom::State::kNone);
+ax::mojom::State AXNodeData::AddState(ax::mojom::State state_enum) {
+  DCHECK_GT(static_cast<int>(state_enum),
+            static_cast<int>(ax::mojom::State::kNone));
+  DCHECK_LE(static_cast<int>(state_enum),
+            static_cast<int>(ax::mojom::State::kMaxValue));
   state = ModifyFlag(state, static_cast<uint32_t>(state_enum), true);
+  return static_cast<ax::mojom::State>(state);
 }
 
-void AXNodeData::AddAction(ax::mojom::Action action_enum) {
+ax::mojom::State AXNodeData::RemoveState(ax::mojom::State state_enum) {
+  DCHECK_GT(static_cast<int>(state_enum),
+            static_cast<int>(ax::mojom::State::kNone));
+  DCHECK_LE(static_cast<int>(state_enum),
+            static_cast<int>(ax::mojom::State::kMaxValue));
+  state = ModifyFlag(state, static_cast<uint32_t>(state_enum), false);
+  return static_cast<ax::mojom::State>(state);
+}
+
+ax::mojom::Action AXNodeData::AddAction(ax::mojom::Action action_enum) {
   switch (action_enum) {
     case ax::mojom::Action::kNone:
       NOTREACHED();
@@ -572,11 +585,7 @@
   }
 
   actions = ModifyFlag(actions, static_cast<uint32_t>(action_enum), true);
-}
-
-void AXNodeData::RemoveState(ax::mojom::State state_enum) {
-  DCHECK_NE(state_enum, ax::mojom::State::kNone);
-  state = ModifyFlag(state, static_cast<uint32_t>(state_enum), false);
+  return static_cast<ax::mojom::Action>(actions);
 }
 
 ax::mojom::CheckedState AXNodeData::GetCheckedState() const {
diff --git a/ui/accessibility/ax_node_data.h b/ui/accessibility/ax_node_data.h
index 6c4ee68a..77b3fb33 100644
--- a/ui/accessibility/ax_node_data.h
+++ b/ui/accessibility/ax_node_data.h
@@ -128,18 +128,18 @@
   void SetValue(const base::string16& value);
 
   // Returns true if the given enum bit is 1.
-  bool HasState(ax::mojom::State state_enum) const;
-  bool HasAction(ax::mojom::Action state_enum) const;
+  bool HasState(ax::mojom::State state) const;
+  bool HasAction(ax::mojom::Action action) const;
 
-  // Set bits in the given enum's corresponding bitfield.
-  void AddState(ax::mojom::State state_enum);
-  void AddAction(ax::mojom::Action action_enum);
-
-  // Remove bits in the given enum's corresponding bitfield.
-  void RemoveState(ax::mojom::State state_enum);
+  // Set or remove bits in the given enum's corresponding bitfield.
+  ax::mojom::State AddState(ax::mojom::State state);
+  ax::mojom::State RemoveState(ax::mojom::State state);
+  ax::mojom::Action AddAction(ax::mojom::Action action);
 
   // Helper functions to get or set some common int attributes with some
   // specific enum types. To remove an attribute, set it to None.
+  //
+  // Please keep in alphabetic order.
   ax::mojom::CheckedState GetCheckedState() const;
   void SetCheckedState(ax::mojom::CheckedState checked_state);
   ax::mojom::DefaultActionVerb GetDefaultActionVerb() const;
diff --git a/ui/accessibility/ax_role_properties.cc b/ui/accessibility/ax_role_properties.cc
index 487ba26d..70c7472 100644
--- a/ui/accessibility/ax_role_properties.cc
+++ b/ui/accessibility/ax_role_properties.cc
@@ -3,19 +3,22 @@
 // found in the LICENSE file.
 
 #include "ui/accessibility/ax_role_properties.h"
+
 #include "build/build_config.h"
 
 namespace ui {
 
 namespace {
+
 #if defined(OS_WIN) || defined(OS_CHROMEOS)
-static bool kExposeLayoutTableAsDataTable = true;
+constexpr bool kExposeLayoutTableAsDataTable = true;
 #else
-static bool kExposeLayoutTableAsDataTable = false;
-#endif
+constexpr bool kExposeLayoutTableAsDataTable = false;
+#endif  // defined(OS_WIN)
+
 }  // namespace
 
-bool IsRoleClickable(ax::mojom::Role role) {
+bool IsClickable(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kButton:
     case ax::mojom::Role::kCheckBox:
@@ -44,57 +47,7 @@
   }
 }
 
-bool IsLink(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kDocBackLink:
-    case ax::mojom::Role::kDocBiblioRef:
-    case ax::mojom::Role::kDocGlossRef:
-    case ax::mojom::Role::kDocNoteRef:
-    case ax::mojom::Role::kLink:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsList(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kDirectory:
-    case ax::mojom::Role::kDocBibliography:
-    case ax::mojom::Role::kList:
-    case ax::mojom::Role::kListBox:
-    case ax::mojom::Role::kDescriptionList:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsListItem(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kDescriptionListTerm:
-    case ax::mojom::Role::kDocBiblioEntry:
-    case ax::mojom::Role::kDocEndnote:
-    case ax::mojom::Role::kListBoxOption:
-    case ax::mojom::Role::kListItem:
-    case ax::mojom::Role::kTerm:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsDocument(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kRootWebArea:
-    case ax::mojom::Role::kWebArea:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsCellOrTableHeaderRole(ax::mojom::Role role) {
+bool IsCellOrTableHeader(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kCell:
     case ax::mojom::Role::kColumnHeader:
@@ -107,41 +60,7 @@
   }
 }
 
-bool IsTableLikeRole(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kTable:
-    case ax::mojom::Role::kGrid:
-    case ax::mojom::Role::kTreeGrid:
-      return true;
-    case ax::mojom::Role::kLayoutTable:
-      return kExposeLayoutTableAsDataTable;
-    default:
-      return false;
-  }
-}
-
-bool IsTableHeaderRole(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kColumnHeader:
-    case ax::mojom::Role::kRowHeader:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsTableRowRole(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kRow:
-      return true;
-    case ax::mojom::Role::kLayoutTableRow:
-      return kExposeLayoutTableAsDataTable;
-    default:
-      return false;
-  }
-}
-
-bool IsContainerWithSelectableChildrenRole(ax::mojom::Role role) {
+bool IsContainerWithSelectableChildren(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kComboBoxGrouping:
     case ax::mojom::Role::kComboBoxMenuButton:
@@ -160,32 +79,7 @@
   }
 }
 
-bool IsUIASelectable(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kListBoxOption:
-    case ax::mojom::Role::kMenuListOption:
-    case ax::mojom::Role::kRadioButton:
-    case ax::mojom::Role::kTab:
-    case ax::mojom::Role::kTreeItem:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsRowContainer(ax::mojom::Role role) {
-  switch (role) {
-    case ax::mojom::Role::kTree:
-    case ax::mojom::Role::kTreeGrid:
-    case ax::mojom::Role::kGrid:
-    case ax::mojom::Role::kTable:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool IsControl(ax::mojom::Role role) {
+bool IsControl(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kButton:
     case ax::mojom::Role::kCheckBox:
@@ -219,16 +113,87 @@
   }
 }
 
-bool IsMenuRelated(ax::mojom::Role role) {
+bool IsDocument(const ax::mojom::Role role) {
   switch (role) {
-    case ax::mojom::Role::kMenu:
-    case ax::mojom::Role::kMenuBar:
-    case ax::mojom::Role::kMenuButton:
-    case ax::mojom::Role::kMenuItem:
-    case ax::mojom::Role::kMenuItemCheckBox:
-    case ax::mojom::Role::kMenuItemRadio:
-    case ax::mojom::Role::kMenuListOption:
-    case ax::mojom::Role::kMenuListPopup:
+    case ax::mojom::Role::kRootWebArea:
+    case ax::mojom::Role::kWebArea:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool IsHeading(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kHeading:
+    case ax::mojom::Role::kDocSubtitle:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool IsHeadingOrTableHeader(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kColumnHeader:
+    case ax::mojom::Role::kDocSubtitle:
+    case ax::mojom::Role::kHeading:
+    case ax::mojom::Role::kRowHeader:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool IsImage(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kCanvas:
+    case ax::mojom::Role::kDocCover:
+    case ax::mojom::Role::kGraphicsSymbol:
+    case ax::mojom::Role::kImage:
+    case ax::mojom::Role::kImageMap:
+    case ax::mojom::Role::kSvgRoot:
+    case ax::mojom::Role::kVideo:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool IsLink(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kDocBackLink:
+    case ax::mojom::Role::kDocBiblioRef:
+    case ax::mojom::Role::kDocGlossRef:
+    case ax::mojom::Role::kDocNoteRef:
+    case ax::mojom::Role::kLink:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool IsList(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kDescriptionList:
+    case ax::mojom::Role::kDirectory:
+    case ax::mojom::Role::kDocBibliography:
+    case ax::mojom::Role::kList:
+    case ax::mojom::Role::kListBox:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool IsListItem(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kDescriptionListTerm:
+    case ax::mojom::Role::kDocBiblioEntry:
+    case ax::mojom::Role::kDocEndnote:
+    case ax::mojom::Role::kListBoxOption:
+    case ax::mojom::Role::kListItem:
+    case ax::mojom::Role::kTerm:
       return true;
     default:
       return false;
@@ -246,44 +211,83 @@
   }
 }
 
-bool IsImage(ax::mojom::Role role) {
+bool IsMenuRelated(const ax::mojom::Role role) {
   switch (role) {
-    case ax::mojom::Role::kCanvas:
-    case ax::mojom::Role::kDocCover:
-    case ax::mojom::Role::kGraphicsSymbol:
-    case ax::mojom::Role::kImageMap:
-    case ax::mojom::Role::kImage:
-    case ax::mojom::Role::kSvgRoot:
-    case ax::mojom::Role::kVideo:
+    case ax::mojom::Role::kMenu:
+    case ax::mojom::Role::kMenuBar:
+    case ax::mojom::Role::kMenuButton:
+    case ax::mojom::Role::kMenuItem:
+    case ax::mojom::Role::kMenuItemCheckBox:
+    case ax::mojom::Role::kMenuItemRadio:
+    case ax::mojom::Role::kMenuListOption:
+    case ax::mojom::Role::kMenuListPopup:
       return true;
     default:
       return false;
   }
 }
 
-bool IsHeading(ax::mojom::Role role) {
+bool IsRowContainer(const ax::mojom::Role role) {
   switch (role) {
-    case ax::mojom::Role::kHeading:
-    case ax::mojom::Role::kDocSubtitle:
+    case ax::mojom::Role::kGrid:
+    case ax::mojom::Role::kTable:
+    case ax::mojom::Role::kTree:
+    case ax::mojom::Role::kTreeGrid:
       return true;
+    case ax::mojom::Role::kLayoutTable:
+      return kExposeLayoutTableAsDataTable;
     default:
       return false;
   }
 }
 
-bool IsHeadingOrTableHeader(ax::mojom::Role role) {
+bool IsTableHeader(ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kColumnHeader:
-    case ax::mojom::Role::kHeading:
     case ax::mojom::Role::kRowHeader:
-    case ax::mojom::Role::kDocSubtitle:
       return true;
     default:
       return false;
   }
 }
 
-bool SupportsOrientation(ax::mojom::Role role) {
+bool IsTableLike(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kGrid:
+    case ax::mojom::Role::kTable:
+    case ax::mojom::Role::kTreeGrid:
+      return true;
+    case ax::mojom::Role::kLayoutTable:
+      return kExposeLayoutTableAsDataTable;
+    default:
+      return false;
+  }
+}
+
+bool IsTableRow(ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kRow:
+      return true;
+    case ax::mojom::Role::kLayoutTableRow:
+      return kExposeLayoutTableAsDataTable;
+    default:
+      return false;
+  }
+}
+
+bool SupportsExpandCollapse(const ax::mojom::Role role) {
+  switch (role) {
+    case ax::mojom::Role::kComboBoxGrouping:
+    case ax::mojom::Role::kComboBoxMenuButton:
+    case ax::mojom::Role::kDisclosureTriangle:
+    case ax::mojom::Role::kTextFieldWithComboBox:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool SupportsOrientation(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kComboBoxGrouping:
     case ax::mojom::Role::kComboBoxMenuButton:
@@ -304,7 +308,7 @@
   }
 }
 
-bool SupportsToggle(ax::mojom::Role role) {
+bool SupportsToggle(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kCheckBox:
     case ax::mojom::Role::kMenuItemCheckBox:
@@ -316,15 +320,17 @@
   }
 }
 
-bool SupportsExpandCollapse(ax::mojom::Role role) {
+bool IsUIASelectable(const ax::mojom::Role role) {
   switch (role) {
-    case ax::mojom::Role::kComboBoxGrouping:
-    case ax::mojom::Role::kComboBoxMenuButton:
-    case ax::mojom::Role::kDisclosureTriangle:
-    case ax::mojom::Role::kTextFieldWithComboBox:
+    case ax::mojom::Role::kListBoxOption:
+    case ax::mojom::Role::kMenuListOption:
+    case ax::mojom::Role::kRadioButton:
+    case ax::mojom::Role::kTab:
+    case ax::mojom::Role::kTreeItem:
       return true;
     default:
       return false;
   }
 }
+
 }  // namespace ui
diff --git a/ui/accessibility/ax_role_properties.h b/ui/accessibility/ax_role_properties.h
index bfb756f9..5b9232c 100644
--- a/ui/accessibility/ax_role_properties.h
+++ b/ui/accessibility/ax_role_properties.h
@@ -10,71 +10,79 @@
 
 namespace ui {
 
+// This file contains various helper functions that determine whether a specific
+// accessibility role meets certain criteria.
+//
+// Please keep these functions in alphabetic order.
+
 // Checks if the given role should belong to a control that can respond to
 // clicks.
-AX_EXPORT bool IsRoleClickable(ax::mojom::Role role);
+AX_EXPORT bool IsClickable(const ax::mojom::Role role);
 
-// Returns true if this node is a link.
-AX_EXPORT bool IsLink(ax::mojom::Role role);
+// Returns true if the provided role belongs to a cell or a table header.
+AX_EXPORT bool IsCellOrTableHeader(const ax::mojom::Role role);
 
-// Returns true if this node is a list.
-AX_EXPORT bool IsList(ax::mojom::Role role);
+// Returns true if the provided role belongs to a container with selectable
+// children.
+AX_EXPORT bool IsContainerWithSelectableChildren(const ax::mojom::Role role);
 
-// Returns true if this node is a list item.
-AX_EXPORT bool IsListItem(ax::mojom::Role role);
+// Returns true if the provided role is a control.
+AX_EXPORT bool IsControl(const ax::mojom::Role role);
 
-// Returns true if this node is a document.
-AX_EXPORT bool IsDocument(ax::mojom::Role role);
+// Returns true if the provided role belongs to a document.
+AX_EXPORT bool IsDocument(const ax::mojom::Role role);
 
-// Returns true if this node is a cell or a table header.
-AX_EXPORT bool IsCellOrTableHeaderRole(ax::mojom::Role role);
+// Returns true if the provided role belongs to a heading.
+AX_EXPORT bool IsHeading(const ax::mojom::Role role);
 
-// Returns true if this node is a table, a grid or a treegrid.
-AX_EXPORT bool IsTableLikeRole(ax::mojom::Role role);
+// Returns true if the provided role belongs to a heading or a table header.
+AX_EXPORT bool IsHeadingOrTableHeader(const ax::mojom::Role role);
 
-// Returns true if this node is a table header.
-AX_EXPORT bool IsTableHeaderRole(ax::mojom::Role role);
+// Returns true if the provided role belongs to an image, graphic, canvas, etc.
+AX_EXPORT bool IsImage(const ax::mojom::Role role);
 
-// Returns true if this node is a row.
-AX_EXPORT bool IsTableRowRole(ax::mojom::Role role);
+// Returns true if the provided role belongs to a link.
+AX_EXPORT bool IsLink(const ax::mojom::Role role);
 
-// Returns true if the provided role is selectable from the standpoint of UI
-// automation.
-AX_EXPORT bool IsUIASelectable(ax::mojom::Role role);
+// Returns true if the provided role belongs to a list.
+AX_EXPORT bool IsList(const ax::mojom::Role role);
 
-// Returns true if this node is a container with selectable children.
-AX_EXPORT bool IsContainerWithSelectableChildrenRole(ax::mojom::Role role);
+// Returns true if the provided role belongs to a list item.
+AX_EXPORT bool IsListItem(const ax::mojom::Role role);
 
-// Returns true if this node is a row container.
-AX_EXPORT bool IsRowContainer(ax::mojom::Role role);
-
-// Returns true if this node is a control.
-AX_EXPORT bool IsControl(ax::mojom::Role role);
-
-// Returns true if this node is a menu or related role.
-AX_EXPORT bool IsMenuRelated(ax::mojom::Role role);
-
-// Returns true if the role is a menu item, including menu item
-// check box and menu item radio buttons.
+// Returns true if the provided role belongs to a menu item, including menu item
+// checkbox and menu item radio buttons.
 AX_EXPORT bool IsMenuItem(ax::mojom::Role role);
 
-// Returns true if it's an image, graphic, canvas, etc.
-AX_EXPORT bool IsImage(ax::mojom::Role role);
+// Returns true if the provided role belongs to a menu or related control.
+AX_EXPORT bool IsMenuRelated(const ax::mojom::Role role);
 
-// Returns true if it's a heading.
-AX_EXPORT bool IsHeading(ax::mojom::Role role);
+// Returns true if the provided role belongs to a widget that can contain a
+// table or grid row.
+AX_EXPORT bool IsRowContainer(const ax::mojom::Role role);
 
-// Returns true if it's a heading.
-AX_EXPORT bool IsHeadingOrTableHeader(ax::mojom::Role role);
+// Returns true if the provided role belongs to a table header.
+AX_EXPORT bool IsTableHeader(ax::mojom::Role role);
 
-// Returns true if the provided role can have an orientation.
-AX_EXPORT bool SupportsOrientation(ax::mojom::Role role);
+// Returns true if the provided role belongs to a table, a grid or a treegrid.
+AX_EXPORT bool IsTableLike(const ax::mojom::Role role);
 
-// Returns true if the provided role supports toggle.
-AX_EXPORT bool SupportsToggle(ax::mojom::Role role);
+// Returns true if the provided role belongs to a table or grid row.
+AX_EXPORT bool IsTableRow(ax::mojom::Role role);
 
 // Returns true if the provided role supports expand/collapse.
-AX_EXPORT bool SupportsExpandCollapse(ax::mojom::Role role);
+AX_EXPORT bool SupportsExpandCollapse(const ax::mojom::Role role);
+
+// Returns true if the provided role can have an orientation.
+AX_EXPORT bool SupportsOrientation(const ax::mojom::Role role);
+
+// Returns true if the provided role supports toggle.
+AX_EXPORT bool SupportsToggle(const ax::mojom::Role role);
+
+// Returns true if the provided role is selectable from the standpoint of UI
+// Automation.
+AX_EXPORT bool IsUIASelectable(const ax::mojom::Role role);
+
 }  // namespace ui
 
 #endif  // UI_ACCESSIBILITY_AX_ROLE_PROPERTIES_H_
diff --git a/ui/accessibility/ax_table_info.cc b/ui/accessibility/ax_table_info.cc
index 72cfaa2..ecd3d57 100644
--- a/ui/accessibility/ax_table_info.cc
+++ b/ui/accessibility/ax_table_info.cc
@@ -18,7 +18,7 @@
     if (child->data().HasState(ax::mojom::State::kIgnored) ||
         child->data().role == ax::mojom::Role::kGenericContainer)
       FindCells(child, cells);
-    else if (IsCellOrTableHeaderRole(child->data().role))
+    else if (IsCellOrTableHeader(child->data().role))
       cells->push_back(child);
   }
 }
@@ -48,7 +48,7 @@
   DCHECK(node == tree->root());
 #endif
 
-  if (!IsTableLikeRole(table_node->data().role))
+  if (!IsTableLike(table_node->data().role))
     return nullptr;
 
   AXTableInfo* info = new AXTableInfo(tree, table_node);
@@ -59,7 +59,7 @@
 }
 
 bool AXTableInfo::Update() {
-  if (!IsTableLikeRole(table_node_->data().role))
+  if (!IsTableLike(table_node_->data().role))
     return false;
 
   col_headers.clear();
diff --git a/ui/accessibility/platform/ax_platform_node.cc b/ui/accessibility/platform/ax_platform_node.cc
index a4f31d93..840944b 100644
--- a/ui/accessibility/platform/ax_platform_node.cc
+++ b/ui/accessibility/platform/ax_platform_node.cc
@@ -61,7 +61,7 @@
 }
 
 int32_t AXPlatformNode::GetUniqueId() const {
-  DCHECK(GetDelegate());  // Must be called after Init()
+  DCHECK(GetDelegate()) << "|GetUniqueId| must be called after |Init|.";
   return GetDelegate() ? GetDelegate()->GetUniqueId().Get() : -1;
 }
 
diff --git a/ui/accessibility/platform/ax_platform_node_base.cc b/ui/accessibility/platform/ax_platform_node_base.cc
index e4a1097..db0391b 100644
--- a/ui/accessibility/platform/ax_platform_node_base.cc
+++ b/ui/accessibility/platform/ax_platform_node_base.cc
@@ -343,7 +343,7 @@
     return nullptr;
   AXPlatformNodeBase* container = const_cast<AXPlatformNodeBase*>(this);
   while (container &&
-         !IsContainerWithSelectableChildrenRole(container->GetData().role)) {
+         !IsContainerWithSelectableChildren(container->GetData().role)) {
     gfx::NativeViewAccessible parent_accessible = container->GetParent();
     AXPlatformNodeBase* parent = FromNativeViewAccessible(parent_accessible);
 
@@ -356,7 +356,7 @@
   if (!delegate_)
     return nullptr;
   AXPlatformNodeBase* table = const_cast<AXPlatformNodeBase*>(this);
-  while (table && !IsTableLikeRole(table->GetData().role)) {
+  while (table && !IsTableLike(table->GetData().role)) {
     gfx::NativeViewAccessible parent_accessible = table->GetParent();
     AXPlatformNodeBase* parent = FromNativeViewAccessible(parent_accessible);
 
@@ -368,8 +368,7 @@
 AXPlatformNodeBase* AXPlatformNodeBase::GetTableCell(int index) const {
   if (!delegate_)
     return nullptr;
-  if (!IsTableLikeRole(GetData().role) &&
-      !IsCellOrTableHeaderRole(GetData().role))
+  if (!IsTableLike(GetData().role) && !IsCellOrTableHeader(GetData().role))
     return nullptr;
 
   AXPlatformNodeBase* table = GetTable();
@@ -382,8 +381,7 @@
 
 AXPlatformNodeBase* AXPlatformNodeBase::GetTableCell(int row,
                                                      int column) const {
-  if (!IsTableLikeRole(GetData().role) &&
-      !IsCellOrTableHeaderRole(GetData().role))
+  if (!IsTableLike(GetData().role) && !IsCellOrTableHeader(GetData().role))
     return nullptr;
 
   if (row < 0 || row >= GetTableRowCount() || column < 0 ||
@@ -401,7 +399,7 @@
 }
 
 int AXPlatformNodeBase::GetTableCellIndex() const {
-  if (!IsCellOrTableHeaderRole(GetData().role))
+  if (!IsCellOrTableHeader(GetData().role))
     return -1;
 
   AXPlatformNodeBase* table = GetTable();
@@ -424,7 +422,7 @@
 }
 
 int AXPlatformNodeBase::GetTableColumnSpan() const {
-  if (!IsCellOrTableHeaderRole(GetData().role))
+  if (!IsCellOrTableHeader(GetData().role))
     return 0;
 
   int column_span;
@@ -447,7 +445,7 @@
 }
 
 int AXPlatformNodeBase::GetTableRowSpan() const {
-  if (!IsCellOrTableHeaderRole(GetData().role))
+  if (!IsCellOrTableHeader(GetData().role))
     return 0;
 
   int row_span;
@@ -717,7 +715,7 @@
   }
 
   // Expose table cell index.
-  if (IsCellOrTableHeaderRole(GetData().role)) {
+  if (IsCellOrTableHeader(GetData().role)) {
     AXPlatformNodeBase* table = GetTable();
     if (table) {
       int32_t index = table->delegate_->CellIdToIndex(GetData().id);
@@ -731,7 +729,7 @@
     AddAttributeToList("layout-guess", "true", attributes);
 
   // Expose aria-colcount and aria-rowcount in a table, grid or treegrid.
-  if (IsTableLikeRole(GetData().role)) {
+  if (IsTableLike(GetData().role)) {
     AddAttributeToList(ax::mojom::IntAttribute::kAriaColumnCount, "colcount",
                        attributes);
     AddAttributeToList(ax::mojom::IntAttribute::kAriaRowCount, "rowcount",
@@ -739,7 +737,7 @@
   }
 
   // Expose aria-colindex and aria-rowindex in a cell or row.
-  if (IsCellOrTableHeaderRole(GetData().role) ||
+  if (IsCellOrTableHeader(GetData().role) ||
       GetData().role == ax::mojom::Role::kRow) {
     if (GetData().role != ax::mojom::Role::kRow)
       AddAttributeToList(ax::mojom::IntAttribute::kAriaCellColumnIndex,
@@ -786,7 +784,7 @@
     }
   }
 
-  if (IsCellOrTableHeaderRole(GetData().role)) {
+  if (IsCellOrTableHeader(GetData().role)) {
     // Expose colspan attribute.
     std::string colspan;
     if (GetData().GetHtmlAttribute("aria-colspan", &colspan)) {
diff --git a/ui/accessibility/platform/ax_platform_node_mac.mm b/ui/accessibility/platform/ax_platform_node_mac.mm
index dc041e0..2ba1d058 100644
--- a/ui/accessibility/platform/ax_platform_node_mac.mm
+++ b/ui/accessibility/platform/ax_platform_node_mac.mm
@@ -316,8 +316,7 @@
 
 // Returns true if |action| should be added implicitly for |data|.
 bool HasImplicitAction(const ui::AXNodeData& data, ax::mojom::Action action) {
-  return action == ax::mojom::Action::kDoDefault &&
-         ui::IsRoleClickable(data.role);
+  return action == ax::mojom::Action::kDoDefault && ui::IsClickable(data.role);
 }
 
 // For roles that show a menu for the default action, ensure "show menu" also
diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc
index 15faebd..87854a4 100644
--- a/ui/accessibility/platform/ax_platform_node_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_win.cc
@@ -44,16 +44,16 @@
 //
 
 #define COM_OBJECT_VALIDATE() \
-    if (!delegate_) \
-      return E_FAIL;
+  if (!GetDelegate())         \
+    return E_FAIL;
 #define COM_OBJECT_VALIDATE_1_ARG(arg) \
-  if (!delegate_)                      \
+  if (!GetDelegate())                  \
     return E_FAIL;                     \
   if (!arg)                            \
     return E_INVALIDARG;               \
   *arg = {};
 #define COM_OBJECT_VALIDATE_2_ARGS(arg1, arg2) \
-  if (!delegate_)                              \
+  if (!GetDelegate())                          \
     return E_FAIL;                             \
   if (!arg1)                                   \
     return E_INVALIDARG;                       \
@@ -62,7 +62,7 @@
     return E_INVALIDARG;                       \
   *arg2 = {};
 #define COM_OBJECT_VALIDATE_3_ARGS(arg1, arg2, arg3) \
-  if (!delegate_)                                    \
+  if (!GetDelegate())                                \
     return E_FAIL;                                   \
   if (!arg1)                                         \
     return E_INVALIDARG;                             \
@@ -74,7 +74,7 @@
     return E_INVALIDARG;                             \
   *arg3 = {};
 #define COM_OBJECT_VALIDATE_4_ARGS(arg1, arg2, arg3, arg4) \
-  if (!delegate_)                                          \
+  if (!GetDelegate())                                      \
     return E_FAIL;                                         \
   if (!arg1)                                               \
     return E_INVALIDARG;                                   \
@@ -89,15 +89,15 @@
     return E_INVALIDARG;                                   \
   *arg4 = {};
 #define COM_OBJECT_VALIDATE_VAR_ID_AND_GET_TARGET(var_id, target) \
-  if (!delegate_)                                                 \
+  if (!GetDelegate())                                             \
     return E_FAIL;                                                \
   target = GetTargetFromChildID(var_id);                          \
   if (!target)                                                    \
     return E_INVALIDARG;                                          \
-  if (!target->delegate_)                                         \
+  if (!target->GetDelegate())                                     \
     return E_INVALIDARG;
 #define COM_OBJECT_VALIDATE_VAR_ID_1_ARG_AND_GET_TARGET(var_id, arg, target) \
-  if (!delegate_)                                                            \
+  if (!GetDelegate())                                                        \
     return E_FAIL;                                                           \
   if (!arg)                                                                  \
     return E_INVALIDARG;                                                     \
@@ -105,11 +105,11 @@
   target = GetTargetFromChildID(var_id);                                     \
   if (!target)                                                               \
     return E_INVALIDARG;                                                     \
-  if (!target->delegate_)                                                    \
+  if (!target->GetDelegate())                                                \
     return E_INVALIDARG;
 #define COM_OBJECT_VALIDATE_VAR_ID_2_ARGS_AND_GET_TARGET(var_id, arg1, arg2, \
                                                          target)             \
-  if (!delegate_)                                                            \
+  if (!GetDelegate())                                                        \
     return E_FAIL;                                                           \
   if (!arg1)                                                                 \
     return E_INVALIDARG;                                                     \
@@ -120,11 +120,11 @@
   target = GetTargetFromChildID(var_id);                                     \
   if (!target)                                                               \
     return E_INVALIDARG;                                                     \
-  if (!target->delegate_)                                                    \
+  if (!target->GetDelegate())                                                \
     return E_INVALIDARG;
 #define COM_OBJECT_VALIDATE_VAR_ID_3_ARGS_AND_GET_TARGET(var_id, arg1, arg2, \
                                                          arg3, target)       \
-  if (!delegate_)                                                            \
+  if (!GetDelegate())                                                        \
     return E_FAIL;                                                           \
   if (!arg1)                                                                 \
     return E_INVALIDARG;                                                     \
@@ -138,11 +138,11 @@
   target = GetTargetFromChildID(var_id);                                     \
   if (!target)                                                               \
     return E_INVALIDARG;                                                     \
-  if (!target->delegate_)                                                    \
+  if (!target->GetDelegate())                                                \
     return E_INVALIDARG;
 #define COM_OBJECT_VALIDATE_VAR_ID_4_ARGS_AND_GET_TARGET(var_id, arg1, arg2, \
                                                          arg3, arg4, target) \
-  if (!delegate_)                                                            \
+  if (!GetDelegate())                                                        \
     return E_FAIL;                                                           \
   if (!arg1)                                                                 \
     return E_INVALIDARG;                                                     \
@@ -159,7 +159,7 @@
   target = GetTargetFromChildID(var_id);                                     \
   if (!target)                                                               \
     return E_INVALIDARG;                                                     \
-  if (!target->delegate_)                                                    \
+  if (!target->GetDelegate())                                                \
     return E_INVALIDARG;
 
 namespace ui {
@@ -378,7 +378,7 @@
   LONG i = 0;
   for (const auto& node_id : ids) {
     AXPlatformNodeWin* node_win =
-        static_cast<AXPlatformNodeWin*>(delegate_->GetFromNodeID(node_id));
+        static_cast<AXPlatformNodeWin*>(GetDelegate()->GetFromNodeID(node_id));
     DCHECK(node_win);
     node_win->AddRef();
     SafeArrayPutElement(uia_array, &i,
@@ -392,14 +392,14 @@
 gfx::Vector2d AXPlatformNodeWin::CalculateUIAScrollPoint(
     const ScrollAmount horizontal_amount,
     const ScrollAmount vertical_amount) const {
-  if (!delegate_ || !IsScrollable())
+  if (!GetDelegate() || !IsScrollable())
     return {};
 
-  const gfx::Rect bounds = delegate_->GetClippedScreenBoundsRect();
+  const gfx::Rect bounds = GetDelegate()->GetClippedScreenBoundsRect();
   const int large_horizontal_change = bounds.width();
   const int large_vertical_change = bounds.height();
 
-  const HWND hwnd = delegate_->GetTargetForNativeAccessibilityEvent();
+  const HWND hwnd = GetDelegate()->GetTargetForNativeAccessibilityEvent();
   DCHECK(hwnd);
   const float scale_factor =
       display::win::ScreenWin::GetScaleFactorForHWND(hwnd);
@@ -482,7 +482,7 @@
 }
 
 void AXPlatformNodeWin::NotifyAccessibilityEvent(ax::mojom::Event event_type) {
-  HWND hwnd = delegate_->GetTargetForNativeAccessibilityEvent();
+  HWND hwnd = GetDelegate()->GetTargetForNativeAccessibilityEvent();
   if (!hwnd)
     return;
 
@@ -554,13 +554,14 @@
   COM_OBJECT_VALIDATE_1_ARG(child);
 
   gfx::Point point(x_left, y_top);
-  if (!delegate_->GetClippedScreenBoundsRect().Contains(point)) {
+  if (!GetDelegate()->GetClippedScreenBoundsRect().Contains(point)) {
     // Return S_FALSE and VT_EMPTY when outside the object's boundaries.
     child->vt = VT_EMPTY;
     return S_FALSE;
   }
 
-  gfx::NativeViewAccessible hit_child = delegate_->HitTestSync(x_left, y_top);
+  gfx::NativeViewAccessible hit_child =
+      GetDelegate()->HitTestSync(x_left, y_top);
   if (!hit_child) {
     child->vt = VT_EMPTY;
     return S_FALSE;
@@ -599,7 +600,7 @@
   AXActionData data;
   data.action = ax::mojom::Action::kDoDefault;
 
-  if (target->delegate_->AccessibilityPerformAction(data))
+  if (target->GetDelegate()->AccessibilityPerformAction(data))
     return S_OK;
   return E_FAIL;
 }
@@ -614,7 +615,7 @@
   COM_OBJECT_VALIDATE_VAR_ID_4_ARGS_AND_GET_TARGET(var_id, x_left, y_top, width,
                                                    height, target);
 
-  gfx::Rect bounds = target->delegate_->GetUnclippedScreenBoundsRect();
+  gfx::Rect bounds = target->GetDelegate()->GetUnclippedScreenBoundsRect();
   *x_left = bounds.x();
   *y_top = bounds.y();
   *width  = bounds.width();
@@ -642,13 +643,14 @@
   IAccessible* result = nullptr;
   switch (nav_dir) {
     case NAVDIR_FIRSTCHILD:
-      if (delegate_->GetChildCount() > 0)
-        result = delegate_->ChildAtIndex(0);
+      if (GetDelegate()->GetChildCount() > 0)
+        result = GetDelegate()->ChildAtIndex(0);
       break;
 
     case NAVDIR_LASTCHILD:
-      if (delegate_->GetChildCount() > 0)
-        result = delegate_->ChildAtIndex(delegate_->GetChildCount() - 1);
+      if (GetDelegate()->GetChildCount() > 0)
+        result =
+            GetDelegate()->ChildAtIndex(GetDelegate()->GetChildCount() - 1);
       break;
 
     case NAVDIR_NEXT: {
@@ -667,8 +669,7 @@
 
     case NAVDIR_DOWN: {
       // This direction is not implemented except in tables.
-      if (!IsTableLikeRole(GetData().role) &&
-          !IsCellOrTableHeaderRole(GetData().role))
+      if (!IsTableLike(GetData().role) && !IsCellOrTableHeader(GetData().role))
         return E_NOTIMPL;
 
       AXPlatformNodeBase* next = target->GetTableCell(
@@ -682,8 +683,7 @@
 
     case NAVDIR_UP: {
       // This direction is not implemented except in tables.
-      if (!IsTableLikeRole(GetData().role) &&
-          !IsCellOrTableHeaderRole(GetData().role))
+      if (!IsTableLike(GetData().role) && !IsCellOrTableHeader(GetData().role))
         return E_NOTIMPL;
 
       AXPlatformNodeBase* next =
@@ -697,8 +697,7 @@
 
     case NAVDIR_LEFT: {
       // This direction is not implemented except in tables.
-      if (!IsTableLikeRole(GetData().role) &&
-          !IsCellOrTableHeaderRole(GetData().role))
+      if (!IsTableLike(GetData().role) && !IsCellOrTableHeader(GetData().role))
         return E_NOTIMPL;
 
       AXPlatformNodeBase* next =
@@ -713,8 +712,7 @@
     case NAVDIR_RIGHT: {
       // This direction is not implemented except in tables.
 
-      if (!IsTableLikeRole(GetData().role) &&
-          !IsCellOrTableHeaderRole(GetData().role))
+      if (!IsTableLike(GetData().role) && !IsCellOrTableHeader(GetData().role))
         return E_NOTIMPL;
 
       AXPlatformNodeBase* next = target->GetTableCell(
@@ -754,7 +752,7 @@
 IFACEMETHODIMP AXPlatformNodeWin::get_accChildCount(LONG* child_count) {
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_CHILD_COUNT);
   COM_OBJECT_VALIDATE_1_ARG(child_count);
-  *child_count = delegate_->GetChildCount();
+  *child_count = GetDelegate()->GetChildCount();
   return S_OK;
 }
 
@@ -797,7 +795,7 @@
 IFACEMETHODIMP AXPlatformNodeWin::get_accFocus(VARIANT* focus_child) {
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_FOCUS);
   COM_OBJECT_VALIDATE_1_ARG(focus_child);
-  gfx::NativeViewAccessible focus_accessible = delegate_->GetFocus();
+  gfx::NativeViewAccessible focus_accessible = GetDelegate()->GetFocus();
   if (focus_accessible == this) {
     focus_child->vt = VT_I4;
     focus_child->lVal = CHILDID_SELF;
@@ -947,7 +945,7 @@
   //
   if (target->GetData().role == ax::mojom::Role::kRootWebArea ||
       target->GetData().role == ax::mojom::Role::kWebArea) {
-    result = base::UTF8ToUTF16(target->delegate_->GetTreeData().url);
+    result = base::UTF8ToUTF16(target->GetDelegate()->GetTreeData().url);
     *value = SysAllocString(result.c_str());
     DCHECK(*value);
     return S_OK;
@@ -994,7 +992,7 @@
   AXActionData data;
   data.action = ax::mojom::Action::kSetValue;
   data.value = base::WideToUTF8(new_value);
-  if (target->delegate_->AccessibilityPerformAction(data))
+  if (target->GetDelegate()->AccessibilityPerformAction(data))
     return S_OK;
   return E_FAIL;
 }
@@ -1003,9 +1001,9 @@
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_SELECTION);
   COM_OBJECT_VALIDATE_1_ARG(selected);
   std::vector<Microsoft::WRL::ComPtr<IDispatch>> selected_nodes;
-  for (int i = 0; i < delegate_->GetChildCount(); ++i) {
+  for (int i = 0; i < GetDelegate()->GetChildCount(); ++i) {
     auto* node = static_cast<AXPlatformNodeWin*>(
-        FromNativeViewAccessible(delegate_->ChildAtIndex(i)));
+        FromNativeViewAccessible(GetDelegate()->ChildAtIndex(i)));
     if (node &&
         node->GetData().GetBoolAttribute(ax::mojom::BoolAttribute::kSelected))
       selected_nodes.emplace_back(node);
@@ -1044,7 +1042,7 @@
   if (flagsSelect & SELFLAG_TAKEFOCUS) {
     AXActionData action_data;
     action_data.action = ax::mojom::Action::kFocus;
-    target->delegate_->AccessibilityPerformAction(action_data);
+    target->GetDelegate()->AccessibilityPerformAction(action_data);
     return S_OK;
   }
 
@@ -1108,7 +1106,7 @@
 IFACEMETHODIMP AXPlatformNodeWin::get_windowHandle(HWND* window_handle) {
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_WINDOW_HANDLE);
   COM_OBJECT_VALIDATE_1_ARG(window_handle);
-  *window_handle = delegate_->GetTargetForNativeAccessibilityEvent();
+  *window_handle = GetDelegate()->GetTargetForNativeAccessibilityEvent();
   return *window_handle ? S_OK : S_FALSE;
 }
 
@@ -1159,7 +1157,7 @@
   base::string16 relation_type;
   std::set<int32_t> target_ids;
   int found = AXPlatformRelationWin::EnumerateRelationships(
-      GetData(), delegate_, 0, type, &relation_type, &target_ids);
+      GetData(), GetDelegate(), 0, type, &relation_type, &target_ids);
   if (found == 0)
     return S_FALSE;
 
@@ -1173,8 +1171,8 @@
   *targets = static_cast<IUnknown**>(CoTaskMemAlloc(count * sizeof(IUnknown*)));
   int index = 0;
   for (int target_id : target_ids) {
-    AXPlatformNodeWin* target =
-        static_cast<AXPlatformNodeWin*>(delegate_->GetFromNodeID(target_id));
+    AXPlatformNodeWin* target = static_cast<AXPlatformNodeWin*>(
+        GetDelegate()->GetFromNodeID(target_id));
     if (target) {
       (*targets)[index] = static_cast<IAccessible*>(target);
       (*targets)[index]->AddRef();
@@ -1221,7 +1219,7 @@
   AXPlatformNode::NotifyAddAXModeFlags(kScreenReaderAndHTMLAccessibilityModes);
 
   int count = AXPlatformRelationWin::EnumerateRelationships(
-      GetData(), delegate_, -1, base::string16(), nullptr, nullptr);
+      GetData(), GetDelegate(), -1, base::string16(), nullptr, nullptr);
   *n_relations = count;
   return S_OK;
 }
@@ -1235,8 +1233,8 @@
   base::string16 relation_type;
   std::set<int32_t> targets;
   int found = AXPlatformRelationWin::EnumerateRelationships(
-      GetData(), delegate_, relation_index, base::string16(), &relation_type,
-      &targets);
+      GetData(), GetDelegate(), relation_index, base::string16(),
+      &relation_type, &targets);
   if (found == 0)
     return E_INVALIDARG;
 
@@ -1246,8 +1244,8 @@
   relation_obj->AddRef();
   relation_obj->Initialize(relation_type);
   for (int target_id : targets) {
-    AXPlatformNodeWin* target =
-        static_cast<AXPlatformNodeWin*>(delegate_->GetFromNodeID(target_id));
+    AXPlatformNodeWin* target = static_cast<AXPlatformNodeWin*>(
+        GetDelegate()->GetFromNodeID(target_id));
     if (!target)
       continue;
     relation_obj->AddTarget(target);
@@ -1356,7 +1354,7 @@
   action_data.target_node_id = GetData().id;
   action_data.action = ax::mojom::Action::kScrollToMakeVisible;
   action_data.target_rect = r;
-  delegate_->AccessibilityPerformAction(action_data);
+  GetDelegate()->AccessibilityPerformAction(action_data);
   return S_OK;
 }
 
@@ -1372,8 +1370,9 @@
   if (coordinate_type == IA2_COORDTYPE_PARENT_RELATIVE) {
     if (GetParent()) {
       AXPlatformNodeBase* base = FromNativeViewAccessible(GetParent());
-      scroll_to +=
-          base->delegate_->GetUnclippedScreenBoundsRect().OffsetFromOrigin();
+      scroll_to += base->GetDelegate()
+                       ->GetUnclippedScreenBoundsRect()
+                       .OffsetFromOrigin();
     }
   } else if (coordinate_type != IA2_COORDTYPE_SCREEN_RELATIVE) {
     return E_INVALIDARG;
@@ -1383,7 +1382,7 @@
   action_data.target_node_id = GetData().id;
   action_data.action = ax::mojom::Action::kScrollToPoint;
   action_data.target_point = scroll_to;
-  delegate_->AccessibilityPerformAction(action_data);
+  GetDelegate()->AccessibilityPerformAction(action_data);
   return S_OK;
 }
 
@@ -1449,7 +1448,7 @@
   AXActionData action_data;
   action_data.action = ax::mojom::Action::kDoDefault;
 
-  if (delegate_->AccessibilityPerformAction(action_data))
+  if (GetDelegate()->AccessibilityPerformAction(action_data))
     return S_OK;
   return E_FAIL;
 }
@@ -1458,7 +1457,7 @@
   AXActionData action_data;
   action_data.action = ax::mojom::Action::kDoDefault;
 
-  if (delegate_->AccessibilityPerformAction(action_data))
+  if (GetDelegate()->AccessibilityPerformAction(action_data))
     return S_OK;
   return E_FAIL;
 }
@@ -1564,7 +1563,7 @@
   action_data.target_node_id = GetData().id;
   action_data.target_rect = r;
   action_data.action = ax::mojom::Action::kScrollToMakeVisible;
-  if (delegate_->AccessibilityPerformAction(action_data))
+  if (GetDelegate()->AccessibilityPerformAction(action_data))
     return S_OK;
   return E_FAIL;
 }
@@ -1584,7 +1583,7 @@
   action_data.action = ax::mojom::Action::kSetScrollOffset;
   action_data.target_point = gfx::PointAtOffsetFromOrigin(
       CalculateUIAScrollPoint(horizontal_amount, vertical_amount));
-  if (delegate_->AccessibilityPerformAction(action_data))
+  if (GetDelegate()->AccessibilityPerformAction(action_data))
     return S_OK;
   return E_FAIL;
 }
@@ -1607,7 +1606,7 @@
   action_data.target_node_id = GetData().id;
   action_data.action = ax::mojom::Action::kSetScrollOffset;
   action_data.target_point = scroll_to;
-  if (delegate_->AccessibilityPerformAction(action_data))
+  if (GetDelegate()->AccessibilityPerformAction(action_data))
     return S_OK;
   return E_FAIL;
 }
@@ -1641,7 +1640,7 @@
     return S_OK;
   }
 
-  gfx::RectF clipped_bounds(delegate_->GetClippedScreenBoundsRect());
+  gfx::RectF clipped_bounds(GetDelegate()->GetClippedScreenBoundsRect());
   float x_min = GetIntAttribute(ax::mojom::IntAttribute::kScrollXMin);
   float x_max = GetIntAttribute(ax::mojom::IntAttribute::kScrollXMax);
   float total_width = clipped_bounds.width() + x_max - x_min;
@@ -1679,7 +1678,7 @@
     return S_OK;
   }
 
-  gfx::RectF clipped_bounds(delegate_->GetClippedScreenBoundsRect());
+  gfx::RectF clipped_bounds(GetDelegate()->GetClippedScreenBoundsRect());
   float y_min = GetIntAttribute(ax::mojom::IntAttribute::kScrollYMin);
   float y_max = GetIntAttribute(ax::mojom::IntAttribute::kScrollYMax);
   float total_height = clipped_bounds.height() + y_max - y_min;
@@ -1704,7 +1703,7 @@
 
   AXActionData data;
   data.action = ax::mojom::Action::kDoDefault;
-  if (delegate_->AccessibilityPerformAction(data))
+  if (GetDelegate()->AccessibilityPerformAction(data))
     return S_OK;
   return E_FAIL;
 }
@@ -1725,7 +1724,7 @@
 
   AXActionData data;
   data.action = ax::mojom::Action::kDoDefault;
-  if (delegate_->AccessibilityPerformAction(data))
+  if (GetDelegate()->AccessibilityPerformAction(data))
     return S_OK;
   return E_FAIL;
 }
@@ -1763,11 +1762,11 @@
 
 IFACEMETHODIMP AXPlatformNodeWin::GetSelection(SAFEARRAY** result) {
   COM_OBJECT_VALIDATE_1_ARG(result);
-  int child_count = delegate_->GetChildCount();
+  int child_count = GetDelegate()->GetChildCount();
   *result = SafeArrayCreateVector(VT_UNKNOWN, 0, child_count);
   for (LONG i = 0; i < child_count; ++i) {
     auto* child = static_cast<AXPlatformNodeWin*>(
-        FromNativeViewAccessible(delegate_->ChildAtIndex(i)));
+        FromNativeViewAccessible(GetDelegate()->ChildAtIndex(i)));
     DCHECK(child);
     child->AddRef();
     SafeArrayPutElement(*result, &i,
@@ -1793,11 +1792,11 @@
 IFACEMETHODIMP AXPlatformNodeWin::GetColumnHeaderItems(SAFEARRAY** result) {
   COM_OBJECT_VALIDATE_1_ARG(result);
 
-  if (!IsCellOrTableHeaderRole(GetData().role) || !GetTable())
+  if (!IsCellOrTableHeader(GetData().role) || !GetTable())
     return E_FAIL;
 
   std::vector<int32_t> column_header_ids =
-      delegate_->GetColHeaderNodeIds(GetTableColumn());
+      GetDelegate()->GetColHeaderNodeIds(GetTableColumn());
   if (column_header_ids.empty())
     return S_FALSE;
   *result = CreateUIAElementsArrayFromIdVector(column_header_ids);
@@ -1807,11 +1806,11 @@
 IFACEMETHODIMP AXPlatformNodeWin::GetRowHeaderItems(SAFEARRAY** result) {
   COM_OBJECT_VALIDATE_1_ARG(result);
 
-  if (!IsCellOrTableHeaderRole(GetData().role) || !GetTable())
+  if (!IsCellOrTableHeader(GetData().role) || !GetTable())
     return E_FAIL;
 
   std::vector<int32_t> row_header_ids =
-      delegate_->GetRowHeaderNodeIds(GetTableRow());
+      GetDelegate()->GetRowHeaderNodeIds(GetTableRow());
   if (row_header_ids.empty())
     return S_FALSE;
   *result = CreateUIAElementsArrayFromIdVector(row_header_ids);
@@ -1828,7 +1827,7 @@
   if (!GetTable())
     return E_FAIL;
 
-  std::vector<int32_t> column_header_ids = delegate_->GetColHeaderNodeIds();
+  std::vector<int32_t> column_header_ids = GetDelegate()->GetColHeaderNodeIds();
   *result = CreateUIAElementsArrayFromIdVector(column_header_ids);
   return S_OK;
 }
@@ -1839,7 +1838,7 @@
   if (!GetTable())
     return E_FAIL;
 
-  std::vector<int32_t> row_header_ids = delegate_->GetRowHeaderNodeIds();
+  std::vector<int32_t> row_header_ids = GetDelegate()->GetRowHeaderNodeIds();
   *result = CreateUIAElementsArrayFromIdVector(row_header_ids);
   return S_OK;
 }
@@ -1858,7 +1857,7 @@
   AXActionData action_data;
   action_data.action = ax::mojom::Action::kDoDefault;
 
-  if (delegate_->AccessibilityPerformAction(action_data))
+  if (GetDelegate()->AccessibilityPerformAction(action_data))
     return S_OK;
   return E_FAIL;
 }
@@ -1887,7 +1886,7 @@
   AXActionData data;
   data.action = ax::mojom::Action::kSetValue;
   data.value = base::WideToUTF8(value);
-  if (delegate_->AccessibilityPerformAction(data))
+  if (GetDelegate()->AccessibilityPerformAction(data))
     return S_OK;
   return E_FAIL;
 }
@@ -1918,7 +1917,7 @@
   AXActionData data;
   data.action = ax::mojom::Action::kSetValue;
   data.value = base::NumberToString(value);
-  if (delegate_->AccessibilityPerformAction(data))
+  if (GetDelegate()->AccessibilityPerformAction(data))
     return S_OK;
   return E_FAIL;
 }
@@ -3144,14 +3143,14 @@
       break;
 
     case UIA_GridPatternId:
-      if (IsTableLikeRole(data.role)) {
+      if (IsTableLike(data.role)) {
         AddRef();
         *result = static_cast<IGridProvider*>(this);
       }
       break;
 
     case UIA_GridItemPatternId:
-      if (IsCellOrTableHeaderRole(data.role)) {
+      if (IsCellOrTableHeader(data.role)) {
         AddRef();
         *result = static_cast<IGridItemProvider*>(this);
       }
@@ -3177,14 +3176,14 @@
       break;
 
     case UIA_TablePatternId:
-      if (IsTableLikeRole(data.role)) {
+      if (IsTableLike(data.role)) {
         AddRef();
         *result = static_cast<ITableProvider*>(this);
       }
       break;
 
     case UIA_TableItemPatternId:
-      if (IsCellOrTableHeaderRole(data.role)) {
+      if (IsCellOrTableHeader(data.role)) {
         AddRef();
         *result = static_cast<ITableItemProvider*>(this);
       }
@@ -3205,7 +3204,7 @@
       break;
 
     case UIA_SelectionPatternId:
-      if (IsContainerWithSelectableChildrenRole(data.role)) {
+      if (IsContainerWithSelectableChildren(data.role)) {
         AddRef();
         *result = static_cast<ISelectionProvider*>(this);
       }
@@ -3633,7 +3632,7 @@
       return ROLE_SYSTEM_DOCUMENT;
 
     case ax::mojom::Role::kEmbeddedObject:
-      if (delegate_->GetChildCount()) {
+      if (GetDelegate()->GetChildCount()) {
         return ROLE_SYSTEM_GROUPING;
       } else {
         return ROLE_SYSTEM_CLIENT;
@@ -4154,7 +4153,7 @@
       ia2_role = IA2_ROLE_FOOTNOTE;
       break;
     case ax::mojom::Role::kEmbeddedObject:
-      if (!delegate_->GetChildCount()) {
+      if (!GetDelegate()->GetChildCount()) {
         ia2_role = IA2_ROLE_EMBEDDED_OBJECT;
       }
       break;
@@ -4426,7 +4425,7 @@
       return L"document";
 
     case ax::mojom::Role::kEmbeddedObject:
-      if (delegate_->GetChildCount()) {
+      if (GetDelegate()->GetChildCount()) {
         return L"group";
       } else {
         return L"document";
@@ -5049,7 +5048,7 @@
       return UIA_DocumentControlTypeId;
 
     case ax::mojom::Role::kEmbeddedObject:
-      if (delegate_->GetChildCount()) {
+      if (GetDelegate()->GetChildCount()) {
         return UIA_GroupControlTypeId;
       } else {
         return UIA_DocumentControlTypeId;
@@ -5464,7 +5463,7 @@
     // Expose whether or not the mouse is over an element, but suppress
     // this for tests because it can make the test results flaky depending
     // on the position of the mouse.
-    if (delegate_->ShouldIgnoreHoveredStateForTesting())
+    if (GetDelegate()->ShouldIgnoreHoveredStateForTesting())
       msaa_state |= STATE_SYSTEM_HOTTRACKED;
   }
 
@@ -5484,7 +5483,7 @@
     msaa_state |= STATE_SYSTEM_MULTISELECTABLE;
   }
 
-  if (delegate_->IsOffscreen())
+  if (GetDelegate()->IsOffscreen())
     msaa_state |= STATE_SYSTEM_OFFSCREEN;
 
   if (data.HasState(ax::mojom::State::kProtected))
@@ -5552,7 +5551,7 @@
   //
   // Handle STATE_SYSTEM_FOCUSED
   //
-  gfx::NativeViewAccessible focus = delegate_->GetFocus();
+  gfx::NativeViewAccessible focus = GetDelegate()->GetFocus();
   if (focus == GetNativeViewAccessible())
     msaa_state |= STATE_SYSTEM_FOCUSED;
 
@@ -5718,11 +5717,11 @@
   if (child_id == CHILDID_SELF)
     return this;
 
-  if (child_id >= 1 && child_id <= delegate_->GetChildCount()) {
+  if (child_id >= 1 && child_id <= GetDelegate()->GetChildCount()) {
     // Positive child ids are a 1-based child index, used by clients
     // that want to enumerate all immediate children.
     AXPlatformNodeBase* base =
-        FromNativeViewAccessible(delegate_->ChildAtIndex(child_id - 1));
+        FromNativeViewAccessible(GetDelegate()->ChildAtIndex(child_id - 1));
     return static_cast<AXPlatformNodeWin*>(base);
   }
 
@@ -5847,13 +5846,13 @@
   // cross-tree traversal is necessary.
   if (child->IsTextOnlyObject()) {
     int32_t hypertext_offset = 0;
-    int32_t index_in_parent = child->delegate_->GetIndexInParent();
+    int32_t index_in_parent = child->GetDelegate()->GetIndexInParent();
     DCHECK_GE(index_in_parent, 0);
     DCHECK_LT(index_in_parent,
-              static_cast<int32_t>(delegate_->GetChildCount()));
+              static_cast<int32_t>(GetDelegate()->GetChildCount()));
     for (uint32_t i = 0; i < static_cast<uint32_t>(index_in_parent); ++i) {
       auto* sibling = static_cast<AXPlatformNodeWin*>(
-          FromNativeViewAccessible(delegate_->ChildAtIndex(i)));
+          FromNativeViewAccessible(GetDelegate()->ChildAtIndex(i)));
       DCHECK(sibling);
       if (sibling->IsTextOnlyObject())
         hypertext_offset += (int32_t)sibling->GetTextAsString16().size();
@@ -5873,7 +5872,7 @@
 int32_t AXPlatformNodeWin::GetHypertextOffsetFromDescendant(
     AXPlatformNodeWin* descendant) {
   auto* parent_object = static_cast<AXPlatformNodeWin*>(
-      FromNativeViewAccessible(descendant->delegate_->GetParent()));
+      FromNativeViewAccessible(descendant->GetDelegate()->GetParent()));
   while (parent_object && parent_object != this) {
     descendant = parent_object;
     parent_object = static_cast<AXPlatformNodeWin*>(
@@ -5905,9 +5904,9 @@
     return endpoint_offset;
 
   AXPlatformNodeWin* common_parent = this;
-  int32_t index_in_common_parent = delegate_->GetIndexInParent();
+  int32_t index_in_common_parent = GetDelegate()->GetIndexInParent();
   while (common_parent && !endpoint_object->IsDescendantOf(common_parent)) {
-    index_in_common_parent = common_parent->delegate_->GetIndexInParent();
+    index_in_common_parent = common_parent->GetDelegate()->GetIndexInParent();
     common_parent = static_cast<AXPlatformNodeWin*>(
         FromNativeViewAccessible(common_parent->GetParent()));
   }
@@ -5939,12 +5938,13 @@
   // We can safely assume that the endpoint is in another part of the tree or
   // at common parent, and that this object is a descendant of common parent.
   int32_t endpoint_index_in_common_parent = -1;
-  for (int i = 0; i < common_parent->delegate_->GetChildCount(); ++i) {
+  for (int i = 0; i < common_parent->GetDelegate()->GetChildCount(); ++i) {
     auto* child = static_cast<AXPlatformNodeWin*>(
-        common_parent->delegate_->ChildAtIndex(i));
+        common_parent->GetDelegate()->ChildAtIndex(i));
     DCHECK(child);
     if (endpoint_object->IsDescendantOf(child)) {
-      endpoint_index_in_common_parent = child->delegate_->GetIndexInParent();
+      endpoint_index_in_common_parent =
+          child->GetDelegate()->GetIndexInParent();
       break;
     }
   }
@@ -6074,24 +6074,24 @@
 }
 
 int AXPlatformNodeWin::GetSelectionAnchor() {
-  int32_t anchor_id = delegate_->GetTreeData().sel_anchor_object_id;
+  int32_t anchor_id = GetDelegate()->GetTreeData().sel_anchor_object_id;
   AXPlatformNodeWin* anchor_object =
-      static_cast<AXPlatformNodeWin*>(delegate_->GetFromNodeID(anchor_id));
+      static_cast<AXPlatformNodeWin*>(GetDelegate()->GetFromNodeID(anchor_id));
   if (!anchor_object)
     return -1;
 
-  int anchor_offset = delegate_->GetTreeData().sel_anchor_offset;
+  int anchor_offset = GetDelegate()->GetTreeData().sel_anchor_offset;
   return GetHypertextOffsetFromEndpoint(anchor_object, anchor_offset);
 }
 
 int AXPlatformNodeWin::GetSelectionFocus() {
-  int32_t focus_id = delegate_->GetTreeData().sel_focus_object_id;
+  int32_t focus_id = GetDelegate()->GetTreeData().sel_focus_object_id;
   AXPlatformNodeWin* focus_object =
-      static_cast<AXPlatformNodeWin*>(delegate_->GetFromNodeID(focus_id));
+      static_cast<AXPlatformNodeWin*>(GetDelegate()->GetFromNodeID(focus_id));
   if (!focus_object)
     return -1;
 
-  int focus_offset = delegate_->GetTreeData().sel_focus_offset;
+  int focus_offset = GetDelegate()->GetTreeData().sel_focus_offset;
   return GetHypertextOffsetFromEndpoint(focus_object, focus_offset);
 }
 
diff --git a/ui/accessibility/platform/ax_unique_id.cc b/ui/accessibility/platform/ax_unique_id.cc
index 06282f6..852371c 100644
--- a/ui/accessibility/platform/ax_unique_id.cc
+++ b/ui/accessibility/platform/ax_unique_id.cc
@@ -8,6 +8,7 @@
 #include <unordered_set>
 
 #include "base/lazy_instance.h"
+#include "base/stl_util.h"
 
 namespace ui {
 
@@ -18,6 +19,8 @@
 
 }  // namespace
 
+AXUniqueId::AXUniqueId() : AXUniqueId(INT32_MAX) {}
+
 AXUniqueId::AXUniqueId(const int32_t max_id) : id_(GetNextAXUniqueId(max_id)) {}
 
 AXUniqueId::~AXUniqueId() {
@@ -32,9 +35,8 @@
   return !(*this == other);
 }
 
-bool AXUniqueId::IsAssigned(int32_t id) const {
-  auto id_map = g_assigned_ids.Get();
-  return id_map.find(id) != id_map.end();
+bool AXUniqueId::IsAssigned(const int32_t id) const {
+  return base::ContainsKey(g_assigned_ids.Get(), id);
 }
 
 int32_t AXUniqueId::GetNextAXUniqueId(const int32_t max_id) {
@@ -42,22 +44,23 @@
   static bool has_wrapped = false;
 
   const int32_t prev_id = current_id;
-
-  while (true) {
+  do {
     if (current_id == max_id) {
       current_id = 1;
       has_wrapped = true;
     } else {
-      current_id++;
+      ++current_id;
     }
-    if (current_id == prev_id)
-      LOG(FATAL) << "Over 2 billion active ids, something is wrong.";
-    if (!has_wrapped || !IsAssigned(current_id))
-      break;
-  }
+    if (current_id == prev_id) {
+      LOG(FATAL) << "There are over 2 billion available IDs, so the newly "
+                    "created ID cannot be equal to the most recently created "
+                    "ID.";
+    }
+    // If it |has_wrapped| then we need to continue until we find the first
+    // unassigned ID.
+  } while (has_wrapped && IsAssigned(current_id));
 
   g_assigned_ids.Get().insert(current_id);
-
   return current_id;
 }
 
diff --git a/ui/accessibility/platform/ax_unique_id.h b/ui/accessibility/platform/ax_unique_id.h
index f0c20fcb..0f3853f 100644
--- a/ui/accessibility/platform/ax_unique_id.h
+++ b/ui/accessibility/platform/ax_unique_id.h
@@ -17,17 +17,18 @@
 // is required to generate the ID, and the ID is freed when the AXUniqueID is
 // destroyed.
 //
-// The  unique id that's guaranteed to be a positive number. Becase some
+// The  unique id that's guaranteed to be a positive number. Because some
 // platforms want to negate it, we ensure the range is below the signed int max.
 //
 // These ids must not be conflated with the int id, that comes with web node
 // data, which are only unique within their source frame.
 class AX_EXPORT AXUniqueId {
  public:
-  AXUniqueId() : AXUniqueId(INT32_MAX) {}
-  ~AXUniqueId();
+  AXUniqueId();
+  virtual ~AXUniqueId();
 
   int32_t Get() const { return id_; }
+  operator int32_t() const { return id_; }
 
   bool operator==(const AXUniqueId& other) const;
   bool operator!=(const AXUniqueId& other) const;
diff --git a/ui/accessibility/platform/ax_unique_id_unittest.cc b/ui/accessibility/platform/ax_unique_id_unittest.cc
index 4baafae..d6fdb58 100644
--- a/ui/accessibility/platform/ax_unique_id_unittest.cc
+++ b/ui/accessibility/platform/ax_unique_id_unittest.cc
@@ -21,11 +21,15 @@
 class AXTestSmallBankUniqueId : public AXUniqueId {
  public:
   AXTestSmallBankUniqueId();
+  ~AXTestSmallBankUniqueId() override;
 
+ private:
   friend class AXUniqueId;
+  DISALLOW_COPY_AND_ASSIGN(AXTestSmallBankUniqueId);
 };
 
 AXTestSmallBankUniqueId::AXTestSmallBankUniqueId() : AXUniqueId(kMaxId) {}
+AXTestSmallBankUniqueId::~AXTestSmallBankUniqueId() = default;
 
 TEST(AXPlatformUniqueIdTest, UnassignedIdsAreReused) {
   // Create a bank of ids that uses up all available ids.
diff --git a/ui/gfx/font_fallback_win.cc b/ui/gfx/font_fallback_win.cc
index e18fb411..7fad8b99 100644
--- a/ui/gfx/font_fallback_win.cc
+++ b/ui/gfx/font_fallback_win.cc
@@ -151,7 +151,6 @@
   if (it != cached_linked_fonts_.end())
     return &it->second;
 
-  cached_linked_fonts_[font_name] = std::vector<Font>();
   std::vector<Font>* linked_fonts = &cached_linked_fonts_[font_name];
 
   QueryLinkedFontsFromRegistry(font, &cached_system_fonts_, linked_fonts);
@@ -265,73 +264,13 @@
   }
 }
 
-LinkedFontsIterator::LinkedFontsIterator(Font font)
-    : original_font_(font),
-      next_font_set_(false),
-      linked_fonts_(NULL),
-      linked_font_index_(0) {
-  SetNextFont(original_font_);
-}
-
-LinkedFontsIterator::~LinkedFontsIterator() {
-}
-
-void LinkedFontsIterator::SetNextFont(Font font) {
-  next_font_ = font;
-  next_font_set_ = true;
-}
-
-bool LinkedFontsIterator::NextFont(Font* font) {
-  if (next_font_set_) {
-    next_font_set_ = false;
-    current_font_ = next_font_;
-    *font = current_font_;
-    return true;
-  }
-
-  // First time through, get the linked fonts list.
-  if (linked_fonts_ == NULL)
-    linked_fonts_ = GetLinkedFonts();
-
-  if (linked_font_index_ == linked_fonts_->size())
-    return false;
-
-  current_font_ = linked_fonts_->at(linked_font_index_++);
-  *font = current_font_;
-  return true;
-}
-
-const std::vector<Font>* LinkedFontsIterator::GetLinkedFonts() const {
-  CachedFontLinkSettings* font_link = CachedFontLinkSettings::GetInstance();
-
-  // First, try to get the list for the original font.
-  const std::vector<Font>* fonts = font_link->GetLinkedFonts(original_font_);
-
-  // If there are no linked fonts for the original font, try querying the
-  // ones for the current font. This may happen if the first font is a custom
-  // font that has no linked fonts in the registry.
-  //
-  // Note: One possibility would be to always merge both lists of fonts,
-  //       but it is not clear whether there are any real world scenarios
-  //       where this would actually help.
-  if (fonts->empty())
-    fonts = font_link->GetLinkedFonts(current_font_);
-
-  return fonts;
-}
-
 }  // namespace internal
 
 std::vector<Font> GetFallbackFonts(const Font& font) {
   std::string font_family = font.GetFontName();
-
-  // LinkedFontsIterator doesn't care about the font size, so we always pass 10.
-  internal::LinkedFontsIterator linked_fonts(Font(font_family, 10));
-  std::vector<Font> fallback_fonts;
-  Font current;
-  while (linked_fonts.NextFont(&current))
-    fallback_fonts.push_back(current);
-  return fallback_fonts;
+  CachedFontLinkSettings* font_link = CachedFontLinkSettings::GetInstance();
+  // GetLinkedFonts doesn't care about the font size, so we always pass 10.
+  return *font_link->GetLinkedFonts(Font(font_family, 10));
 }
 
 bool GetFallbackFont(const Font& font,
diff --git a/ui/gfx/font_fallback_win.h b/ui/gfx/font_fallback_win.h
index b9d8339e..083eb10 100644
--- a/ui/gfx/font_fallback_win.h
+++ b/ui/gfx/font_fallback_win.h
@@ -33,52 +33,6 @@
 void GFX_EXPORT ParseFontFamilyString(const std::string& family,
                                      std::vector<std::string>* font_names);
 
-// Iterator over linked fallback fonts for a given font. The linked font chain
-// comes from the Windows registry, but gets cached between uses.
-class GFX_EXPORT LinkedFontsIterator {
- public:
-  // Instantiates the iterator over the linked font chain for |font|. The first
-  // item will be |font| itself.
-  explicit LinkedFontsIterator(Font font);
-  virtual ~LinkedFontsIterator();
-
-  // Sets the font that would be returned by the next call to |NextFont()|,
-  // useful for inserting one-time entries into the iterator chain.
-  void SetNextFont(Font font);
-
-  // Gets the next font in the link chain, if available, and increments the
-  // iterator. Returns |true| on success or |false| if the iterator is past
-  // last item (in that case, the value of |font| should not be used). If
-  // |SetNextFont()| was called, returns the font set that way and clears it.
-  bool NextFont(Font* font);
-
- protected:
-  // Retrieves the list of linked fonts. Protected and virtual so that it may
-  // be overridden by tests.
-  virtual const std::vector<Font>* GetLinkedFonts() const;
-
- private:
-  // Original font whose linked fonts are being iterated over.
-  Font original_font_;
-
-  // Font that was set via |SetNextFont()|.
-  Font next_font_;
-
-  // Indicates whether |SetNextFont()| was called.
-  bool next_font_set_;
-
-  // The font most recently returned by |NextFont()|.
-  Font current_font_;
-
-  // List of linked fonts; weak pointer.
-  const std::vector<Font>* linked_fonts_;
-
-  // Index of the current entry in the |linked_fonts_| list.
-  size_t linked_font_index_;
-
-  DISALLOW_COPY_AND_ASSIGN(LinkedFontsIterator);
-};
-
 }  // namespace internal
 
 }  // namespace gfx
diff --git a/ui/gfx/font_fallback_win_unittest.cc b/ui/gfx/font_fallback_win_unittest.cc
index 8629f6f..e4faf0c2 100644
--- a/ui/gfx/font_fallback_win_unittest.cc
+++ b/ui/gfx/font_fallback_win_unittest.cc
@@ -10,34 +10,6 @@
 
 namespace gfx {
 
-namespace {
-
-// Subclass of LinkedFontsIterator for testing that allows mocking the linked
-// fonts vector.
-class TestLinkedFontsIterator : public internal::LinkedFontsIterator {
- public:
-  explicit TestLinkedFontsIterator(Font font) : LinkedFontsIterator(font) {
-  }
-
-  ~TestLinkedFontsIterator() override {}
-
-  // Add a linked font to the mocked vector of linked fonts.
-  void AddLinkedFontForTesting(Font font) {
-    test_linked_fonts.push_back(font);
-  }
-
-  const std::vector<Font>* GetLinkedFonts() const override {
-    return &test_linked_fonts;
-  }
-
- private:
-  std::vector<Font> test_linked_fonts;
-
-  DISALLOW_COPY_AND_ASSIGN(TestLinkedFontsIterator);
-};
-
-}  // namespace
-
 TEST(FontFallbackWinTest, ParseFontLinkEntry) {
   std::string file;
   std::string font;
@@ -84,38 +56,6 @@
   EXPECT_EQ("Meiryo UI Italic", font_names[3]);
 }
 
-TEST(FontFallbackWinTest, LinkedFontsIterator) {
-  TestLinkedFontsIterator iterator(Font("Arial", 16));
-  iterator.AddLinkedFontForTesting(Font("Times New Roman", 16));
-
-  Font font;
-  EXPECT_TRUE(iterator.NextFont(&font));
-  ASSERT_EQ("Arial", font.GetFontName());
-
-  EXPECT_TRUE(iterator.NextFont(&font));
-  ASSERT_EQ("Times New Roman", font.GetFontName());
-
-  EXPECT_FALSE(iterator.NextFont(&font));
-}
-
-TEST(FontFallbackWinTest, LinkedFontsIteratorSetNextFont) {
-  TestLinkedFontsIterator iterator(Font("Arial", 16));
-  iterator.AddLinkedFontForTesting(Font("Times New Roman", 16));
-
-  Font font;
-  EXPECT_TRUE(iterator.NextFont(&font));
-  ASSERT_EQ("Arial", font.GetFontName());
-
-  iterator.SetNextFont(Font("Tahoma", 16));
-  EXPECT_TRUE(iterator.NextFont(&font));
-  ASSERT_EQ("Tahoma", font.GetFontName());
-
-  EXPECT_TRUE(iterator.NextFont(&font));
-  ASSERT_EQ("Times New Roman", font.GetFontName());
-
-  EXPECT_FALSE(iterator.NextFont(&font));
-}
-
 TEST(FontFallbackWinTest, FontFallback) {
   // Needed to bypass DCHECK in GetFallbackFont.
   base::MessageLoopForUI message_loop;
diff --git a/ui/gfx/path.cc b/ui/gfx/path.cc
index 70ed739..16d73946 100644
--- a/ui/gfx/path.cc
+++ b/ui/gfx/path.cc
@@ -4,28 +4,12 @@
 
 #include "ui/gfx/path.h"
 
-#include "base/logging.h"
-
 namespace gfx {
 
 Path::Path()
     : SkPath() {
 }
 
-Path::Path(const Point* points, size_t count) {
-  DCHECK(count > 1);
-  moveTo(SkIntToScalar(points[0].x), SkIntToScalar(points[0].y));
-  for (size_t i = 1; i < count; ++i)
-    lineTo(SkIntToScalar(points[i].x), SkIntToScalar(points[i].y));
-}
-
-Path::Path(const PointF* points, size_t count) {
-  DCHECK(count > 1);
-  moveTo(SkFloatToScalar(points[0].x), SkFloatToScalar(points[0].y));
-  for (size_t i = 1; i < count; ++i)
-    lineTo(SkFloatToScalar(points[i].x), SkFloatToScalar(points[i].y));
-}
-
 Path::~Path() {
 }
 
diff --git a/ui/gfx/path.h b/ui/gfx/path.h
index e1cbfa9..259053a4 100644
--- a/ui/gfx/path.h
+++ b/ui/gfx/path.h
@@ -14,24 +14,11 @@
 
 namespace gfx {
 
+// DEPRECATED, use SkPath directly.
+// TODO(collinbaker): remove this class and replace all references with SkPath.
 class GFX_EXPORT Path : public SkPath {
  public:
-  // Used by Path(Point,size_t) constructor.
-  struct Point {
-    int x;
-    int y;
-  };
-  struct PointF {
-    float x;
-    float y;
-  };
-
   Path();
-
-  // Creates a path populated with the specified points.
-  Path(const Point* points, size_t count);
-  Path(const PointF* points, size_t count);
-
   ~Path();
 };
 
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc
index 8a792d0b..3bfe28f 100644
--- a/ui/keyboard/keyboard_controller.cc
+++ b/ui/keyboard/keyboard_controller.cc
@@ -429,6 +429,7 @@
   TRACE_EVENT0("vk", "HideKeyboard");
 
   switch (state_) {
+    case KeyboardControllerState::UNKNOWN:
     case KeyboardControllerState::INITIAL:
     case KeyboardControllerState::HIDDEN:
       return;
@@ -494,7 +495,7 @@
 
       break;
     }
-    default:
+    case KeyboardControllerState::COUNT:
       NOTREACHED();
   }
 }
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index e392ad6..01f9b8b 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -518,6 +518,7 @@
   if (use_x11) {
     deps += [ "//ui/display/util" ]
   }
+
   if (is_linux && !is_chromeos) {
     sources -= [ "window/window_button_order_provider.cc" ]
     deps += [ "//ui/shell_dialogs" ]
@@ -577,6 +578,7 @@
   if (use_ozone) {
     deps += [ "//ui/ozone" ]
   }
+
   if (use_x11) {
     configs += [
       "//build/config/linux:x11",
@@ -623,6 +625,7 @@
       "widget/tooltip_manager_aura.h",
       "widget/window_reorderer.h",
     ]
+
     sources += [
       "accessibility/ax_aura_obj_cache.cc",
       "accessibility/ax_aura_obj_wrapper.cc",
@@ -755,6 +758,8 @@
 
   if (has_native_accessibility) {
     sources += [
+      "accessibility/ax_virtual_view.cc",
+      "accessibility/ax_virtual_view.h",
       "accessibility/view_ax_platform_node_delegate.cc",
       "accessibility/view_ax_platform_node_delegate.h",
       "accessibility/view_ax_platform_node_delegate_mac.h",
@@ -1084,7 +1089,10 @@
   }
 
   if (has_native_accessibility) {
-    sources += [ "accessibility/view_ax_platform_node_delegate_unittest.cc" ]
+    sources += [
+      "accessibility/ax_virtual_view_unittest.cc",
+      "accessibility/view_ax_platform_node_delegate_unittest.cc",
+    ]
   }
 
   if (use_x11) {
diff --git a/ui/views/accessibility/ax_virtual_view.cc b/ui/views/accessibility/ax_virtual_view.cc
new file mode 100644
index 0000000..faa4da2
--- /dev/null
+++ b/ui/views/accessibility/ax_virtual_view.cc
@@ -0,0 +1,274 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/accessibility/ax_virtual_view.h"
+
+#include <stdint.h>
+
+#include <algorithm>
+#include <utility>
+
+#include "ui/accessibility/ax_action_data.h"
+#include "ui/accessibility/ax_tree_data.h"
+#include "ui/accessibility/platform/ax_platform_node.h"
+#include "ui/accessibility/platform/ax_platform_node_base.h"
+#include "ui/views/accessibility/view_accessibility.h"
+#include "ui/views/view.h"
+
+namespace views {
+
+AXVirtualView::AXVirtualView()
+    : parent_view_(nullptr), virtual_parent_view_(nullptr) {
+  ax_platform_node_ = ui::AXPlatformNode::Create(this);
+  DCHECK(ax_platform_node_);
+}
+
+AXVirtualView::~AXVirtualView() {
+  DCHECK(!parent_view_ || !virtual_parent_view_)
+      << "Either |parent_view_| or |virtual_parent_view_| could be set but "
+         "not both.";
+
+  if (ax_platform_node_) {
+    ax_platform_node_->Destroy();
+    ax_platform_node_ = nullptr;
+  }
+}
+
+void AXVirtualView::AddChildView(std::unique_ptr<AXVirtualView> view) {
+  DCHECK(view);
+  if (view->virtual_parent_view_ == this)
+    return;
+  AddChildViewAt(std::move(view), GetChildCount());
+}
+
+void AXVirtualView::AddChildViewAt(std::unique_ptr<AXVirtualView> view,
+                                   int index) {
+  DCHECK(view);
+  CHECK_NE(view.get(), this)
+      << "You cannot add an AXVirtualView as its own child.";
+  DCHECK(!view->parent_view_) << "This |view| already has an AXVirtualView "
+                                 "parent. Call RemoveVirtualChildView first.";
+  DCHECK(!view->virtual_parent_view_)
+      << "This |view| already has a View parent. Call RemoveChildView first.";
+  DCHECK_GE(index, 0);
+  DCHECK_LE(index, GetChildCount());
+
+  view->virtual_parent_view_ = this;
+  children_.insert(children_.begin() + index, std::move(view));
+}
+
+void AXVirtualView::ReorderChildView(AXVirtualView* view, int index) {
+  DCHECK(view);
+  if (index >= GetChildCount())
+    return;
+  if (index < 0)
+    index = GetChildCount() - 1;
+
+  DCHECK_EQ(view->virtual_parent_view_, this);
+  if (children_[index].get() == view)
+    return;
+
+  int cur_index = GetIndexOf(view);
+  if (cur_index < 0)
+    return;
+
+  std::unique_ptr<AXVirtualView> child = std::move(children_[cur_index]);
+  children_.erase(children_.begin() + cur_index);
+  children_.insert(children_.begin() + index, std::move(child));
+}
+
+std::unique_ptr<AXVirtualView> AXVirtualView::RemoveChildView(
+    AXVirtualView* view) {
+  DCHECK(view);
+  int cur_index = GetIndexOf(view);
+  if (cur_index < 0)
+    return {};
+
+  std::unique_ptr<AXVirtualView> child = std::move(children_[cur_index]);
+  children_.erase(children_.begin() + cur_index);
+  child->virtual_parent_view_ = nullptr;
+  return child;
+}
+
+void AXVirtualView::RemoveAllChildViews() {
+  while (!children_.empty())
+    RemoveChildView(children_.back().get());
+}
+
+const AXVirtualView* AXVirtualView::child_at(int index) const {
+  DCHECK_GE(index, 0);
+  DCHECK_LT(index, static_cast<int>(children_.size()));
+  return children_[index].get();
+}
+
+AXVirtualView* AXVirtualView::child_at(int index) {
+  return const_cast<AXVirtualView*>(
+      const_cast<const AXVirtualView*>(this)->child_at(index));
+}
+
+bool AXVirtualView::Contains(const AXVirtualView* view) const {
+  DCHECK(view);
+  for (const AXVirtualView* v = view; v; v = v->virtual_parent_view_) {
+    if (v == this)
+      return true;
+  }
+  return false;
+}
+
+int AXVirtualView::GetIndexOf(const AXVirtualView* view) const {
+  DCHECK(view);
+  const auto iter =
+      std::find_if(children_.begin(), children_.end(),
+                   [view](const auto& child) { return child.get() == view; });
+  return iter != children_.end() ? static_cast<int>(iter - children_.begin())
+                                 : -1;
+}
+
+gfx::NativeViewAccessible AXVirtualView::GetNativeObject() const {
+  DCHECK(ax_platform_node_);
+  return ax_platform_node_->GetNativeViewAccessible();
+}
+
+void AXVirtualView::NotifyAccessibilityEvent(ax::mojom::Event event_type) {
+  DCHECK(ax_platform_node_);
+  ax_platform_node_->NotifyAccessibilityEvent(event_type);
+}
+
+void AXVirtualView::OverrideRole(const ax::mojom::Role role) {
+  custom_data_.role = role;
+}
+
+void AXVirtualView::OverrideState(ax::mojom::State state) {
+  custom_data_.state = static_cast<int32_t>(state);
+}
+
+void AXVirtualView::OverrideName(const std::string& name) {
+  custom_data_.SetName(name);
+}
+
+void AXVirtualView::OverrideName(const base::string16& name) {
+  custom_data_.SetName(name);
+}
+
+void AXVirtualView::OverrideDescription(const std::string& description) {
+  custom_data_.SetDescription(description);
+}
+
+void AXVirtualView::OverrideDescription(const base::string16& description) {
+  custom_data_.SetDescription(description);
+}
+
+void AXVirtualView::OverrideBoundsRect(const gfx::RectF& location) {
+  custom_data_.location = location;
+}
+
+// ui::AXPlatformNodeDelegate
+
+const ui::AXNodeData& AXVirtualView::GetData() const {
+  if (!IsParentVisible()) {
+    custom_data_.AddState(ax::mojom::State::kInvisible);
+  } else {
+    custom_data_.RemoveState(ax::mojom::State::kInvisible);
+  }
+  return custom_data_;
+}
+
+int AXVirtualView::GetChildCount() {
+  return static_cast<int>(children_.size());
+}
+
+gfx::NativeViewAccessible AXVirtualView::ChildAtIndex(int index) {
+  DCHECK_GE(index, 0) << "Child indices should be greater or equal to 0.";
+  DCHECK_LT(index, GetChildCount())
+      << "Child indices should be less than the child count.";
+  if (index >= 0 && index < GetChildCount())
+    return children_[index]->GetNativeObject();
+  return nullptr;
+}
+
+gfx::NativeWindow AXVirtualView::GetTopLevelWidget() {
+  // TODO(nektar): Implement.
+  return nullptr;
+}
+
+gfx::NativeViewAccessible AXVirtualView::GetParent() {
+  if (parent_view_)
+    return parent_view_->GetNativeViewAccessible();
+
+  if (virtual_parent_view_)
+    return virtual_parent_view_->GetNativeObject();
+
+  return nullptr;
+}
+
+gfx::Rect AXVirtualView::GetClippedScreenBoundsRect() const {
+  // We could optionally add clipping here if ever needed.
+  // TODO(nektar): Implement.
+  return {};
+}
+
+gfx::Rect AXVirtualView::GetUnclippedScreenBoundsRect() const {
+  // TODO(nektar): Implement.
+  return {};
+}
+
+gfx::NativeViewAccessible AXVirtualView::HitTestSync(int x, int y) {
+  // TODO(nektar): Implement.
+  return GetNativeObject();
+}
+
+gfx::NativeViewAccessible AXVirtualView::GetFocus() {
+  // TODO(nektar): Implement.
+  return nullptr;
+}
+
+ui::AXPlatformNode* AXVirtualView::GetFromNodeID(int32_t id) {
+  // TODO(nektar): Implement.
+  return nullptr;
+}
+
+bool AXVirtualView::AccessibilityPerformAction(const ui::AXActionData& data) {
+  // TODO(nektar): Implement.
+  return false;
+}
+
+bool AXVirtualView::ShouldIgnoreHoveredStateForTesting() {
+  // TODO(nektar): Implement.
+  return false;
+}
+
+bool AXVirtualView::IsOffscreen() const {
+  // TODO(nektar): Implement.
+  return false;
+}
+
+const ui::AXUniqueId& AXVirtualView::GetUniqueId() const {
+  return unique_id_;
+}
+
+bool AXVirtualView::IsParentVisible() const {
+  if (parent_view_) {
+    const auto* parent_node = static_cast<ui::AXPlatformNodeBase*>(
+        ui::AXPlatformNode::FromNativeViewAccessible(
+            parent_view_->GetNativeViewAccessible()));
+    if (!parent_node) {
+      NOTREACHED() << "AXVirtualView should be created on a platform with "
+                      "native accessibility support.";
+      return false;
+    }
+
+    const ui::AXNodeData& parent_data = parent_node->GetData();
+    return !parent_data.HasState(ax::mojom::State::kInvisible);
+  }
+
+  if (virtual_parent_view_) {
+    return !virtual_parent_view_->GetData().HasState(
+        ax::mojom::State::kInvisible);
+  }
+
+  // Not attached to a parent yet.
+  return false;
+}
+
+}  // namespace views
diff --git a/ui/views/accessibility/ax_virtual_view.h b/ui/views/accessibility/ax_virtual_view.h
new file mode 100644
index 0000000..763b953
--- /dev/null
+++ b/ui/views/accessibility/ax_virtual_view.h
@@ -0,0 +1,161 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_VIEWS_ACCESSIBILITY_AX_VIRTUAL_VIEW_H_
+#define UI_VIEWS_ACCESSIBILITY_AX_VIRTUAL_VIEW_H_
+
+#include <stdint.h>
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/strings/string16.h"
+#include "ui/accessibility/ax_enums.mojom.h"
+#include "ui/accessibility/ax_node_data.h"
+#include "ui/accessibility/platform/ax_platform_node_delegate_base.h"
+#include "ui/accessibility/platform/ax_unique_id.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/rect_f.h"
+#include "ui/gfx/native_widget_types.h"
+#include "ui/views/views_export.h"
+
+namespace ui {
+
+struct AXActionData;
+class AXUniqueId;
+
+}  // namespace ui
+
+namespace views {
+
+class View;
+class ViewAccessibility;
+
+// Implements a virtual view that is used only for accessibility.
+//
+// Some composite widgets such as tree and table views may utilize lightweight
+// UI objects instead of actual views for displaying and managing their
+// contents. We need a corresponding virtual accessibility view to expose
+// information about these lightweight Ui objects to accessibility. An
+// AXVirtualView is owned by its parent, which could either be a
+// ViewAccessibility or an AXVirtualView.
+class VIEWS_EXPORT AXVirtualView : public ui::AXPlatformNodeDelegateBase {
+ public:
+  AXVirtualView();
+  ~AXVirtualView() override;
+
+  //
+  // Methods for managing parent - child relationships.
+  //
+
+  // Adds |view| as a child of this virtual view, optionally at |index|.
+  // We take ownership of our children.
+  void AddChildView(std::unique_ptr<AXVirtualView> view);
+  void AddChildViewAt(std::unique_ptr<AXVirtualView> view, int index);
+
+  // Moves |view| to the specified |index|. A negative value for |index| moves
+  // |view| to the end.
+  void ReorderChildView(AXVirtualView* view, int index);
+
+  // Removes |view| from this virtual view. The view's parent will change to
+  // nullptr. Hands ownership back to the caller.
+  std::unique_ptr<AXVirtualView> RemoveChildView(AXVirtualView* view);
+
+  // Removes all the children from this virtual view.
+  // The virtual views are deleted.
+  void RemoveAllChildViews();
+
+  bool has_children() const { return !children_.empty(); }
+
+  const AXVirtualView* child_at(int index) const;
+  AXVirtualView* child_at(int index);
+
+  // Returns the parent view if the parent is a real View and not an
+  // AXVirtualView. Returns nullptr otherwise.
+  const View* parent_view() const { return parent_view_; }
+  View* parent_view() { return parent_view_; }
+
+  // Returns the parent view if the parent is an AXVirtualView and not a real
+  // View. Returns nullptr otherwise.
+  const AXVirtualView* virtual_parent_view() const {
+    return virtual_parent_view_;
+  }
+  AXVirtualView* virtual_parent_view() { return virtual_parent_view_; }
+
+  // Returns true if |view| is contained within the hierarchy of this
+  // AXVirtualView, even as an indirect descendant. Will return true if |view|
+  // is also this AXVirtualView.
+  bool Contains(const AXVirtualView* view) const;
+
+  // Returns the index of |view|, or -1 if |view| is not a child of this virtual
+  // view.
+  int GetIndexOf(const AXVirtualView* view) const;
+
+  //
+  // Methods also found in ViewAccessibility.
+  //
+
+  gfx::NativeViewAccessible GetNativeObject() const;
+  void NotifyAccessibilityEvent(ax::mojom::Event event_type);
+  void OverrideRole(const ax::mojom::Role role);
+  void OverrideState(ax::mojom::State state);
+  void OverrideName(const std::string& name);
+  void OverrideName(const base::string16& name);
+  void OverrideDescription(const std::string& description);
+  void OverrideDescription(const base::string16& description);
+  void OverrideBoundsRect(const gfx::RectF& location);
+
+  // ui::AXPlatformNodeDelegate
+  const ui::AXNodeData& GetData() const override;
+  int GetChildCount() override;
+  gfx::NativeViewAccessible ChildAtIndex(int index) override;
+  gfx::NativeWindow GetTopLevelWidget() override;
+  gfx::NativeViewAccessible GetParent() override;
+  gfx::Rect GetClippedScreenBoundsRect() const override;
+  gfx::Rect GetUnclippedScreenBoundsRect() const override;
+  gfx::NativeViewAccessible HitTestSync(int x, int y) override;
+  gfx::NativeViewAccessible GetFocus() override;
+  ui::AXPlatformNode* GetFromNodeID(int32_t id) override;
+  bool AccessibilityPerformAction(const ui::AXActionData& data) override;
+  bool ShouldIgnoreHoveredStateForTesting() override;
+  bool IsOffscreen() const override;
+  const ui::AXUniqueId& GetUniqueId() const override;
+
+ private:
+  // Sets the parent view if the parent is a real View and not an AXVirtualView.
+  // It is invalid to set both |parent_view_| and |virtual_parent_view_|.
+  void set_parent_view(View* view) {
+    DCHECK(!virtual_parent_view_);
+    parent_view_ = view;
+  }
+
+  bool IsParentVisible() const;
+
+  // We own this, but it is reference-counted on some platforms so we can't use
+  // a unique_ptr. It is destroyed in the destructor.
+  ui::AXPlatformNode* ax_platform_node_;
+
+  // Weak. Owns us if not nullptr.
+  // Either |parent_view_| or |virtual_parent_view_| should be set but not both.
+  View* parent_view_;
+
+  // Weak. Owns us if not nullptr.
+  // Either |parent_view_| or |virtual_parent_view_| should be set but not both.
+  AXVirtualView* virtual_parent_view_;
+
+  // We own our children.
+  std::vector<std::unique_ptr<AXVirtualView>> children_;
+
+  ui::AXUniqueId unique_id_;
+  mutable ui::AXNodeData custom_data_;
+
+  friend class ViewAccessibility;
+  DISALLOW_COPY_AND_ASSIGN(AXVirtualView);
+};
+
+}  // namespace views
+
+#endif  // UI_VIEWS_ACCESSIBILITY_AX_VIRTUAL_VIEW_H_
diff --git a/ui/views/accessibility/ax_virtual_view_unittest.cc b/ui/views/accessibility/ax_virtual_view_unittest.cc
new file mode 100644
index 0000000..43fdd6d
--- /dev/null
+++ b/ui/views/accessibility/ax_virtual_view_unittest.cc
@@ -0,0 +1,216 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/accessibility/ax_virtual_view.h"
+
+#include "base/memory/ptr_util.h"
+#include "ui/accessibility/ax_enums.mojom.h"
+#include "ui/accessibility/ax_node_data.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/size.h"
+#include "ui/views/accessibility/view_ax_platform_node_delegate.h"
+#include "ui/views/controls/button/button.h"
+#include "ui/views/test/views_test_base.h"
+#include "ui/views/widget/widget.h"
+
+namespace views {
+namespace test {
+
+namespace {
+
+class TestButton : public Button {
+ public:
+  TestButton() : Button(NULL) {}
+  ~TestButton() override = default;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(TestButton);
+};
+
+}  // namespace
+
+class AXVirtualViewTest : public ViewsTestBase {
+ public:
+  AXVirtualViewTest() = default;
+  ~AXVirtualViewTest() override = default;
+
+  void SetUp() override {
+    ViewsTestBase::SetUp();
+
+    widget_ = new Widget;
+    Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
+    params.bounds = gfx::Rect(0, 0, 200, 200);
+    widget_->Init(params);
+    button_ = new TestButton;
+    button_->SetSize(gfx::Size(20, 20));
+    widget_->GetContentsView()->AddChildView(button_);
+    virtual_label_ = new AXVirtualView;
+    virtual_label_->OverrideRole(ax::mojom::Role::kStaticText);
+    virtual_label_->OverrideName("Label");
+    button_->GetViewAccessibility().AddVirtualChildView(
+        base::WrapUnique(virtual_label_));
+    widget_->Show();
+  }
+
+  void TearDown() override {
+    if (!widget_->IsClosed())
+      widget_->Close();
+    ViewsTestBase::TearDown();
+  }
+
+  ViewAXPlatformNodeDelegate* GetButtonAccessibility() {
+    return static_cast<ViewAXPlatformNodeDelegate*>(
+        &button_->GetViewAccessibility());
+  }
+
+ protected:
+  Widget* widget_;
+  Button* button_;
+  // Weak, |button_| owns this.
+  AXVirtualView* virtual_label_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(AXVirtualViewTest);
+};
+
+TEST_F(AXVirtualViewTest, AccessibilityRoleAndName) {
+  EXPECT_EQ(ax::mojom::Role::kButton, GetButtonAccessibility()->GetData().role);
+  EXPECT_EQ(ax::mojom::Role::kStaticText, virtual_label_->GetData().role);
+  EXPECT_EQ("Label", virtual_label_->GetData().GetStringAttribute(
+                         ax::mojom::StringAttribute::kName));
+}
+
+TEST_F(AXVirtualViewTest, VirtualLabelIsChildOfButton) {
+  EXPECT_EQ(1, GetButtonAccessibility()->GetChildCount());
+  EXPECT_EQ(0, virtual_label_->GetChildCount());
+  ASSERT_NE(nullptr, virtual_label_->GetParent());
+  EXPECT_EQ(button_->GetNativeViewAccessible(), virtual_label_->GetParent());
+  ASSERT_NE(nullptr, GetButtonAccessibility()->ChildAtIndex(0));
+  EXPECT_EQ(virtual_label_->GetNativeObject(),
+            GetButtonAccessibility()->ChildAtIndex(0));
+}
+
+TEST_F(AXVirtualViewTest, AddingAndRemovingVirtualChildren) {
+  ASSERT_EQ(0, virtual_label_->GetChildCount());
+
+  AXVirtualView* virtual_child_1 = new AXVirtualView;
+  virtual_label_->AddChildView(base::WrapUnique(virtual_child_1));
+  EXPECT_EQ(1, virtual_label_->GetChildCount());
+  ASSERT_NE(nullptr, virtual_child_1->GetParent());
+  EXPECT_EQ(virtual_label_->GetNativeObject(), virtual_child_1->GetParent());
+  ASSERT_NE(nullptr, virtual_label_->ChildAtIndex(0));
+  EXPECT_EQ(virtual_child_1->GetNativeObject(),
+            virtual_label_->ChildAtIndex(0));
+
+  AXVirtualView* virtual_child_2 = new AXVirtualView;
+  virtual_label_->AddChildView(base::WrapUnique(virtual_child_2));
+  EXPECT_EQ(2, virtual_label_->GetChildCount());
+  ASSERT_NE(nullptr, virtual_child_2->GetParent());
+  EXPECT_EQ(virtual_label_->GetNativeObject(), virtual_child_2->GetParent());
+  ASSERT_NE(nullptr, virtual_label_->ChildAtIndex(1));
+  EXPECT_EQ(virtual_child_2->GetNativeObject(),
+            virtual_label_->ChildAtIndex(1));
+
+  AXVirtualView* virtual_child_3 = new AXVirtualView;
+  virtual_child_2->AddChildView(base::WrapUnique(virtual_child_3));
+  EXPECT_EQ(2, virtual_label_->GetChildCount());
+  EXPECT_EQ(0, virtual_child_1->GetChildCount());
+  EXPECT_EQ(1, virtual_child_2->GetChildCount());
+  ASSERT_NE(nullptr, virtual_child_3->GetParent());
+  EXPECT_EQ(virtual_child_2->GetNativeObject(), virtual_child_3->GetParent());
+  ASSERT_NE(nullptr, virtual_child_2->ChildAtIndex(0));
+  EXPECT_EQ(virtual_child_3->GetNativeObject(),
+            virtual_child_2->ChildAtIndex(0));
+
+  virtual_child_2->RemoveChildView(virtual_child_3);
+  EXPECT_EQ(0, virtual_child_2->GetChildCount());
+  EXPECT_EQ(2, virtual_label_->GetChildCount());
+
+  virtual_label_->RemoveAllChildViews();
+  EXPECT_EQ(0, virtual_label_->GetChildCount());
+}
+
+TEST_F(AXVirtualViewTest, ReorderingVirtualChildren) {
+  ASSERT_EQ(0, virtual_label_->GetChildCount());
+
+  AXVirtualView* virtual_child_1 = new AXVirtualView;
+  virtual_label_->AddChildView(base::WrapUnique(virtual_child_1));
+  ASSERT_EQ(1, virtual_label_->GetChildCount());
+
+  AXVirtualView* virtual_child_2 = new AXVirtualView;
+  virtual_label_->AddChildView(base::WrapUnique(virtual_child_2));
+  ASSERT_EQ(2, virtual_label_->GetChildCount());
+
+  virtual_label_->ReorderChildView(virtual_child_1, -1);
+  ASSERT_EQ(2, virtual_label_->GetChildCount());
+  EXPECT_EQ(virtual_label_->GetNativeObject(), virtual_child_2->GetParent());
+  ASSERT_NE(nullptr, virtual_label_->ChildAtIndex(0));
+  EXPECT_EQ(virtual_child_2->GetNativeObject(),
+            virtual_label_->ChildAtIndex(0));
+  ASSERT_NE(nullptr, virtual_label_->ChildAtIndex(1));
+  EXPECT_EQ(virtual_child_1->GetNativeObject(),
+            virtual_label_->ChildAtIndex(1));
+
+  virtual_label_->ReorderChildView(virtual_child_1, 0);
+  ASSERT_EQ(2, virtual_label_->GetChildCount());
+  EXPECT_EQ(virtual_label_->GetNativeObject(), virtual_child_1->GetParent());
+  ASSERT_NE(nullptr, virtual_label_->ChildAtIndex(0));
+  EXPECT_EQ(virtual_child_1->GetNativeObject(),
+            virtual_label_->ChildAtIndex(0));
+  ASSERT_NE(nullptr, virtual_label_->ChildAtIndex(1));
+  EXPECT_EQ(virtual_child_2->GetNativeObject(),
+            virtual_label_->ChildAtIndex(1));
+
+  virtual_label_->RemoveAllChildViews();
+  ASSERT_EQ(0, virtual_label_->GetChildCount());
+}
+
+TEST_F(AXVirtualViewTest, ContainsVirtualChild) {
+  ASSERT_EQ(0, virtual_label_->GetChildCount());
+
+  AXVirtualView* virtual_child_1 = new AXVirtualView;
+  virtual_label_->AddChildView(base::WrapUnique(virtual_child_1));
+  ASSERT_EQ(1, virtual_label_->GetChildCount());
+
+  AXVirtualView* virtual_child_2 = new AXVirtualView;
+  virtual_label_->AddChildView(base::WrapUnique(virtual_child_2));
+  ASSERT_EQ(2, virtual_label_->GetChildCount());
+
+  AXVirtualView* virtual_child_3 = new AXVirtualView;
+  virtual_child_2->AddChildView(base::WrapUnique(virtual_child_3));
+  ASSERT_EQ(1, virtual_child_2->GetChildCount());
+
+  EXPECT_TRUE(virtual_label_->Contains(virtual_label_));
+  EXPECT_TRUE(virtual_label_->Contains(virtual_child_1));
+  EXPECT_TRUE(virtual_label_->Contains(virtual_child_2));
+  EXPECT_TRUE(virtual_label_->Contains(virtual_child_3));
+  EXPECT_TRUE(virtual_child_2->Contains(virtual_child_2));
+  EXPECT_TRUE(virtual_child_2->Contains(virtual_child_3));
+
+  EXPECT_FALSE(virtual_child_1->Contains(virtual_label_));
+  EXPECT_FALSE(virtual_child_2->Contains(virtual_label_));
+  EXPECT_FALSE(virtual_child_3->Contains(virtual_child_2));
+
+  virtual_label_->RemoveAllChildViews();
+  ASSERT_EQ(0, virtual_label_->GetChildCount());
+}
+
+// Verify that virtual views with invisible ancestors inherit the
+// ax::mojom::State::kInvisible state.
+TEST_F(AXVirtualViewTest, InvisibleVirtualViews) {
+  EXPECT_TRUE(widget_->IsVisible());
+  EXPECT_FALSE(GetButtonAccessibility()->GetData().HasState(
+      ax::mojom::State::kInvisible));
+  EXPECT_FALSE(
+      virtual_label_->GetData().HasState(ax::mojom::State::kInvisible));
+
+  button_->SetVisible(false);
+  EXPECT_TRUE(GetButtonAccessibility()->GetData().HasState(
+      ax::mojom::State::kInvisible));
+  EXPECT_TRUE(virtual_label_->GetData().HasState(ax::mojom::State::kInvisible));
+  button_->SetVisible(true);
+}
+
+}  // namespace test
+}  // namespace views
diff --git a/ui/views/accessibility/view_accessibility.cc b/ui/views/accessibility/view_accessibility.cc
index db7109d..c2a15f8 100644
--- a/ui/views/accessibility/view_accessibility.cc
+++ b/ui/views/accessibility/view_accessibility.cc
@@ -4,6 +4,10 @@
 
 #include "ui/views/accessibility/view_accessibility.h"
 
+#include <algorithm>
+#include <utility>
+
+#include "base/memory/ptr_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/accessibility/platform/ax_platform_node.h"
 #include "ui/base/ui_features.h"
@@ -36,6 +40,7 @@
 #if !BUILDFLAG_INTERNAL_HAS_NATIVE_ACCESSIBILITY()
 // static
 std::unique_ptr<ViewAccessibility> ViewAccessibility::Create(View* view) {
+  // Cannot use std::make_unique because constructor is protected.
   return base::WrapUnique(new ViewAccessibility(view));
 }
 #endif
@@ -45,6 +50,63 @@
 
 ViewAccessibility::~ViewAccessibility() = default;
 
+void ViewAccessibility::AddVirtualChildView(
+    std::unique_ptr<AXVirtualView> virtual_view) {
+  DCHECK(virtual_view);
+  if (virtual_view->parent_view() == view())
+    return;
+  AddVirtualChildViewAt(std::move(virtual_view), virtual_child_count());
+}
+
+void ViewAccessibility::AddVirtualChildViewAt(
+    std::unique_ptr<AXVirtualView> virtual_view,
+    int index) {
+  DCHECK(virtual_view);
+  DCHECK(!virtual_view->parent_view()) << "This |view| already has a View "
+                                          "parent. Call RemoveVirtualChildView "
+                                          "first.";
+  DCHECK(!virtual_view->virtual_parent_view()) << "This |view| already has an "
+                                                  "AXVirtualView parent. Call "
+                                                  "RemoveChildView first.";
+  DCHECK_GE(index, 0);
+  DCHECK_LE(index, virtual_child_count());
+
+  virtual_view->set_parent_view(view());
+  virtual_children_.insert(virtual_children_.begin() + index,
+                           std::move(virtual_view));
+}
+
+std::unique_ptr<AXVirtualView> ViewAccessibility::RemoveVirtualChildView(
+    AXVirtualView* virtual_view) {
+  DCHECK(virtual_view);
+  int cur_index = GetIndexOf(virtual_view);
+  if (cur_index < 0)
+    return {};
+
+  std::unique_ptr<AXVirtualView> child =
+      std::move(virtual_children_[cur_index]);
+  virtual_children_.erase(virtual_children_.begin() + cur_index);
+  child->set_parent_view(nullptr);
+  return child;
+}
+
+void ViewAccessibility::RemoveAllVirtualChildViews() {
+  while (!virtual_children_.empty())
+    RemoveVirtualChildView(virtual_children_.back().get());
+}
+
+int ViewAccessibility::GetIndexOf(const AXVirtualView* virtual_view) const {
+  DCHECK(virtual_view);
+  const auto iter =
+      std::find_if(virtual_children_.begin(), virtual_children_.end(),
+                   [virtual_view](const auto& child) {
+                     return child.get() == virtual_view;
+                   });
+  return iter != virtual_children_.end()
+             ? static_cast<int>(iter - virtual_children_.begin())
+             : -1;
+}
+
 const ui::AXUniqueId& ViewAccessibility::GetUniqueId() const {
   return unique_id_;
 }
@@ -109,7 +171,7 @@
   return is_leaf_;
 }
 
-void ViewAccessibility::OverrideRole(ax::mojom::Role role) {
+void ViewAccessibility::OverrideRole(const ax::mojom::Role role) {
   DCHECK(IsValidRoleForViews(role));
 
   custom_data_.role = role;
@@ -120,14 +182,15 @@
 }
 
 void ViewAccessibility::OverrideName(const base::string16& name) {
-  custom_data_.SetName(base::UTF16ToUTF8(name));
+  custom_data_.SetName(name);
 }
 
 void ViewAccessibility::OverrideDescription(const std::string& description) {
-  DCHECK(!custom_data_.HasStringAttribute(
-      ax::mojom::StringAttribute::kDescription));
-  custom_data_.AddStringAttribute(ax::mojom::StringAttribute::kDescription,
-                                  description);
+  custom_data_.SetDescription(description);
+}
+
+void ViewAccessibility::OverrideDescription(const base::string16& description) {
+  custom_data_.SetDescription(description);
 }
 
 void ViewAccessibility::OverrideIsLeaf() {
diff --git a/ui/views/accessibility/view_accessibility.h b/ui/views/accessibility/view_accessibility.h
index 903c4e5d..d226948 100644
--- a/ui/views/accessibility/view_accessibility.h
+++ b/ui/views/accessibility/view_accessibility.h
@@ -6,13 +6,16 @@
 #define UI_VIEWS_ACCESSIBILITY_VIEW_ACCESSIBILITY_H_
 
 #include <memory>
+#include <string>
 
 #include "base/macros.h"
+#include "base/strings/string16.h"
 #include "build/build_config.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/accessibility/platform/ax_unique_id.h"
 #include "ui/gfx/native_widget_types.h"
+#include "ui/views/accessibility/ax_virtual_view.h"
 #include "ui/views/views_export.h"
 
 namespace views {
@@ -45,10 +48,11 @@
   // Note that string attributes are only used if non-empty, so you can't
   // override a string with the empty string.
   //
-  void OverrideRole(ax::mojom::Role role);
+  void OverrideRole(const ax::mojom::Role role);
   void OverrideName(const std::string& name);
   void OverrideName(const base::string16& name);
   void OverrideDescription(const std::string& description);
+  void OverrideDescription(const base::string16& description);
   void OverrideIsLeaf();  // Force this node to be treated as a leaf node.
 
   virtual gfx::NativeViewAccessible GetNativeObject();
@@ -64,6 +68,39 @@
   bool is_ignored() const { return is_ignored_; }
   void set_is_ignored(bool ignored) { is_ignored_ = ignored; }
 
+  //
+  // Methods for managing virtual views.
+  //
+
+  // Adds |virtual_view| as a child of this View, optionally at |index|.
+  // We take ownership of our virtual children.
+  void AddVirtualChildView(std::unique_ptr<AXVirtualView> virtual_view);
+  void AddVirtualChildViewAt(std::unique_ptr<AXVirtualView> virtual_view,
+                             int index);
+
+  // Removes |virtual_view| from this View. The virtual view's parent will
+  // change to nullptr. Hands ownership back to the caller.
+  std::unique_ptr<AXVirtualView> RemoveVirtualChildView(
+      AXVirtualView* virtual_view);
+
+  // Removes all the virtual children from this View.
+  // The virtual views are deleted.
+  void RemoveAllVirtualChildViews();
+
+  int virtual_child_count() const {
+    return static_cast<int>(virtual_children_.size());
+  }
+
+  const AXVirtualView* virtual_child_at(int index) const {
+    DCHECK_GE(index, 0);
+    DCHECK_LT(index, virtual_child_count());
+    return virtual_children_[index].get();
+  }
+
+  // Returns the index of |virtual_view|, or -1 if |virtual_view| is not a child
+  // of this View.
+  int GetIndexOf(const AXVirtualView* virtual_view) const;
+
  protected:
   explicit ViewAccessibility(View* view);
 
@@ -73,6 +110,10 @@
   // Weak. Owns this.
   View* const owner_view_;
 
+  // If there are any virtual children, they override any real children.
+  // We own our virtual children.
+  std::vector<std::unique_ptr<AXVirtualView>> virtual_children_;
+
   const ui::AXUniqueId unique_id_;
 
   // Contains data set explicitly via SetRole, SetName, etc. that overrides
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate.cc b/ui/views/accessibility/view_ax_platform_node_delegate.cc
index adc4575f..14e2d7a 100644
--- a/ui/views/accessibility/view_ax_platform_node_delegate.cc
+++ b/ui/views/accessibility/view_ax_platform_node_delegate.cc
@@ -9,10 +9,12 @@
 
 #include "base/lazy_instance.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "ui/accessibility/ax_action_data.h"
 #include "ui/accessibility/ax_role_properties.h"
+#include "ui/accessibility/ax_tree_data.h"
 #include "ui/accessibility/platform/ax_platform_node.h"
+#include "ui/accessibility/platform/ax_unique_id.h"
 #include "ui/events/event_utils.h"
-#include "ui/gfx/native_widget_types.h"
 #include "ui/views/accessibility/view_accessibility_utils.h"
 #include "ui/views/controls/native/native_view_host.h"
 #include "ui/views/view.h"
@@ -227,6 +229,10 @@
 int ViewAXPlatformNodeDelegate::GetChildCount() {
   if (IsLeaf())
     return 0;
+
+  if (virtual_child_count())
+    return virtual_child_count();
+
   int child_count = view()->child_count();
 
   std::vector<Widget*> child_widgets;
@@ -242,9 +248,15 @@
 }
 
 gfx::NativeViewAccessible ViewAXPlatformNodeDelegate::ChildAtIndex(int index) {
+  DCHECK_GE(index, 0) << "Child indices should be greater or equal to 0.";
+  DCHECK_LT(index, GetChildCount())
+      << "Child indices should be less than the child count.";
   if (IsLeaf())
     return nullptr;
 
+  if (virtual_child_count())
+    return virtual_child_at(index)->GetNativeObject();
+
   // If this is a root view, our widget might have child widgets. Include
   std::vector<Widget*> child_widgets;
   bool is_tab_modal_showing;
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate.h b/ui/views/accessibility/view_ax_platform_node_delegate.h
index 8dea736..2e9cb2b4 100644
--- a/ui/views/accessibility/view_ax_platform_node_delegate.h
+++ b/ui/views/accessibility/view_ax_platform_node_delegate.h
@@ -5,21 +5,26 @@
 #ifndef UI_VIEWS_ACCESSIBILITY_VIEW_AX_PLATFORM_NODE_DELEGATE_H_
 #define UI_VIEWS_ACCESSIBILITY_VIEW_AX_PLATFORM_NODE_DELEGATE_H_
 
-#include <memory>
+#include <stdint.h>
 
 #include "base/macros.h"
+#include "base/strings/string16.h"
 #include "build/build_config.h"
-#include "ui/accessibility/ax_action_data.h"
+#include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
-#include "ui/accessibility/ax_tree_data.h"
-#include "ui/accessibility/platform/ax_platform_node.h"
 #include "ui/accessibility/platform/ax_platform_node_delegate_base.h"
-#include "ui/accessibility/platform/ax_unique_id.h"
+#include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/native_widget_types.h"
 #include "ui/views/accessibility/view_accessibility.h"
-#include "ui/views/views_export.h"
 #include "ui/views/widget/widget_observer.h"
 
+namespace ui {
+
+struct AXActionData;
+class AXUniqueId;
+
+}  // namespace ui
+
 namespace views {
 
 class View;
@@ -29,9 +34,8 @@
 // |ViewAXPlatformNodeDelegate| to interface with the native accessibility
 // toolkit. This class owns the |AXPlatformNode|, which implements those native
 // APIs.
-class VIEWS_EXPORT ViewAXPlatformNodeDelegate
-    : public ViewAccessibility,
-      public ui::AXPlatformNodeDelegateBase {
+class ViewAXPlatformNodeDelegate : public ViewAccessibility,
+                                   public ui::AXPlatformNodeDelegateBase {
  public:
   ~ViewAXPlatformNodeDelegate() override;
 
@@ -56,8 +60,8 @@
   bool AccessibilityPerformAction(const ui::AXActionData& data) override;
   bool ShouldIgnoreHoveredStateForTesting() override;
   bool IsOffscreen() const override;
-  const ui::AXUniqueId& GetUniqueId()
-      const override;  // Also in ViewAccessibility
+  // Also in |ViewAccessibility|.
+  const ui::AXUniqueId& GetUniqueId() const override;
 
  protected:
   explicit ViewAXPlatformNodeDelegate(View* view);
@@ -74,7 +78,7 @@
   void OnMenuEnd();
 
   // We own this, but it is reference-counted on some platforms so we can't use
-  // a scoped_ptr. It is dereferenced in the destructor.
+  // a unique_ptr. It is destroyed in the destructor.
   ui::AXPlatformNode* ax_node_;
 
   mutable ui::AXNodeData data_;
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_unittest.cc b/ui/views/accessibility/view_ax_platform_node_delegate_unittest.cc
index 09711e4..4814102 100644
--- a/ui/views/accessibility/view_ax_platform_node_delegate_unittest.cc
+++ b/ui/views/accessibility/view_ax_platform_node_delegate_unittest.cc
@@ -5,8 +5,12 @@
 #include "ui/views/accessibility/view_ax_platform_node_delegate.h"
 
 #include "base/strings/utf_string_conversions.h"
+#include "ui/accessibility/ax_action_data.h"
+#include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
+#include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/rect_conversions.h"
+#include "ui/gfx/geometry/size.h"
 #include "ui/views/accessibility/ax_aura_obj_cache.h"
 #include "ui/views/accessibility/ax_aura_obj_wrapper.h"
 #include "ui/views/accessibility/ax_widget_obj_wrapper.h"