diff --git a/AUTHORS b/AUTHORS
index 5d90a2d..296de9b 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -779,6 +779,7 @@
 Sunil Ratnu <sunil.ratnu@samsung.com>
 Sunitha Srivatsa <srivats@amazon.com>
 Suvanjan Mukherjee <suvanjanmukherjee@gmail.com>
+Suyambulingam R M <suyambu.rm@samsung.com>
 Suyash Sengar <suyash.s@samsung.com>
 Swarali Raut <swarali.sr@samsung.com>
 Swati Jaiswal <swa.jaiswal@samsung.com>
diff --git a/DEPS b/DEPS
index 391b0e4..f9e9ee42 100644
--- a/DEPS
+++ b/DEPS
@@ -78,7 +78,7 @@
   # 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': '0407506af3d9d7e2718be1d8759296165b218fcf',
+  'v8_revision': '0b24b6525490ea76c8e8aa189b2f8de5ad5d1823',
   # 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.
@@ -98,7 +98,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': '56b08b1f2bb8a4eb9330963bff3a626603499730',
+  'pdfium_revision': '8509d3eaec1b2fac27a24de7bc586ad12b7bb178',
   # 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.
@@ -634,7 +634,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '05591bbeae6592fd924caec8e728a4ea86cbb8c9',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '4e70a72571dd26b85c2385e9c618e343428df5d3', # commit position 20628
+    Var('webrtc_git') + '/src.git' + '@' + 'c4a9e5ff69d2a9814d2e4dfae61801cec524da47', # commit position 20628
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 9dad697..ee187bf 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -741,6 +741,8 @@
     "utility/screenshot_controller.h",
     "utility/transformer_util.cc",
     "utility/transformer_util.h",
+    "virtual_keyboard_container_layout_manager.cc",
+    "virtual_keyboard_container_layout_manager.h",
     "virtual_keyboard_controller.cc",
     "virtual_keyboard_controller.h",
     "voice_interaction/voice_interaction_controller.cc",
diff --git a/ash/public/cpp/shell_window_ids.h b/ash/public/cpp/shell_window_ids.h
index b3c726e..a3fb9ad6 100644
--- a/ash/public/cpp/shell_window_ids.h
+++ b/ash/public/cpp/shell_window_ids.h
@@ -95,7 +95,6 @@
   kShellWindowId_ImeWindowParentContainer,
 
   // The virtual keyboard container.
-  // NOTE: this is lazily created.
   kShellWindowId_VirtualKeyboardContainer,
 
   // The container for menus.
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 40dc9de..ddc51f54 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -35,6 +35,7 @@
 #include "ash/touch/touch_hud_debug.h"
 #include "ash/touch/touch_hud_projection.h"
 #include "ash/touch/touch_observer_hud.h"
+#include "ash/virtual_keyboard_container_layout_manager.h"
 #include "ash/wallpaper/wallpaper_delegate.h"
 #include "ash/wallpaper/wallpaper_widget_controller.h"
 #include "ash/wm/always_on_top_controller.h"
@@ -580,17 +581,25 @@
 
 void RootWindowController::ActivateKeyboard(
     keyboard::KeyboardController* keyboard_controller) {
-  if (!keyboard::IsKeyboardEnabled() ||
-      GetContainer(kShellWindowId_VirtualKeyboardContainer)) {
+  if (!keyboard::IsKeyboardEnabled() || !keyboard_controller)
+    return;
+
+  // keyboard window is already initialized and it's under the root window of
+  // this controller.
+  if (keyboard_controller->keyboard_container_initialized() &&
+      keyboard_controller->GetContainerWindow()->GetRootWindow() ==
+          GetRootWindow()) {
     return;
   }
-  DCHECK(keyboard_controller);
+
+  aura::Window* keyboard_window = keyboard_controller->GetContainerWindow();
+  DCHECK(keyboard_window->parent() == nullptr);
+
   Shell::Get()->NotifyVirtualKeyboardActivated(true, GetRootWindow());
-  aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer);
-  DCHECK(parent);
-  aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
-  keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer);
-  parent->AddChild(keyboard_container);
+  aura::Window* vk_container =
+      GetContainer(kShellWindowId_VirtualKeyboardContainer);
+  DCHECK(vk_container);
+  vk_container->AddChild(keyboard_window);
 
   keyboard_controller->LoadKeyboardUiInBackground();
 }
@@ -601,25 +610,23 @@
       !keyboard_controller->keyboard_container_initialized()) {
     return;
   }
-  aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
-  if (keyboard_container->GetRootWindow() == GetRootWindow()) {
-    aura::Window* parent =
-        GetContainer(kShellWindowId_ImeWindowParentContainer);
-    DCHECK(parent);
+
+  aura::Window* keyboard_window = keyboard_controller->GetContainerWindow();
+  // If the VK is under the root window of this controller.
+  if (keyboard_window->GetRootWindow() == GetRootWindow()) {
     // Virtual keyboard may be deactivated while still showing, hide the
     // keyboard before removing it from view hierarchy.
     keyboard_controller->HideKeyboard(
         keyboard::KeyboardController::HIDE_REASON_AUTOMATIC);
-    parent->RemoveChild(keyboard_container);
+    aura::Window* vk_container =
+        GetContainer(kShellWindowId_VirtualKeyboardContainer);
+    DCHECK(vk_container);
+    DCHECK_EQ(vk_container, keyboard_window->parent());
+    vk_container->RemoveChild(keyboard_window);
     Shell::Get()->NotifyVirtualKeyboardActivated(false, GetRootWindow());
   }
 }
 
-bool RootWindowController::IsVirtualKeyboardWindow(aura::Window* window) {
-  aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer);
-  return parent ? parent->Contains(window) : false;
-}
-
 void RootWindowController::SetTouchAccessibilityAnchorPoint(
     const gfx::Point& anchor_point) {
   if (touch_exploration_manager_)
@@ -951,6 +958,14 @@
       virtual_keyboard_parent_container);
   virtual_keyboard_parent_container->SetProperty(kUsesScreenCoordinatesKey,
                                                  true);
+  virtual_keyboard_parent_container->SetLayoutManager(
+      new VirtualKeyboardContainerLayoutManager(
+          virtual_keyboard_parent_container));
+  aura::Window* virtual_keyboard_container = CreateContainer(
+      kShellWindowId_VirtualKeyboardContainer, "VirtualKeyboardContainer",
+      virtual_keyboard_parent_container);
+  wm::SetSnapsChildrenToPhysicalPixelBoundary(virtual_keyboard_container);
+  virtual_keyboard_container->SetProperty(kUsesScreenCoordinatesKey, true);
 
   aura::Window* menu_container =
       CreateContainer(kShellWindowId_MenuContainer, "MenuContainer",
diff --git a/ash/root_window_controller.h b/ash/root_window_controller.h
index 2639af35..5b289ed 100644
--- a/ash/root_window_controller.h
+++ b/ash/root_window_controller.h
@@ -242,9 +242,6 @@
   // Deactivate virtual keyboard on current root window controller.
   void DeactivateKeyboard(keyboard::KeyboardController* keyboard_controller);
 
-  // Tests if a window is associated with the virtual keyboard.
-  bool IsVirtualKeyboardWindow(aura::Window* window);
-
   // If touch exploration is enabled, update the touch exploration
   // controller so that synthesized touch events are anchored at this point.
   void SetTouchAccessibilityAnchorPoint(const gfx::Point& anchor_point);
diff --git a/ash/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc
index 0704bde..3716fc7 100644
--- a/ash/root_window_controller_unittest.cc
+++ b/ash/root_window_controller_unittest.cc
@@ -704,10 +704,17 @@
                                             ? root_windows[1]
                                             : root_windows[0];
 
-  ASSERT_TRUE(Shell::GetContainer(primary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
-  ASSERT_FALSE(Shell::GetContainer(secondary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
+  keyboard::KeyboardController* controller =
+      keyboard::KeyboardController::GetInstance();
+  ASSERT_TRUE(controller);
+  aura::Window* vk_container_in_primary = Shell::GetContainer(
+      primary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* vk_container_in_secondary = Shell::GetContainer(
+      secondary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* vk_window =
+      controller->GetContainerWindowWithoutCreationForTest();
+  EXPECT_TRUE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_FALSE(vk_container_in_secondary->Contains(vk_window));
 }
 
 // Test for http://crbug.com/303429. Virtual keyboard container should show on
@@ -738,12 +745,18 @@
   aura::Window* secondary_root_window = root_windows[0] == primary_root_window
                                             ? root_windows[1]
                                             : root_windows[0];
+  aura::Window* vk_container_in_primary = Shell::GetContainer(
+      primary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* vk_container_in_secondary = Shell::GetContainer(
+      secondary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  keyboard::KeyboardController* controller =
+      keyboard::KeyboardController::GetInstance();
 
-  keyboard::KeyboardController::GetInstance()->ShowKeyboard(false);
-  ASSERT_FALSE(Shell::GetContainer(primary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
-  ASSERT_TRUE(Shell::GetContainer(secondary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
+  controller->ShowKeyboard(false);
+  aura::Window* vk_window =
+      controller->GetContainerWindowWithoutCreationForTest();
+  EXPECT_FALSE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_TRUE(vk_container_in_secondary->Contains(vk_window));
 
   // Move the focus to the primary display.
   aura::Window* focusable_window_in_primary_display =
@@ -756,11 +769,9 @@
 
   // Virtual keyboard shows up on the secondary display even if a window in the
   // primary screen has the focus.
-  keyboard::KeyboardController::GetInstance()->ShowKeyboard(false);
-  EXPECT_FALSE(Shell::GetContainer(primary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
-  EXPECT_TRUE(Shell::GetContainer(secondary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
+  controller->ShowKeyboard(false);
+  EXPECT_FALSE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_TRUE(vk_container_in_secondary->Contains(vk_window));
 }
 
 // Test for http://crbug.com/303429. If both of displays have touch capability,
@@ -794,6 +805,12 @@
   aura::Window* secondary_root_window = root_windows[0] == primary_root_window
                                             ? root_windows[1]
                                             : root_windows[0];
+  aura::Window* vk_container_in_primary = Shell::GetContainer(
+      primary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* vk_container_in_secondary = Shell::GetContainer(
+      secondary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  keyboard::KeyboardController* controller =
+      keyboard::KeyboardController::GetInstance();
   aura::Window* focusable_window_in_primary_display =
       CreateTestWindowInShellWithBounds(
           primary_root_window->GetBoundsInScreen());
@@ -805,31 +822,27 @@
   ASSERT_EQ(secondary_root_window,
             focusable_window_in_secondary_display->GetRootWindow());
 
-  keyboard::KeyboardController::GetInstance()->ShowKeyboard(false);
-  EXPECT_TRUE(Shell::GetContainer(primary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
-  EXPECT_FALSE(Shell::GetContainer(secondary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
+  controller->ShowKeyboard(false);
+  aura::Window* vk_window =
+      controller->GetContainerWindowWithoutCreationForTest();
+  EXPECT_TRUE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_FALSE(vk_container_in_secondary->Contains(vk_window));
 
   // Move the focus to the secondary display.
   focusable_window_in_secondary_display->Focus();
   ASSERT_TRUE(focusable_window_in_secondary_display->HasFocus());
 
-  keyboard::KeyboardController::GetInstance()->ShowKeyboard(false);
-  ASSERT_FALSE(Shell::GetContainer(primary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
-  ASSERT_TRUE(Shell::GetContainer(secondary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
+  controller->ShowKeyboard(false);
+  EXPECT_FALSE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_TRUE(vk_container_in_secondary->Contains(vk_window));
 
   // Move back focus to the primary display.
   focusable_window_in_primary_display->Focus();
   ASSERT_TRUE(focusable_window_in_primary_display->HasFocus());
 
-  keyboard::KeyboardController::GetInstance()->ShowKeyboard(false);
-  EXPECT_TRUE(Shell::GetContainer(primary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
-  EXPECT_FALSE(Shell::GetContainer(secondary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
+  controller->ShowKeyboard(false);
+  EXPECT_TRUE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_FALSE(vk_container_in_secondary->Contains(vk_window));
 }
 
 // Test for http://crbug.com/303429. Even if both of display don't have touch
@@ -848,20 +861,23 @@
   aura::Window* secondary_root_window = root_windows[0] == primary_root_window
                                             ? root_windows[1]
                                             : root_windows[0];
+  aura::Window* vk_container_in_primary = Shell::GetContainer(
+      primary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* vk_container_in_secondary = Shell::GetContainer(
+      secondary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  keyboard::KeyboardController* controller =
+      keyboard::KeyboardController::GetInstance();
+  aura::Window* vk_window =
+      controller->GetContainerWindowWithoutCreationForTest();
 
-  ASSERT_TRUE(Shell::GetContainer(primary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
-  ASSERT_FALSE(Shell::GetContainer(secondary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
+  ASSERT_TRUE(vk_container_in_primary->Contains(vk_window));
+  ASSERT_FALSE(vk_container_in_secondary->Contains(vk_window));
 
   const int64_t secondary_display_id = secondary_display.id();
-  keyboard::KeyboardController::GetInstance()->ShowKeyboardInDisplay(
-      secondary_display_id);
+  controller->ShowKeyboardInDisplay(secondary_display_id);
 
-  EXPECT_FALSE(Shell::GetContainer(primary_root_window,
-                                   kShellWindowId_VirtualKeyboardContainer));
-  EXPECT_TRUE(Shell::GetContainer(secondary_root_window,
-                                  kShellWindowId_VirtualKeyboardContainer));
+  EXPECT_FALSE(vk_container_in_primary->Contains(vk_window));
+  EXPECT_TRUE(vk_container_in_secondary->Contains(vk_window));
 }
 
 // Test for http://crbug.com/263599. Virtual keyboard should be able to receive
@@ -906,9 +922,10 @@
 // GetWindowContainer().
 TEST_F(VirtualKeyboardRootWindowControllerTest,
        DeleteOldContainerOnVirtualKeyboardInit) {
-  aura::Window* root_window = Shell::GetPrimaryRootWindow();
+  keyboard::KeyboardController* controller =
+      keyboard::KeyboardController::GetInstance();
   aura::Window* keyboard_container =
-      Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer);
+      controller->GetContainerWindowWithoutCreationForTest();
   ASSERT_TRUE(keyboard_container);
   // Track the keyboard container window.
   aura::WindowTracker tracker;
@@ -956,14 +973,16 @@
 // Ensure that system modal dialogs do not block events targeted at the virtual
 // keyboard.
 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) {
+  keyboard::KeyboardController* controller =
+      keyboard::KeyboardController::GetInstance();
   aura::Window* root_window = Shell::GetPrimaryRootWindow();
-  aura::Window* keyboard_container =
-      Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer);
-  ASSERT_TRUE(keyboard_container);
-  keyboard_container->Show();
+  aura::Window* container_window = controller->GetContainerWindow();
+  ASSERT_TRUE(container_window);
+  ASSERT_TRUE(root_window->Contains(container_window));
+  container_window->Show();
 
-  aura::Window* contents_window =
-      keyboard::KeyboardController::GetInstance()->ui()->GetContentsWindow();
+  aura::Window* contents_window = controller->ui()->GetContentsWindow();
+  contents_window->SetName("KeyboardContentsWindow");
   contents_window->SetBounds(
       keyboard::KeyboardBoundsFromRootBounds(root_window->bounds(), 100));
 
@@ -1005,10 +1024,8 @@
   input_method->SetFocusedTextInputClient(&text_input_client);
 
   aura::Window* root_window = Shell::GetPrimaryRootWindow();
-  aura::Window* keyboard_container =
-      Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer);
-  ASSERT_TRUE(keyboard_container);
-  keyboard_container->Show();
+  ASSERT_TRUE(keyboard_controller->GetContainerWindowWithoutCreationForTest());
+  keyboard_controller->GetContainerWindow()->Show();
 
   const int keyboard_height = 100;
   aura::Window* contents_window = ui->GetContentsWindow();
@@ -1053,8 +1070,7 @@
   const int keyboard_height = 100;
   // Check that the keyboard on the primary screen doesn't cover the window on
   // the secondary screen.
-  aura::Window* keyboard_container = Shell::GetContainer(
-      primary_root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
   ASSERT_TRUE(keyboard_container);
   keyboard_container->Show();
   aura::Window* contents_window = ui->GetContentsWindow();
@@ -1097,8 +1113,7 @@
   keyboard::KeyboardUI* ui = keyboard_controller->ui();
 
   aura::Window* root_window = Shell::GetPrimaryRootWindow();
-  aura::Window* keyboard_container =
-      Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
   ASSERT_TRUE(keyboard_container);
   keyboard_container->Show();
 
@@ -1173,12 +1188,9 @@
 // orientation. See crbug/417612.
 TEST_F(VirtualKeyboardRootWindowControllerTest, DisplayRotation) {
   UpdateDisplay("800x600");
-  aura::Window* root_window = Shell::GetPrimaryRootWindow();
-  aura::Window* keyboard_container =
-      Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer);
-  ASSERT_TRUE(keyboard_container);
   keyboard::KeyboardController* keyboard_controller =
       keyboard::KeyboardController::GetInstance();
+  aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
   keyboard_controller->ShowKeyboard(false);
   keyboard_controller->ui()->GetContentsWindow()->SetBounds(
       gfx::Rect(0, 400, 800, 200));
diff --git a/ash/shell_unittest.cc b/ash/shell_unittest.cc
index 70c15db..9fe1bfc7 100644
--- a/ash/shell_unittest.cc
+++ b/ash/shell_unittest.cc
@@ -99,6 +99,8 @@
       Shell::GetContainer(root_window, kShellWindowId_OverlayContainer));
   EXPECT_TRUE(Shell::GetContainer(root_window,
                                   kShellWindowId_ImeWindowParentContainer));
+  EXPECT_TRUE(Shell::GetContainer(root_window,
+                                  kShellWindowId_VirtualKeyboardContainer));
   EXPECT_TRUE(
       Shell::GetContainer(root_window, kShellWindowId_MouseCursorContainer));
 
diff --git a/ash/virtual_keyboard_container_layout_manager.cc b/ash/virtual_keyboard_container_layout_manager.cc
new file mode 100644
index 0000000..c9514b7
--- /dev/null
+++ b/ash/virtual_keyboard_container_layout_manager.cc
@@ -0,0 +1,37 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/virtual_keyboard_container_layout_manager.h"
+#include "ash/public/cpp/shell_window_ids.h"
+#include "ui/aura/window.h"
+
+namespace ash {
+
+VirtualKeyboardContainerLayoutManager::VirtualKeyboardContainerLayoutManager(
+    aura::Window* parent)
+    : ime_window_parent_container_(parent) {
+  DCHECK(ime_window_parent_container_);
+}
+
+void VirtualKeyboardContainerLayoutManager::OnWindowResized() {
+  aura::Window* vk_container = ime_window_parent_container_->GetChildById(
+      kShellWindowId_VirtualKeyboardContainer);
+  DCHECK(vk_container);
+  vk_container->SetBounds(ime_window_parent_container_->bounds());
+}
+
+void VirtualKeyboardContainerLayoutManager::OnWindowAddedToLayout(
+    aura::Window* child) {
+  if (child->id() == kShellWindowId_VirtualKeyboardContainer)
+    SetChildBounds(child, ime_window_parent_container_->bounds());
+}
+
+void VirtualKeyboardContainerLayoutManager::SetChildBounds(
+    aura::Window* child,
+    const gfx::Rect& requested_bounds) {
+  if (child->bounds() != requested_bounds)
+    SetChildBoundsDirect(child, requested_bounds);
+}
+
+}  // namespace ash
diff --git a/ash/virtual_keyboard_container_layout_manager.h b/ash/virtual_keyboard_container_layout_manager.h
new file mode 100644
index 0000000..4c289ad9
--- /dev/null
+++ b/ash/virtual_keyboard_container_layout_manager.h
@@ -0,0 +1,38 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_VIRTUAL_KEYBOARD_CONTAINER_LAYOUT_MANAGER_H_
+#define ASH_VIRTUAL_KEYBOARD_CONTAINER_LAYOUT_MANAGER_H_
+
+#include "base/macros.h"
+#include "ui/aura/layout_manager.h"
+
+namespace ash {
+
+// LayoutManager for the virtual keyboard container window. It keeps the size of
+// the virtual keyboard container window and the ime window parent container.
+class VirtualKeyboardContainerLayoutManager : public aura::LayoutManager {
+ public:
+  explicit VirtualKeyboardContainerLayoutManager(
+      aura::Window* ime_window_parent_container);
+
+  // Overridden from aura::LayoutManager
+  void OnWindowResized() override;
+  void OnWindowAddedToLayout(aura::Window* child) override;
+  void OnWillRemoveWindowFromLayout(aura::Window* child) override {}
+  void OnWindowRemovedFromLayout(aura::Window* child) override {}
+  void OnChildWindowVisibilityChanged(aura::Window* child,
+                                      bool visible) override {}
+  void SetChildBounds(aura::Window* child,
+                      const gfx::Rect& requested_bounds) override;
+
+ private:
+  aura::Window* ime_window_parent_container_;
+
+  DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardContainerLayoutManager);
+};
+
+}  // namespace ash
+
+#endif  // ASH_VIRTUAL_KEYBOARD_CONTAINER_LAYOUT_MANAGER_H_
diff --git a/ash/wm/always_on_top_controller_unittest.cc b/ash/wm/always_on_top_controller_unittest.cc
index 9b0e6e9..d3ffa48c 100644
--- a/ash/wm/always_on_top_controller_unittest.cc
+++ b/ash/wm/always_on_top_controller_unittest.cc
@@ -72,8 +72,7 @@
   controller->ActivateKeyboard(keyboard_controller);
 
   // Mock a keyboard appearing.
-  aura::Window* keyboard_container =
-      Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer);
+  aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
   ASSERT_TRUE(keyboard_container);
   keyboard_container->Show();
   aura::Window* contents_window =
diff --git a/cc/test/fake_output_surface.cc b/cc/test/fake_output_surface.cc
index a47a4d2..f92d7af 100644
--- a/cc/test/fake_output_surface.cc
+++ b/cc/test/fake_output_surface.cc
@@ -106,4 +106,11 @@
   return 0;
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface* FakeOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace cc
diff --git a/cc/test/fake_output_surface.h b/cc/test/fake_output_surface.h
index e06981e..bf61733 100644
--- a/cc/test/fake_output_surface.h
+++ b/cc/test/fake_output_surface.h
@@ -77,6 +77,9 @@
   bool IsDisplayedAsOverlayPlane() const override;
   unsigned GetOverlayTextureId() const override;
   gfx::BufferFormat GetOverlayBufferFormat() const override;
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
 
   void set_framebuffer(GLint framebuffer, GLenum format) {
     framebuffer_ = framebuffer;
diff --git a/cc/test/pixel_test_output_surface.cc b/cc/test/pixel_test_output_surface.cc
index caf1f84..23149b5 100644
--- a/cc/test/pixel_test_output_surface.cc
+++ b/cc/test/pixel_test_output_surface.cc
@@ -109,4 +109,11 @@
   return GL_RGB;
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface* PixelTestOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace cc
diff --git a/cc/test/pixel_test_output_surface.h b/cc/test/pixel_test_output_surface.h
index ec03dd0..6e6a033 100644
--- a/cc/test/pixel_test_output_surface.h
+++ b/cc/test/pixel_test_output_surface.h
@@ -39,6 +39,9 @@
   gfx::BufferFormat GetOverlayBufferFormat() const override;
   bool SurfaceIsSuspendForRecycle() const override;
   uint32_t GetFramebufferCopyTextureFormat() override;
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
 
   void set_has_external_stencil_test(bool has_test) {
     external_stencil_test_ = has_test;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
index 834ce591..f840f61 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkTest.java
@@ -27,6 +27,7 @@
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.base.test.util.RetryOnFailure;
@@ -319,6 +320,7 @@
 
     @Test
     @MediumTest
+    @DisabledTest(message = "crbug.com/791485")
     public void testSearchBookmarks_Delete() throws Exception {
         BookmarkPromoHeader.forcePromoStateForTests(BookmarkPromoHeader.PromoState.PROMO_NONE);
         BookmarkId testFolder = addFolder(TEST_FOLDER_TITLE);
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
index bf59c7b..f0bf608 100644
--- a/chrome/browser/android/tab_android.cc
+++ b/chrome/browser/android/tab_android.cc
@@ -256,7 +256,7 @@
   Java_Tab_setSyncId(env, weak_java_tab_.get(env), sync_id);
 }
 
-void TabAndroid::HandlePopupNavigation(chrome::NavigateParams* params) {
+void TabAndroid::HandlePopupNavigation(NavigateParams* params) {
   DCHECK(params->source_contents == web_contents());
   DCHECK(params->target_contents == NULL ||
          params->target_contents == web_contents());
@@ -541,7 +541,7 @@
   if (prerender_manager) {
     bool prefetched_page_loaded = HasPrerenderedUrl(gurl);
     // Getting the load status before MaybeUsePrerenderedPage() b/c it resets.
-    chrome::NavigateParams params(web_contents());
+    NavigateParams params(web_contents());
     if (prerender_manager->MaybeUsePrerenderedPage(gurl, &params)) {
       return prefetched_page_loaded ?
           FULL_PRERENDERED_PAGE_LOAD : PARTIAL_PRERENDERED_PAGE_LOAD;
diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h
index e78a54e..2352d462 100644
--- a/chrome/browser/android/tab_android.h
+++ b/chrome/browser/android/tab_android.h
@@ -35,9 +35,7 @@
 class Layer;
 }
 
-namespace chrome {
 struct NavigateParams;
-}
 
 namespace android {
 class TabWebContentsDelegateAndroid;
@@ -119,7 +117,7 @@
   void SetWindowSessionID(SessionID::id_type window_id);
   void SetSyncId(int sync_id);
 
-  void HandlePopupNavigation(chrome::NavigateParams* params);
+  void HandlePopupNavigation(NavigateParams* params);
 
   bool HasPrerenderedUrl(GURL gurl);
 
diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrome/browser/android/tab_web_contents_delegate_android.cc
index 8528a38..c77ee4e86 100644
--- a/chrome/browser/android/tab_web_contents_delegate_android.cc
+++ b/chrome/browser/android/tab_web_contents_delegate_android.cc
@@ -334,12 +334,10 @@
   }
 
   Profile* profile = Profile::FromBrowserContext(source->GetBrowserContext());
-  chrome::NavigateParams nav_params(profile,
-                                    params.url,
-                                    params.transition);
-  FillNavigateParamsFromOpenURLParams(&nav_params, params);
+  NavigateParams nav_params(profile, params.url, params.transition);
+  nav_params.FillNavigateParamsFromOpenURLParams(params);
   nav_params.source_contents = source;
-  nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  nav_params.window_action = NavigateParams::SHOW_WINDOW;
   nav_params.user_gesture = params.user_gesture;
   if ((params.disposition == WindowOpenDisposition::NEW_POPUP ||
        params.disposition == WindowOpenDisposition::NEW_FOREGROUND_TAB ||
diff --git a/chrome/browser/app_controller_mac_browsertest.mm b/chrome/browser/app_controller_mac_browsertest.mm
index fbca9c9..65852221 100644
--- a/chrome/browser/app_controller_mac_browsertest.mm
+++ b/chrome/browser/app_controller_mac_browsertest.mm
@@ -713,7 +713,7 @@
 
   // Test that opening a new tab updates the handoff URL.
   GURL test_url2 = embedded_test_server()->GetURL("/title2.html");
-  chrome::NavigateParams params(browser(), test_url2, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), test_url2, ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   ui_test_utils::NavigateToURL(&params);
   EXPECT_EQ(g_handoff_url, test_url2);
diff --git a/chrome/browser/apps/platform_app_navigation_redirector_browsertest.cc b/chrome/browser/apps/platform_app_navigation_redirector_browsertest.cc
index eeee36d7..fd460ff 100644
--- a/chrome/browser/apps/platform_app_navigation_redirector_browsertest.cc
+++ b/chrome/browser/apps/platform_app_navigation_redirector_browsertest.cc
@@ -267,7 +267,7 @@
 
   ExtensionTestMessageListener handler_listener(handler_start_message, false);
 
-  chrome::NavigateParams params(
+  NavigateParams params(
       browser(),
       embedded_test_server()->GetURL(base::StringPrintf(
           "/extensions/platform_apps/%s", matching_target_page)),
@@ -293,7 +293,7 @@
       browser()->tab_strip_model()->GetActiveWebContents();
   content::TitleWatcher title_watcher(tab, success_title);
 
-  chrome::NavigateParams params(
+  NavigateParams params(
       browser(),
       embedded_test_server()->GetURL(base::StringPrintf(
           "/extensions/platform_apps/%s", matching_target_page)),
diff --git a/chrome/browser/autofill/autofill_browsertest.cc b/chrome/browser/autofill/autofill_browsertest.cc
index e75d768..a92ae57e 100644
--- a/chrome/browser/autofill/autofill_browsertest.cc
+++ b/chrome/browser/autofill/autofill_browsertest.cc
@@ -177,8 +177,7 @@
                                     bool simulate_click,
                                     bool expect_personal_data_change) {
     GURL url = embedded_test_server()->GetURL("/autofill/" + filename);
-    chrome::NavigateParams params(browser(), url,
-                                  ui::PAGE_TRANSITION_LINK);
+    NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
     params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
     ui_test_utils::NavigateToURL(&params);
 
diff --git a/chrome/browser/banners/app_banner_manager_browsertest.cc b/chrome/browser/banners/app_banner_manager_browsertest.cc
index 88b9e146..e8417e2 100644
--- a/chrome/browser/banners/app_banner_manager_browsertest.cc
+++ b/chrome/browser/banners/app_banner_manager_browsertest.cc
@@ -227,7 +227,7 @@
     base::RunLoop run_loop;
     manager->clear_will_show();
     manager->PrepareDone(run_loop.QuitClosure());
-    chrome::NavigateParams nav_params(browser, test_url, transition);
+    NavigateParams nav_params(browser, test_url, transition);
     ui_test_utils::NavigateToURL(&nav_params);
     run_loop.Run();
 
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc
index e941730..644adfb 100644
--- a/chrome/browser/captive_portal/captive_portal_browsertest.cc
+++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc
@@ -2731,13 +2731,11 @@
   MultiNavigationObserver navigation_observer;
 
   // Navigate the tab in the inactive browser to an SSL timeout.  Have to use
-  // chrome::NavigateParams and NEW_BACKGROUND_TAB to avoid activating the
-  // window.
-  chrome::NavigateParams params(inactive_browser,
-                                GURL(kMockHttpsQuickTimeoutUrl),
-                                ui::PAGE_TRANSITION_TYPED);
+  // NavigateParams and NEW_BACKGROUND_TAB to avoid activating the window.
+  NavigateParams params(inactive_browser, GURL(kMockHttpsQuickTimeoutUrl),
+                        ui::PAGE_TRANSITION_TYPED);
   params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
-  params.window_action = chrome::NavigateParams::NO_ACTION;
+  params.window_action = NavigateParams::NO_ACTION;
   ui_test_utils::NavigateToURL(&params);
   navigation_observer.WaitForNavigations(2);
 
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 3f5d1627..82d9180b 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2559,8 +2559,7 @@
   BlockedWindowParams blocked_params(target_url, referrer, frame_name,
                                      disposition, features, user_gesture,
                                      opener_suppressed);
-  chrome::NavigateParams nav_params =
-      blocked_params.CreateNavigateParams(web_contents);
+  NavigateParams nav_params = blocked_params.CreateNavigateParams(web_contents);
   if (PopupBlockerTabHelper::MaybeBlockPopup(
           web_contents, opener_top_level_frame_url, nav_params,
           nullptr /*=open_url_params*/, blocked_params.features())) {
@@ -3336,11 +3335,9 @@
   ServiceTabLauncher::GetInstance()->LaunchTab(browser_context, params,
                                                callback);
 #else
-  chrome::NavigateParams nav_params(
-      Profile::FromBrowserContext(browser_context),
-      params.url,
-      params.transition);
-  FillNavigateParamsFromOpenURLParams(&nav_params, params);
+  NavigateParams nav_params(Profile::FromBrowserContext(browser_context),
+                            params.url, params.transition);
+  nav_params.FillNavigateParamsFromOpenURLParams(params);
   nav_params.user_gesture = params.user_gesture;
 
   Navigate(&nav_params);
diff --git a/chrome/browser/chromeos/accessibility/accessibility_util.cc b/chrome/browser/chromeos/accessibility/accessibility_util.cc
index aa87aba..6b368f9f 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_util.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_util.cc
@@ -36,7 +36,7 @@
 }
 
 void ShowAccessibilityHelp(Browser* browser) {
-  chrome::ShowSingletonTab(browser, GURL(chrome::kChromeAccessibilityHelpURL));
+  ShowSingletonTab(browser, GURL(chrome::kChromeAccessibilityHelpURL));
 }
 
 }  // namespace accessibility
diff --git a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
index a8e7f254..8ee7880 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
@@ -157,12 +157,11 @@
   if (!browser) {
     Profile* profile =
         Profile::FromBrowserContext(web_contents()->GetBrowserContext());
-    chrome::NavigateParams params(
-        profile, learn_more_url, ui::PAGE_TRANSITION_LINK);
+    NavigateParams params(profile, learn_more_url, ui::PAGE_TRANSITION_LINK);
     params.disposition = WindowOpenDisposition::SINGLETON_TAB;
-    chrome::Navigate(&params);
+    Navigate(&params);
   } else {
-    chrome::ShowSingletonTab(browser, learn_more_url);
+    ShowSingletonTab(browser, learn_more_url);
   }
 }
 
diff --git a/chrome/browser/chromeos/enrollment_dialog_view.cc b/chrome/browser/chromeos/enrollment_dialog_view.cc
index c3336438..a2192b3 100644
--- a/chrome/browser/chromeos/enrollment_dialog_view.cc
+++ b/chrome/browser/chromeos/enrollment_dialog_view.cc
@@ -145,11 +145,10 @@
 void EnrollmentDialogView::WindowClosing() {
   if (!accepted_)
     return;
-  chrome::NavigateParams params(profile_, GURL(target_uri_),
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(profile_, GURL(target_uri_), ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 }
 
 gfx::Size EnrollmentDialogView::CalculatePreferredSize() const {
diff --git a/chrome/browser/chromeos/eol_notification.cc b/chrome/browser/chromeos/eol_notification.cc
index e21eb65..3eec400 100644
--- a/chrome/browser/chromeos/eol_notification.cc
+++ b/chrome/browser/chromeos/eol_notification.cc
@@ -55,12 +55,11 @@
     switch (button_index) {
       case BUTTON_MORE_INFO: {
         // show eol link
-        chrome::NavigateParams params(profile_,
-                                      GURL(chrome::kEolNotificationURL),
-                                      ui::PAGE_TRANSITION_LINK);
+        NavigateParams params(profile_, GURL(chrome::kEolNotificationURL),
+                              ui::PAGE_TRANSITION_LINK);
         params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-        params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-        chrome::Navigate(&params);
+        params.window_action = NavigateParams::SHOW_WINDOW;
+        Navigate(&params);
         break;
       }
       case BUTTON_DISMISS:
diff --git a/chrome/browser/chromeos/extensions/echo_private_api.cc b/chrome/browser/chromeos/extensions/echo_private_api.cc
index 6714e13..f1527db 100644
--- a/chrome/browser/chromeos/extensions/echo_private_api.cc
+++ b/chrome/browser/chromeos/extensions/echo_private_api.cc
@@ -202,12 +202,12 @@
 }
 
 void EchoPrivateGetUserConsentFunction::OnMoreInfoLinkClicked() {
-  chrome::NavigateParams params(
-      GetProfile(), GURL(kMoreInfoLink), ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(GetProfile(), GURL(kMoreInfoLink),
+                        ui::PAGE_TRANSITION_LINK);
   // Open the link in a new window. The echo dialog is modal, so the current
   // window is useless until the dialog is closed.
   params.disposition = WindowOpenDisposition::NEW_WINDOW;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 void EchoPrivateGetUserConsentFunction::CheckRedeemOffersAllowed() {
diff --git a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
index 99913d68..dbe3b57 100644
--- a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
+++ b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
@@ -106,9 +106,9 @@
   const GURL url = GURL(kDriveOfflineSupportUrl);
 
   chrome::ScopedTabbedBrowserDisplayer displayer(profile_);
-  chrome::ShowSingletonTabOverwritingNTP(
+  ShowSingletonTabOverwritingNTP(
       displayer.browser(),
-      chrome::GetSingletonTabNavigateParams(displayer.browser(), url));
+      GetSingletonTabNavigateParams(displayer.browser(), url));
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc
index 037043d..94c3964f 100644
--- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc
+++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc
@@ -182,11 +182,10 @@
 
 // message_center::NotificationDelegate override:
 void QuickUnlockNotificationController::Click() {
-  chrome::NavigateParams params(profile_, params_.url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(profile_, params_.url, ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 
   SetNotificationPreferenceWasShown();
 
diff --git a/chrome/browser/chromeos/net/network_portal_notification_controller.cc b/chrome/browser/chromeos/net/network_portal_notification_controller.cc
index 98f4d35..f98b1661 100644
--- a/chrome/browser/chromeos/net/network_portal_notification_controller.cc
+++ b/chrome/browser/chromeos/net/network_portal_notification_controller.cc
@@ -184,7 +184,7 @@
       return;
     chrome::ScopedTabbedBrowserDisplayer displayer(profile);
     GURL url(captive_portal::CaptivePortalDetector::kDefaultURL);
-    chrome::ShowSingletonTab(displayer.browser(), url);
+    ShowSingletonTab(displayer.browser(), url);
   }
   CloseNotification();
 }
diff --git a/chrome/browser/chromeos/status/data_promo_notification.cc b/chrome/browser/chromeos/status/data_promo_notification.cc
index 8588d188..bb50df1 100644
--- a/chrome/browser/chromeos/status/data_promo_notification.cc
+++ b/chrome/browser/chromeos/status/data_promo_notification.cc
@@ -170,7 +170,7 @@
   if (!info_url.empty()) {
     chrome::ScopedTabbedBrowserDisplayer displayer(
         ProfileManager::GetPrimaryUserProfile());
-    chrome::ShowSingletonTab(displayer.browser(), GURL(info_url));
+    ShowSingletonTab(displayer.browser(), GURL(info_url));
     if (info_url == kDataSaverExtensionUrl)
       base::RecordAction(base::UserMetricsAction("DataSaverPrompt_Clicked"));
   } else {
diff --git a/chrome/browser/chromeos/ui/mobile_config_ui.cc b/chrome/browser/chromeos/ui/mobile_config_ui.cc
index e33b49d..fafa7eb5 100644
--- a/chrome/browser/chromeos/ui/mobile_config_ui.cc
+++ b/chrome/browser/chromeos/ui/mobile_config_ui.cc
@@ -34,7 +34,7 @@
   // The mobile device will be managed by the primary user.
   chrome::ScopedTabbedBrowserDisplayer displayer(
       ProfileManager::GetPrimaryUserProfile());
-  chrome::ShowSingletonTab(displayer.browser(), GURL(setup_url));
+  ShowSingletonTab(displayer.browser(), GURL(setup_url));
   return true;
 }
 
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
index aab5b56..9cabcad 100644
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
@@ -170,10 +170,10 @@
 
 scoped_refptr<DevToolsAgentHost>
 ChromeDevToolsManagerDelegate::CreateNewTarget(const GURL& url) {
-  chrome::NavigateParams params(ProfileManager::GetLastUsedProfile(),
-      url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
+  NavigateParams params(ProfileManager::GetLastUsedProfile(), url,
+                        ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
   if (!params.target_contents)
     return nullptr;
   return DevToolsAgentHost::GetOrCreateFor(params.target_contents);
diff --git a/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc b/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc
index 70e9881..d7c2a28 100644
--- a/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc
+++ b/chrome/browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc
@@ -322,8 +322,8 @@
   // Navigate to a URL.
   GURL url(dom_distiller::url_utils::GetDistillerViewUrlFromUrl(
       kDomDistillerScheme, GURL("http://urlthatlooksvalid.com")));
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
-  chrome::Navigate(&params);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  Navigate(&params);
   distillation_done_runner->Run();
 
   content::WebContents* contents =
@@ -367,8 +367,8 @@
                        DistillerJavaScriptExposed) {
   // Navigate to a distiller URL.
   GURL url(std::string(kDomDistillerScheme) + "://url");
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
-  chrome::Navigate(&params);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  Navigate(&params);
 
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
@@ -388,8 +388,8 @@
                        DistillerJavaScriptNotInMainWorld) {
   // Navigate to a distiller URL.
   GURL url(std::string(kDomDistillerScheme) + "://url");
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
-  chrome::Navigate(&params);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  Navigate(&params);
 
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
@@ -408,8 +408,8 @@
                        DistillerJavaScriptNotExposed) {
   // Navigate to a non-distiller URL.
   GURL url("http://url");
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
-  chrome::Navigate(&params);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  Navigate(&params);
 
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
@@ -445,8 +445,8 @@
   // Navigate to a URL and wait for the distiller to flush contents to the page.
   GURL url(dom_distiller::url_utils::GetDistillerViewUrlFromUrl(
       kDomDistillerScheme, GURL("http://urlthatlooksvalid.com")));
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
-  chrome::Navigate(&params);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  Navigate(&params);
   distillation_done_runner->Run();
 
   // Fake a multi-page response from distiller.
diff --git a/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
index 9d3ecde..a95f81e 100644
--- a/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
+++ b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
@@ -799,10 +799,10 @@
 // Regression test for crbug.com/584747.
 IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, BrowserActionOpenPopupOnPopup) {
   // Open a new web popup window.
-  chrome::NavigateParams params(browser(), GURL("http://www.google.com/"),
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), GURL("http://www.google.com/"),
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_POPUP;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  params.window_action = NavigateParams::SHOW_WINDOW;
   ui_test_utils::NavigateToURL(&params);
   Browser* popup_browser = params.browser;
   // Verify it is a popup, and it is the active window.
diff --git a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
index 61756b2..148b3cc4 100644
--- a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+++ b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
@@ -252,11 +252,11 @@
   if (!browser)
     browser = new Browser(Browser::CreateParams(profile, false));
 
-  chrome::NavigateParams params(
-      browser, uninstall_url, ui::PAGE_TRANSITION_CLIENT_REDIRECT);
+  NavigateParams params(browser, uninstall_url,
+                        ui::PAGE_TRANSITION_CLIENT_REDIRECT);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.user_gesture = false;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 bool ChromeRuntimeAPIDelegate::GetPlatformInfo(PlatformInfo* info) {
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index 2fe4fb60..107739b 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -421,7 +421,7 @@
   if (incognito && !profile->IsGuestSession()) {
     std::string first_url_erased;
     for (size_t i = 0; i < urls->size();) {
-      if (chrome::IsURLAllowedInIncognito((*urls)[i], profile)) {
+      if (IsURLAllowedInIncognito((*urls)[i], profile)) {
         i++;
       } else {
         if (first_url_erased.empty())
@@ -606,8 +606,7 @@
 #endif
 
   for (const GURL& url : urls) {
-    chrome::NavigateParams navigate_params(new_window, url,
-                                           ui::PAGE_TRANSITION_LINK);
+    NavigateParams navigate_params(new_window, url, ui::PAGE_TRANSITION_LINK);
     navigate_params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
 
     // Depending on the |setSelfAsOpener| option, we need to put the new
@@ -619,7 +618,7 @@
     navigate_params.source_site_instance =
         render_frame_host()->GetSiteInstance();
 
-    chrome::Navigate(&navigate_params);
+    Navigate(&navigate_params);
   }
 
   WebContents* contents = NULL;
@@ -1248,8 +1247,7 @@
   if (params->update_properties.url.get()) {
     std::string updated_url = *params->update_properties.url;
     if (browser->profile()->GetProfileType() == Profile::INCOGNITO_PROFILE &&
-        !chrome::IsURLAllowedInIncognito(GURL(updated_url),
-                                         browser->profile())) {
+        !IsURLAllowedInIncognito(GURL(updated_url), browser->profile())) {
       error_ = ErrorUtils::FormatErrorMessage(
           keys::kURLsNotAllowedInIncognitoError, updated_url);
       return false;
diff --git a/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc b/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc
index da1fc21..57e7010 100644
--- a/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc
+++ b/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc
@@ -587,7 +587,7 @@
   GURL url = embedded_test_server()->GetURL(
       "/extensions/api_test/webnavigation/targetBlank/a.html");
 
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   ui_test_utils::NavigateToURL(&params);
 
   // There's a link with target=_blank on a.html. Click on it to open it in a
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
index 7af8836..28a68c42 100644
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -671,7 +671,7 @@
   // Navigate the browser to a page in a new tab.
   const std::string kHost = "a.com";
   GURL url = embedded_test_server()->GetURL(kHost, "/iframe_cross_site.html");
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   ui_test_utils::NavigateToURL(&params);
 
@@ -797,7 +797,7 @@
                                     testcase.main_frame_url, port));
     }
 
-    chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+    NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
     ui_test_utils::NavigateToURL(&params);
 
     EXPECT_EQ(expected_requests_observed,
@@ -1309,7 +1309,7 @@
 
   // Navigate the browser to a page in a new tab.
   GURL url = embedded_test_server()->GetURL(protected_domain, "/empty.html");
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   ui_test_utils::NavigateToURL(&params);
 
diff --git a/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc b/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc
index cdca895c..34dd3e0 100644
--- a/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc
+++ b/chrome/browser/extensions/bookmark_app_navigation_throttle_browsertest.cc
@@ -242,14 +242,14 @@
 }
 
 // Uses |params| to navigate to a URL. Blocks until the URL is loaded.
-void NavigateToURLAndWait(chrome::NavigateParams* params) {
+void NavigateToURLAndWait(NavigateParams* params) {
   auto observer = GetTestNavigationObserver(params->url);
   ui_test_utils::NavigateToURL(params);
   observer->WaitForNavigationFinished();
 }
 
 // Wrapper so that we can use base::Bind with NavigateToURL.
-void NavigateToURLWrapper(chrome::NavigateParams* params) {
+void NavigateToURLWrapper(NavigateParams* params) {
   ui_test_utils::NavigateToURL(params);
 }
 
@@ -581,7 +581,7 @@
   GURL target_url =
       embedded_test_server()->GetURL(kAppUrlHost, std::get<0>(GetParam()));
   ui::PageTransition transition = std::get<1>(GetParam());
-  chrome::NavigateParams params(browser(), target_url, transition);
+  NavigateParams params(browser(), target_url, transition);
 
   if (!ui::PageTransitionIsMainFrame(transition)) {
     // Subframe navigations require a different setup. See
@@ -620,7 +620,7 @@
   content::RenderFrameHost* iframe = GetIFrame(initial_tab);
   const GURL app_url = embedded_test_server()->GetURL(kAppUrlHost, kAppUrlPath);
 
-  chrome::NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_LINK);
   params.frame_tree_node_id = iframe->GetFrameTreeNodeId();
   content::TestFrameNavigationObserver observer(iframe);
   TestIFrameActionDoesNotOpenAppWindow(
@@ -643,8 +643,8 @@
     // Navigate the iframe once, so that the next navigation is a
     // MANUAL_SUBFRAME navigation.
     content::RenderFrameHost* iframe = GetIFrame(initial_tab);
-    chrome::NavigateParams params(browser(), GetLaunchingPageURL(),
-                                  ui::PAGE_TRANSITION_LINK);
+    NavigateParams params(browser(), GetLaunchingPageURL(),
+                          ui::PAGE_TRANSITION_LINK);
     params.frame_tree_node_id = iframe->GetFrameTreeNodeId();
     ASSERT_TRUE(TestIFrameActionDoesNotOpenAppWindow(
         GetLaunchingPageURL(), base::Bind(&NavigateToURLWrapper, &params)));
@@ -653,7 +653,7 @@
   content::RenderFrameHost* iframe = GetIFrame(initial_tab);
   const GURL app_url = embedded_test_server()->GetURL(kAppUrlHost, kAppUrlPath);
 
-  chrome::NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_LINK);
   params.frame_tree_node_id = iframe->GetFrameTreeNodeId();
   content::TestFrameNavigationObserver observer(iframe);
   TestIFrameActionDoesNotOpenAppWindow(
@@ -674,7 +674,7 @@
   // Fake a navigation with a TRANSITION_LINK core type and a
   // TRANSITION_FROM_ADDRESS_BAR qualifier. This matches the transition that
   // results from pasting a URL into the address and navigating to it.
-  chrome::NavigateParams params(
+  NavigateParams params(
       browser(), app_url,
       ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
                                 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR));
@@ -691,8 +691,7 @@
   {
     const GURL app_url =
         embedded_test_server()->GetURL(kAppUrlHost, kAppUrlPath);
-    chrome::NavigateParams params(browser(), app_url,
-                                  ui::PAGE_TRANSITION_TYPED);
+    NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_TYPED);
     ASSERT_TRUE(TestTabActionDoesNotOpenAppWindow(
         app_url, base::Bind(&NavigateToURLWrapper, &params)));
   }
@@ -712,8 +711,8 @@
   {
     const GURL out_of_scope_url =
         embedded_test_server()->GetURL(kAppUrlHost, kOutOfScopeUrlPath);
-    chrome::NavigateParams params(browser(), out_of_scope_url,
-                                  ui::PAGE_TRANSITION_TYPED);
+    NavigateParams params(browser(), out_of_scope_url,
+                          ui::PAGE_TRANSITION_TYPED);
     ASSERT_TRUE(TestTabActionDoesNotOpenAppWindow(
         out_of_scope_url, base::Bind(&NavigateToURLWrapper, &params)));
   }
@@ -996,8 +995,8 @@
     else
       start_url = embedded_test_server()->GetURL(kAppUrlHost, kAppUrlPath);
 
-    chrome::NavigateParams params(current_browser, start_url,
-                                  ui::PAGE_TRANSITION_TYPED);
+    NavigateParams params(current_browser, start_url,
+                          ui::PAGE_TRANSITION_TYPED);
     ASSERT_TRUE(TestTabActionDoesNotOpenAppWindow(
         start_url, base::Bind(&NavigateToURLWrapper, &params)));
   } else if (start_url_path == kLaunchingPagePath) {
@@ -1206,8 +1205,7 @@
   // Navigate to out-of-scope URL. Shouldn't open a new window.
   const GURL out_of_scope_url =
       embedded_test_server()->GetURL(kAppUrlHost, kOutOfScopeUrlPath);
-  chrome::NavigateParams params(browser(), out_of_scope_url,
-                                ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser(), out_of_scope_url, ui::PAGE_TRANSITION_TYPED);
   ASSERT_TRUE(TestTabActionDoesNotOpenAppWindow(
       out_of_scope_url, base::Bind(&NavigateToURLWrapper, &params)));
 
@@ -1230,8 +1228,7 @@
   // Navigate to out-of-scope URL. Shouldn't open a new window.
   const GURL out_of_scope_url =
       embedded_test_server()->GetURL(kAppUrlHost, kOutOfScopeUrlPath);
-  chrome::NavigateParams params(browser(), out_of_scope_url,
-                                ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser(), out_of_scope_url, ui::PAGE_TRANSITION_TYPED);
   ASSERT_TRUE(TestTabActionDoesNotOpenAppWindow(
       out_of_scope_url, base::Bind(&NavigateToURLWrapper, &params)));
 
@@ -1252,7 +1249,7 @@
 
   // Navigate to app's page. Shouldn't open a new window.
   const GURL app_url = embedded_test_server()->GetURL(kAppUrlHost, kAppUrlPath);
-  chrome::NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser(), app_url, ui::PAGE_TRANSITION_TYPED);
   ASSERT_TRUE(TestTabActionDoesNotOpenAppWindow(
       app_url, base::Bind(&NavigateToURLWrapper, &params)));
 
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
index 44e2ba8..b57579d 100644
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -251,14 +251,13 @@
   add_types |= TabStripModel::ADD_FORCE_INDEX;
   if (pinned)
     add_types |= TabStripModel::ADD_PINNED;
-  chrome::NavigateParams navigate_params(
-      browser, url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams navigate_params(browser, url, ui::PAGE_TRANSITION_LINK);
   navigate_params.disposition = active
                                     ? WindowOpenDisposition::NEW_FOREGROUND_TAB
                                     : WindowOpenDisposition::NEW_BACKGROUND_TAB;
   navigate_params.tabstrip_index = index;
   navigate_params.tabstrip_add_types = add_types;
-  chrome::Navigate(&navigate_params);
+  Navigate(&navigate_params);
 
   // The tab may have been created in a different window, so make sure we look
   // at the right tab strip.
@@ -619,7 +618,7 @@
     Browser::CreateParams params = Browser::CreateParams(profile, user_gesture);
     browser = new Browser(params);
   }
-  chrome::NavigateParams params(browser, web_contents);
+  NavigateParams params(browser, web_contents);
 
   // The extension_app_id parameter ends up as app_name in the Browser
   // which causes the Browser to return true for is_app().  This affects
@@ -631,11 +630,11 @@
 
   params.disposition = disposition;
   params.window_bounds = initial_rect;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  params.window_action = NavigateParams::SHOW_WINDOW;
   params.user_gesture = user_gesture;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
-  // Close the browser if chrome::Navigate created a new one.
+  // Close the browser if Navigate created a new one.
   if (browser_created && (browser != params.browser))
     browser->window()->Close();
 }
@@ -707,18 +706,17 @@
     url_to_navigate = url_to_navigate.ReplaceComponents(replacements);
   }
 
-  chrome::NavigateParams params(
-      chrome::GetSingletonTabNavigateParams(browser, url_to_navigate));
+  NavigateParams params(
+      GetSingletonTabNavigateParams(browser, url_to_navigate));
   // We need to respect path differences because we don't want opening the
   // options page to close a page that might be open to extension content.
   // However, if the options page opens inside the chrome://extensions page, we
   // can override an existing page.
   // Note: default ref behavior is IGNORE_REF, which is correct.
-  params.path_behavior = open_in_tab
-                             ? chrome::NavigateParams::RESPECT
-                             : chrome::NavigateParams::IGNORE_AND_NAVIGATE;
+  params.path_behavior = open_in_tab ? NavigateParams::RESPECT
+                                     : NavigateParams::IGNORE_AND_NAVIGATE;
   params.url = url_to_navigate;
-  chrome::ShowSingletonTabOverwritingNTP(browser, params);
+  ShowSingletonTabOverwritingNTP(browser, params);
   return true;
 }
 
diff --git a/chrome/browser/extensions/extension_uninstall_dialog.cc b/chrome/browser/extensions/extension_uninstall_dialog.cc
index 32278e03..5647349 100644
--- a/chrome/browser/extensions/extension_uninstall_dialog.cc
+++ b/chrome/browser/extensions/extension_uninstall_dialog.cc
@@ -212,12 +212,12 @@
 }
 
 void ExtensionUninstallDialog::HandleReportAbuse() {
-  chrome::NavigateParams params(
+  NavigateParams params(
       profile_,
       extension_urls::GetWebstoreReportAbuseUrl(extension_->id(), kReferrerId),
       ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 }  // namespace extensions
diff --git a/chrome/browser/extensions/fetch_apitest.cc b/chrome/browser/extensions/fetch_apitest.cc
index 24336ba..04411ff 100644
--- a/chrome/browser/extensions/fetch_apitest.cc
+++ b/chrome/browser/extensions/fetch_apitest.cc
@@ -63,7 +63,7 @@
   // Opens a tab, puts it in the foreground, navigates it to |url| then returns
   // its WebContents.
   content::WebContents* CreateAndNavigateTab(const GURL& url) {
-    chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+    NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
     params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
     ui_test_utils::NavigateToURL(&params);
     return browser()->tab_strip_model()->GetActiveWebContents();
diff --git a/chrome/browser/media/media_engagement_browsertest.cc b/chrome/browser/media/media_engagement_browsertest.cc
index 8db8b474..1947372 100644
--- a/chrome/browser/media/media_engagement_browsertest.cc
+++ b/chrome/browser/media/media_engagement_browsertest.cc
@@ -120,11 +120,11 @@
   };
 
   void OpenTab(const GURL& url) {
-    chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+    NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
     params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
     // params.opener does not need to be set in the context of this test because
     // it will use the current tab by default.
-    chrome::Navigate(&params);
+    Navigate(&params);
 
     InjectTimerTaskRunner();
     params.target_contents->SetAudioMuted(false);
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
index d0b58bf..ce85009 100644
--- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
+++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
@@ -438,12 +438,12 @@
 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPageInNewForegroundTab) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
-  chrome::NavigateParams params(browser(),
-                                embedded_test_server()->GetURL("/title1.html"),
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(),
+                        embedded_test_server()->GetURL("/title1.html"),
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
 
-  chrome::Navigate(&params);
+  Navigate(&params);
   auto waiter = base::MakeUnique<PageLoadMetricsWaiter>(params.target_contents);
   waiter->AddPageExpectation(TimingField::LOAD_EVENT);
   waiter->Wait();
@@ -858,20 +858,19 @@
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url(embedded_test_server()->GetURL("/title1.html"));
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   content::TestNavigationManager manager(
       browser()->tab_strip_model()->GetActiveWebContents(), url);
 
-  chrome::Navigate(&params);
+  Navigate(&params);
   EXPECT_TRUE(manager.WaitForRequestStart());
 
   GURL url2(embedded_test_server()->GetURL("/title2.html"));
-  chrome::NavigateParams params2(browser(), url2,
-                                 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
+  NavigateParams params2(browser(), url2, ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
 
   auto waiter = CreatePageLoadMetricsWaiter();
   waiter->AddPageExpectation(TimingField::LOAD_EVENT);
-  chrome::Navigate(&params2);
+  Navigate(&params2);
   waiter->Wait();
 
   histogram_tester_.ExpectTotalCount(
@@ -882,18 +881,18 @@
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url(embedded_test_server()->GetURL("/title1.html"));
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   content::TestNavigationManager manager(
       browser()->tab_strip_model()->GetActiveWebContents(), url);
 
-  chrome::Navigate(&params);
+  Navigate(&params);
   EXPECT_TRUE(manager.WaitForRequestStart());
 
-  chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD);
+  NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD);
 
   auto waiter = CreatePageLoadMetricsWaiter();
   waiter->AddPageExpectation(TimingField::LOAD_EVENT);
-  chrome::Navigate(&params2);
+  Navigate(&params2);
   waiter->Wait();
 
   histogram_tester_.ExpectTotalCount(
@@ -910,11 +909,11 @@
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url(embedded_test_server()->GetURL("/title1.html"));
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   content::TestNavigationManager manager(
       browser()->tab_strip_model()->GetActiveWebContents(), url);
 
-  chrome::Navigate(&params);
+  Navigate(&params);
   EXPECT_TRUE(manager.WaitForRequestStart());
 
   browser()->tab_strip_model()->GetActiveWebContents()->Close();
@@ -929,28 +928,28 @@
   ASSERT_TRUE(embedded_test_server()->Start());
 
   GURL url(embedded_test_server()->GetURL("/title1.html"));
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   content::TestNavigationManager manager(
       browser()->tab_strip_model()->GetActiveWebContents(), url);
 
-  chrome::Navigate(&params);
+  Navigate(&params);
   EXPECT_TRUE(manager.WaitForRequestStart());
 
   GURL url2(embedded_test_server()->GetURL("/title2.html"));
-  chrome::NavigateParams params2(browser(), url2, ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params2(browser(), url2, ui::PAGE_TRANSITION_TYPED);
   content::TestNavigationManager manager2(
       browser()->tab_strip_model()->GetActiveWebContents(), url2);
-  chrome::Navigate(&params2);
+  Navigate(&params2);
 
   EXPECT_TRUE(manager2.WaitForRequestStart());
   manager.WaitForNavigationFinished();
 
   GURL url3(embedded_test_server()->GetURL("/title3.html"));
-  chrome::NavigateParams params3(browser(), url3, ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params3(browser(), url3, ui::PAGE_TRANSITION_TYPED);
 
   auto waiter = CreatePageLoadMetricsWaiter();
   waiter->AddPageExpectation(TimingField::LOAD_EVENT);
-  chrome::Navigate(&params3);
+  Navigate(&params3);
   waiter->Wait();
 
   manager2.WaitForNavigationFinished();
@@ -967,11 +966,10 @@
   ui_test_utils::NavigateToURL(browser(), first_url);
 
   GURL second_url(embedded_test_server()->GetURL("/title2.html"));
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   content::TestNavigationManager manager(
       browser()->tab_strip_model()->GetActiveWebContents(), second_url);
-  chrome::Navigate(&params);
+  Navigate(&params);
   EXPECT_TRUE(manager.WaitForRequestStart());
 
   {
diff --git a/chrome/browser/password_manager/password_manager_browsertest.cc b/chrome/browser/password_manager/password_manager_browsertest.cc
index 736cf401..29c09a9 100644
--- a/chrome/browser/password_manager/password_manager_browsertest.cc
+++ b/chrome/browser/password_manager/password_manager_browsertest.cc
@@ -1304,7 +1304,7 @@
   std::unique_ptr<BubbleObserver> prompt_observer(
       new BubbleObserver(WebContents()));
   GURL url = embedded_test_server()->GetURL("/password/password_form.html");
-  chrome::NavigateParams params(browser(), url, ::ui::PAGE_TRANSITION_RELOAD);
+  NavigateParams params(browser(), url, ::ui::PAGE_TRANSITION_RELOAD);
   ui_test_utils::NavigateToURL(&params);
   observer.Wait();
   EXPECT_FALSE(prompt_observer->IsSavePromptShownAutomatically());
diff --git a/chrome/browser/platform_util_chromeos.cc b/chrome/browser/platform_util_chromeos.cc
index 2af6878ea..700049c 100644
--- a/chrome/browser/platform_util_chromeos.cc
+++ b/chrome/browser/platform_util_chromeos.cc
@@ -107,7 +107,7 @@
   //     this function directly and which would therefore break (e.g.
   //     "Browser::EmailPageLocation" (to name only one).
   // As such we should keep this code here.
-  chrome::NavigateParams params(profile, url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(profile, url, ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
 
   if (url.SchemeIs("mailto")) {
@@ -116,7 +116,7 @@
     params.url = GURL(url);
   }
 
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 }  // namespace platform_util
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index 5c83660..9b9aec8 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -291,7 +291,7 @@
 }
 
 bool PrerenderManager::MaybeUsePrerenderedPage(const GURL& url,
-                                               chrome::NavigateParams* params) {
+                                               NavigateParams* params) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   WebContents* web_contents = params->target_contents;
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h
index 0781404..807b809 100644
--- a/chrome/browser/prerender/prerender_manager.h
+++ b/chrome/browser/prerender/prerender_manager.h
@@ -38,9 +38,7 @@
 class TickClock;
 }
 
-namespace chrome {
 struct NavigateParams;
-}
 
 namespace chrome_browser_net {
 enum class NetworkPredictionStatus;
@@ -161,8 +159,7 @@
   // to swap it and merge browsing histories. Returns |true| and updates
   // |params->target_contents| if a prerendered page is swapped in, |false|
   // otherwise.
-  bool MaybeUsePrerenderedPage(const GURL& url,
-                               chrome::NavigateParams* params);
+  bool MaybeUsePrerenderedPage(const GURL& url, NavigateParams* params);
 
   // Moves a PrerenderContents to the pending delete list from the list of
   // active prerenders when prerendering should be cancelled.
diff --git a/chrome/browser/printing/cloud_print/privet_notifications.cc b/chrome/browser/printing/cloud_print/privet_notifications.cc
index 1b7a0b7..f83ec76 100644
--- a/chrome/browser/printing/cloud_print/privet_notifications.cc
+++ b/chrome/browser/printing/cloud_print/privet_notifications.cc
@@ -375,10 +375,9 @@
 }
 
 void PrivetNotificationDelegate::OpenTab(const GURL& url) {
-  chrome::NavigateParams params(profile_, url,
-                                ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
+  NavigateParams params(profile_, url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 void PrivetNotificationDelegate::DisableNotifications() {
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 9c5df9c..4d5c413 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -494,12 +494,11 @@
                       Profile::CreateStatus status) {
   if (status == Profile::CREATE_STATUS_INITIALIZED) {
     Browser* browser = chrome::FindLastActiveWithProfile(profile);
-    chrome::NavigateParams nav_params(browser, link_url,
-                                      ui::PAGE_TRANSITION_LINK);
+    NavigateParams nav_params(browser, link_url, ui::PAGE_TRANSITION_LINK);
     nav_params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
     nav_params.referrer = referrer;
-    nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-    chrome::Navigate(&nav_params);
+    nav_params.window_action = NavigateParams::SHOW_WINDOW;
+    Navigate(&nav_params);
   }
 }
 
@@ -2256,7 +2255,7 @@
   if (browser_context_->IsOffTheRecord() || !params_.link_url.is_valid())
     return false;
 
-  if (!chrome::IsURLAllowedInIncognito(params_.link_url, browser_context_))
+  if (!IsURLAllowedInIncognito(params_.link_url, browser_context_))
     return false;
 
   IncognitoModePrefs::Availability incognito_avail =
diff --git a/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc b/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc
index 737a2fa..ce3bfdb 100644
--- a/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc
+++ b/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc
@@ -100,7 +100,7 @@
   // the renderer process to be created or foregrounded, returning the process
   // handle.
   base::Process ShowSingletonTab(const GURL& page) {
-    chrome::ShowSingletonTab(browser(), page);
+    ::ShowSingletonTab(browser(), page);
     WebContents* wc = browser()->tab_strip_model()->GetActiveWebContents();
     CHECK(wc->GetURL() == page);
 
@@ -174,7 +174,7 @@
 
     ui_test_utils::WindowedTabAddedNotificationObserver observer1(
         content::NotificationService::AllSources());
-    chrome::ShowSingletonTab(browser(), page1);
+    ::ShowSingletonTab(browser(), page1);
     observer1.Wait();
 
     tab_count++;
@@ -190,7 +190,7 @@
     GURL page2("data:text/html,hello world2");
     ui_test_utils::WindowedTabAddedNotificationObserver observer2(
         content::NotificationService::AllSources());
-    chrome::ShowSingletonTab(browser(), page2);
+    ::ShowSingletonTab(browser(), page2);
     observer2.Wait();
     tab_count++;
     EXPECT_EQ(tab_count, browser()->tab_strip_model()->count());
@@ -206,7 +206,7 @@
     GURL history(chrome::kChromeUIHistoryURL);
     ui_test_utils::WindowedTabAddedNotificationObserver observer3(
         content::NotificationService::AllSources());
-    chrome::ShowSingletonTab(browser(), history);
+    ::ShowSingletonTab(browser(), history);
     observer3.Wait();
     tab_count++;
     EXPECT_EQ(tab_count, browser()->tab_strip_model()->count());
@@ -219,7 +219,7 @@
     GURL extension_url("chrome-extension://" + extension->id());
     ui_test_utils::WindowedTabAddedNotificationObserver observer4(
         content::NotificationService::AllSources());
-    chrome::ShowSingletonTab(browser(), extension_url);
+    ::ShowSingletonTab(browser(), extension_url);
 
     observer4.Wait();
     tab_count++;
@@ -271,7 +271,7 @@
   GURL page1("data:text/html,hello world1");
   ui_test_utils::WindowedTabAddedNotificationObserver observer1(
       content::NotificationService::AllSources());
-  chrome::ShowSingletonTab(browser(), page1);
+  ::ShowSingletonTab(browser(), page1);
   observer1.Wait();
   tab_count++;
   host_count++;
@@ -282,7 +282,7 @@
   GURL page2("data:text/html,hello world2");
   ui_test_utils::WindowedTabAddedNotificationObserver observer2(
       content::NotificationService::AllSources());
-  chrome::ShowSingletonTab(browser(), page2);
+  ::ShowSingletonTab(browser(), page2);
   observer2.Wait();
   tab_count++;
   EXPECT_EQ(tab_count, browser()->tab_strip_model()->count());
@@ -455,7 +455,7 @@
   GURL page1("data:text/html,hello world1");
   ui_test_utils::WindowedTabAddedNotificationObserver observer1(
       content::NotificationService::AllSources());
-  chrome::ShowSingletonTab(browser(), page1);
+  ::ShowSingletonTab(browser(), page1);
   observer1.Wait();
   tab_count++;
   host_count++;
@@ -496,7 +496,7 @@
   GURL page1("data:text/html,hello world1");
   ui_test_utils::WindowedTabAddedNotificationObserver observer1(
       content::NotificationService::AllSources());
-  chrome::ShowSingletonTab(browser(), page1);
+  ::ShowSingletonTab(browser(), page1);
   observer1.Wait();
   tab_count++;
   host_count++;
diff --git a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
index 956d23f0..29283269 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
@@ -953,7 +953,7 @@
   EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(bad_url)))
       .Times(1);
 
-  chrome::NavigateParams params(browser(), bad_url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), bad_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -986,8 +986,7 @@
   EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(bad_url)))
       .Times(1);
 
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -1018,8 +1017,7 @@
 
   // Navigate to malware page. The malware subresources haven't loaded yet, so
   // no interstitial should show yet.
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -1072,8 +1070,7 @@
 
   // Navigate to malware page. The malware subresources haven't loaded yet, so
   // no interstitial should show yet.
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -2064,7 +2061,7 @@
   EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(bad_url)))
       .Times(1);
 
-  chrome::NavigateParams params(browser(), bad_url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), bad_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -2095,8 +2092,7 @@
   EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(bad_url)))
       .Times(1);
 
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -2125,8 +2121,7 @@
 
   // Navigate to malware page. The malware subresources haven't loaded yet, so
   // no interstitial should show yet.
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
@@ -2176,8 +2171,7 @@
 
   // Navigate to malware page. The malware subresources haven't loaded yet, so
   // no interstitial should show yet.
-  chrome::NavigateParams params(browser(), second_url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), second_url, ui::PAGE_TRANSITION_LINK);
   params.referrer.url = first_url;
   ui_test_utils::NavigateToURL(&params);
 
diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
index b434124..7c0c48fde 100644
--- a/chrome/browser/search/search.cc
+++ b/chrome/browser/search/search.cc
@@ -16,10 +16,8 @@
 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/chrome_switches.h"
-#include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "components/google/core/browser/google_util.h"
-#include "components/prefs/pref_service.h"
 #include "components/search/search.h"
 #include "components/search_engines/search_engine_type.h"
 #include "components/search_engines/template_url_service.h"
@@ -319,11 +317,6 @@
   return new_tab_url.is_valid() && MatchesOriginAndPath(url, new_tab_url);
 }
 
-bool IsSuggestPrefEnabled(Profile* profile) {
-  return profile && !profile->IsOffTheRecord() && profile->GetPrefs() &&
-         profile->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled);
-}
-
 GURL GetNewTabPageURL(Profile* profile) {
   return NewTabURLDetails::ForProfile(profile).url;
 }
diff --git a/chrome/browser/search/search.h b/chrome/browser/search/search.h
index 47747856e..33ce7b0 100644
--- a/chrome/browser/search/search.h
+++ b/chrome/browser/search/search.h
@@ -24,9 +24,6 @@
   CACHEABLE_NTP_LOAD_MAX = 2
 };
 
-// Returns whether the suggest is enabled for the given |profile|.
-bool IsSuggestPrefEnabled(Profile* profile);
-
 // Returns true if |url| should be rendered in the Instant renderer process.
 bool ShouldAssignURLToInstantRenderer(const GURL& url, Profile* profile);
 
diff --git a/chrome/browser/search/search_unittest.cc b/chrome/browser/search/search_unittest.cc
index 9bc2e32..93ca30c5 100644
--- a/chrome/browser/search/search_unittest.cc
+++ b/chrome/browser/search/search_unittest.cc
@@ -2,10 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "chrome/browser/search/search.h"
+
 #include <stddef.h>
 
 #include <map>
-#include <memory>
+#include <string>
+#include <utility>
 
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
@@ -13,16 +16,11 @@
 #include "build/build_config.h"
 #include "chrome/browser/search/instant_service.h"
 #include "chrome/browser/search/instant_service_factory.h"
-#include "chrome/browser/search/search.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
 #include "chrome/test/base/search_test_utils.h"
-#include "components/prefs/pref_service.h"
-#include "components/search/search.h"
 #include "components/search_engines/template_url_service.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/render_frame_host.h"
@@ -396,8 +394,7 @@
   GURL local_ntp_url(chrome::kChromeSearchLocalNtpUrl);
 
   EXPECT_FALSE(IsNTPURL(invalid_url, profile()));
-  // No margin.
-  profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
+
   GURL remote_ntp_url(GetNewTabPageURL(profile()));
   GURL remote_ntp_service_worker_url("https://foo.com/newtab-serviceworker.js");
   GURL search_url_with_search_terms("https://foo.com/url?bar=abc");
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
index b6dde9c4..b3c3709 100644
--- a/chrome/browser/sessions/session_restore.cc
+++ b/chrome/browser/sessions/session_restore.cc
@@ -662,12 +662,12 @@
       int add_types = TabStripModel::ADD_FORCE_INDEX;
       if (i == 0)
         add_types |= TabStripModel::ADD_ACTIVE;
-      chrome::NavigateParams params(browser, urls[i],
-                                    ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
+      NavigateParams params(browser, urls[i],
+                            ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
       params.disposition = i == 0 ? WindowOpenDisposition::NEW_FOREGROUND_TAB
                                   : WindowOpenDisposition::NEW_BACKGROUND_TAB;
       params.tabstrip_add_types = add_types;
-      chrome::Navigate(&params);
+      Navigate(&params);
     }
   }
 
diff --git a/chrome/browser/sessions/session_restore_browsertest.cc b/chrome/browser/sessions/session_restore_browsertest.cc
index d978d54..49bb87f 100644
--- a/chrome/browser/sessions/session_restore_browsertest.cc
+++ b/chrome/browser/sessions/session_restore_browsertest.cc
@@ -142,10 +142,8 @@
     if (url.is_empty()) {
       chrome::NewEmptyWindow(profile);
     } else {
-      chrome::NavigateParams params(profile,
-                                    url,
-                                    ui::PAGE_TRANSITION_LINK);
-      chrome::Navigate(&params);
+      NavigateParams params(profile, url, ui::PAGE_TRANSITION_LINK);
+      Navigate(&params);
     }
     Browser* new_browser = window_observer.WaitForSingleNewBrowser();
     // Stop loading anything more if we are running out of space.
@@ -1102,8 +1100,7 @@
       browser(), url2_, WindowOpenDisposition::NEW_BACKGROUND_TAB,
       ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
 
-  chrome::NavigateParams navigate_params(browser(), url3_,
-                                         ui::PAGE_TRANSITION_TYPED);
+  NavigateParams navigate_params(browser(), url3_, ui::PAGE_TRANSITION_TYPED);
   navigate_params.tabstrip_index = 0;
   navigate_params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
   ui_test_utils::NavigateToURL(&navigate_params);
diff --git a/chrome/browser/signin/signin_ui_util.cc b/chrome/browser/signin/signin_ui_util.cc
index 5828244d..7329019 100644
--- a/chrome/browser/signin/signin_ui_util.cc
+++ b/chrome/browser/signin/signin_ui_util.cc
@@ -58,10 +58,10 @@
 void ShowSigninErrorLearnMorePage(Profile* profile) {
   static const char kSigninErrorLearnMoreUrl[] =
       "https://support.google.com/chrome/answer/1181420?";
-  chrome::NavigateParams params(
-      profile, GURL(kSigninErrorLearnMoreUrl), ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(profile, GURL(kSigninErrorLearnMoreUrl),
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 std::string GetDisplayEmail(Profile* profile, const std::string& account_id) {
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc
index aa65e41..e2e2ce04 100644
--- a/chrome/browser/ssl/ssl_browsertest.cc
+++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -1974,9 +1974,9 @@
     content::WindowedNotificationObserver observer(
         content::NOTIFICATION_LOAD_STOP,
         content::NotificationService::AllSources());
-    chrome::NavigateParams navigate_params(browser(), url_dangerous,
-                                           ui::PAGE_TRANSITION_TYPED);
-    chrome::Navigate(&navigate_params);
+    NavigateParams navigate_params(browser(), url_dangerous,
+                                   ui::PAGE_TRANSITION_TYPED);
+    Navigate(&navigate_params);
     observer.Wait();
   }
 
@@ -2306,14 +2306,14 @@
       embedded_test_server()->host_port_pair(), &replacement_path);
 
   GURL url = https_server_.GetURL(replacement_path);
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.tabstrip_index = 0;
   params.source_contents = tab1;
   content::WindowedNotificationObserver observer(
       content::NOTIFICATION_LOAD_STOP,
       content::NotificationService::AllSources());
-  chrome::Navigate(&params);
+  Navigate(&params);
   WebContents* tab2 = params.target_contents;
   observer.Wait();
 
@@ -2350,13 +2350,13 @@
   // disposition won't usually stay in the same process, but this works
   // because we are using process-per-site in SetUpCommandLine.
   GURL url = https_server_.GetURL(replacement_path);
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.source_contents = tab1;
   content::WindowedNotificationObserver observer(
       content::NOTIFICATION_LOAD_STOP,
       content::NotificationService::AllSources());
-  chrome::Navigate(&params);
+  Navigate(&params);
   WebContents* tab2 = params.target_contents;
   observer.Wait();
 
diff --git a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
index ebae8c7..54b5386 100644
--- a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
@@ -604,9 +604,8 @@
   content::TestNavigationManager manager(
       browser()->tab_strip_model()->GetActiveWebContents(), aborted_url);
 
-  chrome::NavigateParams params(browser(), aborted_url,
-                                ui::PAGE_TRANSITION_LINK);
-  chrome::Navigate(&params);
+  NavigateParams params(browser(), aborted_url, ui::PAGE_TRANSITION_LINK);
+  Navigate(&params);
   ASSERT_TRUE(manager.WaitForRequestStart());
   browser()->tab_strip_model()->GetActiveWebContents()->Stop();
 
diff --git a/chrome/browser/sync/test/integration/sessions_helper.cc b/chrome/browser/sync/test/integration/sessions_helper.cc
index 80a4219..3dfce0e 100644
--- a/chrome/browser/sync/test/integration/sessions_helper.cc
+++ b/chrome/browser/sync/test/integration/sessions_helper.cc
@@ -114,7 +114,7 @@
        it != urls.end(); ++it) {
     DVLOG(1) << "Opening tab: " << it->spec() << " using browser " << index
              << ".";
-    chrome::ShowSingletonTab(browser, *it);
+    ShowSingletonTab(browser, *it);
   }
   return WaitForTabsToLoad(index, urls);
 }
@@ -157,8 +157,8 @@
 }
 
 bool NavigateTab(int index, const GURL& url) {
-  chrome::NavigateParams params(test()->GetBrowser(index), url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(test()->GetBrowser(index), url,
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::CURRENT_TAB;
 
   ui_test_utils::NavigateToURL(&params);
diff --git a/chrome/browser/ui/android/tab_model/tab_model_list.cc b/chrome/browser/ui/android/tab_model/tab_model_list.cc
index 3decfffc..f60b966 100644
--- a/chrome/browser/ui/android/tab_model/tab_model_list.cc
+++ b/chrome/browser/ui/android/tab_model/tab_model_list.cc
@@ -54,7 +54,7 @@
   observers_.Get().RemoveObserver(observer);
 }
 
-void TabModelList::HandlePopupNavigation(chrome::NavigateParams* params) {
+void TabModelList::HandlePopupNavigation(NavigateParams* params) {
   TabAndroid* tab = TabAndroid::FromWebContents(params->source_contents);
 
   // NOTE: If this fails contact dtrainor@.
diff --git a/chrome/browser/ui/android/tab_model/tab_model_list.h b/chrome/browser/ui/android/tab_model/tab_model_list.h
index 329e59f..e599ffc 100644
--- a/chrome/browser/ui/android/tab_model/tab_model_list.h
+++ b/chrome/browser/ui/android/tab_model/tab_model_list.h
@@ -17,9 +17,7 @@
 class TabModel;
 class TabModelListObserver;
 
-namespace chrome {
 struct NavigateParams;
-}
 
 namespace content {
 class WebContents;
@@ -32,7 +30,7 @@
   typedef TabModelVector::iterator iterator;
   typedef TabModelVector::const_iterator const_iterator;
 
-  static void HandlePopupNavigation(chrome::NavigateParams* params);
+  static void HandlePopupNavigation(NavigateParams* params);
   static void AddTabModel(TabModel* tab_model);
   static void RemoveTabModel(TabModel* tab_model);
 
diff --git a/chrome/browser/ui/app_list/app_list_service_disabled.cc b/chrome/browser/ui/app_list/app_list_service_disabled.cc
index 9090317..b89ede2 100644
--- a/chrome/browser/ui/app_list/app_list_service_disabled.cc
+++ b/chrome/browser/ui/app_list/app_list_service_disabled.cc
@@ -102,10 +102,9 @@
     return;
   }
 
-  chrome::NavigateParams params(app_list_profile,
-                                GURL(chrome::kChromeUIAppsURL),
-                                ui::PAGE_TRANSITION_AUTO_BOOKMARK);
-  chrome::Navigate(&params);
+  NavigateParams params(app_list_profile, GURL(chrome::kChromeUIAppsURL),
+                        ui::PAGE_TRANSITION_AUTO_BOOKMARK);
+  Navigate(&params);
 }
 #endif
 
diff --git a/chrome/browser/ui/app_list/search/answer_card/answer_card_web_contents.cc b/chrome/browser/ui/app_list/search/answer_card/answer_card_web_contents.cc
index 0c7074b..0df759e 100644
--- a/chrome/browser/ui/app_list/search/answer_card/answer_card_web_contents.cc
+++ b/chrome/browser/ui/app_list/search/answer_card/answer_card_web_contents.cc
@@ -198,8 +198,7 @@
 
   // Open the user-clicked link in the browser taking into account the requested
   // disposition.
-  chrome::NavigateParams new_tab_params(profile_, params.url,
-                                        params.transition);
+  NavigateParams new_tab_params(profile_, params.url, params.transition);
 
   new_tab_params.disposition = params.disposition;
 
@@ -208,10 +207,10 @@
     // activated window with the new activated tab after the user closes the
     // launcher. So it's "background" relative to the launcher itself.
     new_tab_params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-    new_tab_params.window_action = chrome::NavigateParams::SHOW_WINDOW_INACTIVE;
+    new_tab_params.window_action = NavigateParams::SHOW_WINDOW_INACTIVE;
   }
 
-  chrome::Navigate(&new_tab_params);
+  Navigate(&new_tab_params);
 
   base::RecordAction(base::UserMetricsAction("SearchAnswer_OpenedUrl"));
 
diff --git a/chrome/browser/ui/app_list/search/common/webservice_search_provider.cc b/chrome/browser/ui/app_list/search/common/webservice_search_provider.cc
index 60b9c0ff..544a2af 100644
--- a/chrome/browser/ui/app_list/search/common/webservice_search_provider.cc
+++ b/chrome/browser/ui/app_list/search/common/webservice_search_provider.cc
@@ -14,6 +14,8 @@
 #include "chrome/browser/search/search.h"
 #include "chrome/browser/ui/app_list/search/common/webservice_cache.h"
 #include "chrome/browser/ui/app_list/search/common/webservice_cache_factory.h"
+#include "chrome/common/pref_names.h"
+#include "components/prefs/pref_service.h"
 #include "url/gurl.h"
 #include "url/url_constants.h"
 
@@ -24,6 +26,11 @@
 const int kWebserviceQueryThrottleIntrevalInMs = 100;
 const size_t kMinimumQueryLength = 3u;
 
+bool IsSuggestPrefEnabled(Profile* profile) {
+  return profile && !profile->IsOffTheRecord() && profile->GetPrefs() &&
+         profile->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled);
+}
+
 }  // namespace
 
 WebserviceSearchProvider::WebserviceSearchProvider(Profile* profile)
@@ -50,7 +57,7 @@
   // If |query| contains sensitive data, bail out and do not create the place
   // holder "search-web-store" result.
   if (IsSensitiveInput(query) || (query.size() < kMinimumQueryLength) ||
-      !search::IsSuggestPrefEnabled(profile_)) {
+      !IsSuggestPrefEnabled(profile_)) {
     return false;
   }
 
diff --git a/chrome/browser/ui/app_list/start_page_service.cc b/chrome/browser/ui/app_list/start_page_service.cc
index 51f5d1bf..6aecfd39 100644
--- a/chrome/browser/ui/app_list/start_page_service.cc
+++ b/chrome/browser/ui/app_list/start_page_service.cc
@@ -175,17 +175,17 @@
       const content::OpenURLParams& params) override {
     // Force all links to open in a new tab, even if they were trying to open a
     // window.
-    chrome::NavigateParams new_tab_params(
-        static_cast<Browser*>(nullptr), params.url, params.transition);
+    NavigateParams new_tab_params(static_cast<Browser*>(nullptr), params.url,
+                                  params.transition);
     if (params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB) {
       new_tab_params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
     } else {
       new_tab_params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-      new_tab_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+      new_tab_params.window_action = NavigateParams::SHOW_WINDOW;
     }
 
     new_tab_params.initiating_profile = profile_;
-    chrome::Navigate(&new_tab_params);
+    Navigate(&new_tab_params);
 
     return new_tab_params.target_contents;
   }
diff --git a/chrome/browser/ui/apps/chrome_app_delegate.cc b/chrome/browser/ui/apps/chrome_app_delegate.cc
index 4058377..f0147378 100644
--- a/chrome/browser/ui/apps/chrome_app_delegate.cc
+++ b/chrome/browser/ui/apps/chrome_app_delegate.cc
@@ -65,17 +65,17 @@
     const content::OpenURLParams& params) {
   // Force all links to open in a new tab, even if they were trying to open a
   // window.
-  chrome::NavigateParams new_tab_params(
-      static_cast<Browser*>(NULL), params.url, params.transition);
+  NavigateParams new_tab_params(static_cast<Browser*>(NULL), params.url,
+                                params.transition);
   if (params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB) {
     new_tab_params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
   } else {
     new_tab_params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-    new_tab_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+    new_tab_params.window_action = NavigateParams::SHOW_WINDOW;
   }
 
   new_tab_params.initiating_profile = Profile::FromBrowserContext(context);
-  chrome::Navigate(&new_tab_params);
+  Navigate(&new_tab_params);
 
   return new_tab_params.target_contents;
 }
diff --git a/chrome/browser/ui/ash/app_list/app_list_controller_ash.cc b/chrome/browser/ui/ash/app_list/app_list_controller_ash.cc
index 89ac548e..7187afe 100644
--- a/chrome/browser/ui/ash/app_list/app_list_controller_ash.cc
+++ b/chrome/browser/ui/ash/app_list/app_list_controller_ash.cc
@@ -82,9 +82,9 @@
                                            const GURL& url,
                                            ui::PageTransition transition,
                                            WindowOpenDisposition disposition) {
-  chrome::NavigateParams params(profile, url, transition);
+  NavigateParams params(profile, url, transition);
   params.disposition = disposition;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 void AppListControllerDelegateAsh::ActivateApp(
diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.cc b/chrome/browser/ui/ash/chrome_shell_delegate.cc
index 61b1598e..3a5e5fb 100644
--- a/chrome/browser/ui/ash/chrome_shell_delegate.cc
+++ b/chrome/browser/ui/ash/chrome_shell_delegate.cc
@@ -381,10 +381,10 @@
 
   browser->window()->Activate();
 
-  chrome::NavigateParams params(browser, GURL(kKeyboardShortcutHelpPageUrl),
-                                ui::PAGE_TRANSITION_AUTO_BOOKMARK);
+  NavigateParams params(browser, GURL(kKeyboardShortcutHelpPageUrl),
+                        ui::PAGE_TRANSITION_AUTO_BOOKMARK);
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 gfx::Image ChromeShellDelegate::GetDeprecatedAcceleratorImage() const {
diff --git a/chrome/browser/ui/ash/system_tray_client.cc b/chrome/browser/ui/ash/system_tray_client.cc
index c5bff24..048c1fc2 100644
--- a/chrome/browser/ui/ash/system_tray_client.cc
+++ b/chrome/browser/ui/ash/system_tray_client.cc
@@ -295,8 +295,7 @@
 void SystemTrayClient::ShowPaletteHelp() {
   chrome::ScopedTabbedBrowserDisplayer displayer(
       ProfileManager::GetActiveUserProfile());
-  chrome::ShowSingletonTab(displayer.browser(),
-                           GURL(chrome::kChromePaletteHelpURL));
+  ShowSingletonTab(displayer.browser(), GURL(chrome::kChromePaletteHelpURL));
 }
 
 void SystemTrayClient::ShowPaletteSettings() {
@@ -322,8 +321,7 @@
   // Otherwise show enterprise help in a browser tab.
   chrome::ScopedTabbedBrowserDisplayer displayer(
       ProfileManager::GetActiveUserProfile());
-  chrome::ShowSingletonTab(displayer.browser(),
-                           GURL(chrome::kLearnMoreEnterpriseURL));
+  ShowSingletonTab(displayer.browser(), GURL(chrome::kLearnMoreEnterpriseURL));
 }
 
 void SystemTrayClient::ShowNetworkConfigure(const std::string& network_id) {
diff --git a/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc b/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc
index 4154492d..ac5ab5b 100644
--- a/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc
+++ b/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc
@@ -225,12 +225,12 @@
 #if defined(OS_ANDROID)
   chrome::android::PreferencesLauncher::ShowPasswordSettings();
 #else
-  chrome::NavigateParams params(
+  NavigateParams params(
       chrome::FindBrowserWithWebContents(web_contents_),
       GURL(password_manager::kPasswordManagerAccountDashboardURL),
       ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 #endif
 }
 
diff --git a/chrome/browser/ui/blocked_content/blocked_window_params.cc b/chrome/browser/ui/blocked_content/blocked_window_params.cc
index 176ce79..5097b91 100644
--- a/chrome/browser/ui/blocked_content/blocked_window_params.cc
+++ b/chrome/browser/ui/blocked_content/blocked_window_params.cc
@@ -33,20 +33,19 @@
 
 BlockedWindowParams::~BlockedWindowParams() = default;
 
-chrome::NavigateParams BlockedWindowParams::CreateNavigateParams(
+NavigateParams BlockedWindowParams::CreateNavigateParams(
     content::WebContents* web_contents) const {
   GURL popup_url(target_url_);
   web_contents->GetMainFrame()->GetProcess()->FilterURL(false, &popup_url);
-  chrome::NavigateParams nav_params(
-      Profile::FromBrowserContext(web_contents->GetBrowserContext()),
-      popup_url,
+  NavigateParams nav_params(
+      Profile::FromBrowserContext(web_contents->GetBrowserContext()), popup_url,
       ui::PAGE_TRANSITION_LINK);
   nav_params.referrer = referrer_;
   nav_params.frame_name = frame_name_;
   nav_params.source_contents = web_contents;
   nav_params.is_renderer_initiated = true;
   nav_params.tabstrip_add_types = TabStripModel::ADD_ACTIVE;
-  nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  nav_params.window_action = NavigateParams::SHOW_WINDOW;
   nav_params.user_gesture = user_gesture_;
   nav_params.created_with_opener = !opener_suppressed_;
   nav_params.window_bounds = web_contents->GetContainerBounds();
diff --git a/chrome/browser/ui/blocked_content/blocked_window_params.h b/chrome/browser/ui/blocked_content/blocked_window_params.h
index 71508db..1c73104 100644
--- a/chrome/browser/ui/blocked_content/blocked_window_params.h
+++ b/chrome/browser/ui/blocked_content/blocked_window_params.h
@@ -27,8 +27,7 @@
   BlockedWindowParams(const BlockedWindowParams& other);
   ~BlockedWindowParams();
 
-  chrome::NavigateParams CreateNavigateParams(
-      content::WebContents* web_contents) const;
+  NavigateParams CreateNavigateParams(content::WebContents* web_contents) const;
 
   blink::mojom::WindowFeatures features() const { return features_; }
 
diff --git a/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc b/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc
index 80060f69..7a99c8f3 100644
--- a/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc
+++ b/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc
@@ -41,11 +41,11 @@
 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PopupBlockerTabHelper);
 
 struct PopupBlockerTabHelper::BlockedRequest {
-  BlockedRequest(const chrome::NavigateParams& params,
+  BlockedRequest(const NavigateParams& params,
                  const blink::mojom::WindowFeatures& window_features)
       : params(params), window_features(window_features) {}
 
-  chrome::NavigateParams params;
+  NavigateParams params;
   blink::mojom::WindowFeatures window_features;
 };
 
@@ -104,7 +104,7 @@
 bool PopupBlockerTabHelper::MaybeBlockPopup(
     content::WebContents* web_contents,
     const base::Optional<GURL>& opener_url,
-    const chrome::NavigateParams& params,
+    const NavigateParams& params,
     const content::OpenURLParams* open_url_params,
     const blink::mojom::WindowFeatures& window_features) {
   DCHECK(!open_url_params ||
@@ -158,7 +158,7 @@
 }
 
 void PopupBlockerTabHelper::AddBlockedPopup(
-    const chrome::NavigateParams& params,
+    const NavigateParams& params,
     const blink::mojom::WindowFeatures& window_features) {
   LogAction(Action::kBlocked);
   if (blocked_popups_.size() >= kMaximumNumberOfPopups)
@@ -194,7 +194,7 @@
 #if defined(OS_ANDROID)
   TabModelList::HandlePopupNavigation(&popup->params);
 #else
-  chrome::Navigate(&popup->params);
+  Navigate(&popup->params);
 #endif
   if (popup->params.target_contents) {
     PopupTracker::CreateForWebContents(popup->params.target_contents,
diff --git a/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.h b/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.h
index dc338d9d..244c31f 100644
--- a/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.h
+++ b/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.h
@@ -19,9 +19,7 @@
 #include "content/public/browser/web_contents_user_data.h"
 #include "ui/base/window_open_disposition.h"
 
-namespace chrome {
 struct NavigateParams;
-}
 
 namespace content {
 struct OpenURLParams;
@@ -95,7 +93,7 @@
   static bool MaybeBlockPopup(
       content::WebContents* web_contents,
       const base::Optional<GURL>& opener_url,
-      const chrome::NavigateParams& params,
+      const NavigateParams& params,
       const content::OpenURLParams* open_url_params,
       const blink::mojom::WindowFeatures& window_features);
 
@@ -119,7 +117,7 @@
 
   explicit PopupBlockerTabHelper(content::WebContents* web_contents);
 
-  void AddBlockedPopup(const chrome::NavigateParams& params,
+  void AddBlockedPopup(const NavigateParams& params,
                        const blink::mojom::WindowFeatures& window_features);
 
   // Called when the blocked popup notification is shown or hidden.
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 4a247ecb..a668eb2 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -906,11 +906,10 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-void Browser::UpdateUIForNavigationInTab(
-    WebContents* contents,
-    ui::PageTransition transition,
-    chrome::NavigateParams::WindowAction action,
-    bool user_initiated) {
+void Browser::UpdateUIForNavigationInTab(WebContents* contents,
+                                         ui::PageTransition transition,
+                                         NavigateParams::WindowAction action,
+                                         bool user_initiated) {
   tab_strip_model_->TabNavigating(contents, transition);
 
   bool contents_is_selected =
@@ -934,7 +933,7 @@
   ScheduleUIUpdate(contents, content::INVALIDATE_TYPE_URL);
 
   if (contents_is_selected &&
-      (window()->IsActive() || action == chrome::NavigateParams::SHOW_WINDOW)) {
+      (window()->IsActive() || action == NavigateParams::SHOW_WINDOW)) {
     contents->SetInitialFocus();
   }
 }
@@ -1446,12 +1445,12 @@
     return window->OpenURLFromTab(source, params);
   }
 
-  chrome::NavigateParams nav_params(this, params.url, params.transition);
-  FillNavigateParamsFromOpenURLParams(&nav_params, params);
+  NavigateParams nav_params(this, params.url, params.transition);
+  nav_params.FillNavigateParamsFromOpenURLParams(params);
   nav_params.source_contents = source;
   nav_params.tabstrip_add_types = TabStripModel::ADD_NONE;
   if (params.user_gesture)
-    nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+    nav_params.window_action = NavigateParams::SHOW_WINDOW;
   nav_params.user_gesture = params.user_gesture;
   bool is_popup = source && PopupBlockerTabHelper::ConsiderForPopupBlocking(
                                 params.disposition);
@@ -1461,7 +1460,7 @@
     return nullptr;
   }
 
-  chrome::Navigate(&nav_params);
+  Navigate(&nav_params);
 
   if (is_popup && nav_params.target_contents)
     PopupTracker::CreateForWebContents(nav_params.target_contents, source);
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index 3b0c514..5048162 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -413,11 +413,11 @@
 
   /////////////////////////////////////////////////////////////////////////////
 
-  // Called by chrome::Navigate() when a navigation has occurred in a tab in
+  // Called by Navigate() when a navigation has occurred in a tab in
   // this Browser. Updates the UI for the start of this navigation.
   void UpdateUIForNavigationInTab(content::WebContents* contents,
                                   ui::PageTransition transition,
-                                  chrome::NavigateParams::WindowAction action,
+                                  NavigateParams::WindowAction action,
                                   bool user_initiated);
 
   // Used to register a KeepAlive to affect the Chrome lifetime. The KeepAlive
diff --git a/chrome/browser/ui/browser_focus_uitest.cc b/chrome/browser/ui/browser_focus_uitest.cc
index e4234a9..8178c11 100644
--- a/chrome/browser/ui/browser_focus_uitest.cc
+++ b/chrome/browser/ui/browser_focus_uitest.cc
@@ -645,10 +645,10 @@
   GURL url2("http://maps.google.com/");
 
   // Navigate to url.
-  chrome::NavigateParams p(browser(), url, ui::PAGE_TRANSITION_LINK);
-  p.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  NavigateParams p(browser(), url, ui::PAGE_TRANSITION_LINK);
+  p.window_action = NavigateParams::SHOW_WINDOW;
   p.disposition = WindowOpenDisposition::CURRENT_TAB;
-  chrome::Navigate(&p);
+  Navigate(&p);
 
   // Focus the omnibox.
   chrome::FocusLocationBar(browser());
diff --git a/chrome/browser/ui/browser_navigator.cc b/chrome/browser/ui/browser_navigator.cc
index 4077120c6..f30f6f10 100644
--- a/chrome/browser/ui/browser_navigator.cc
+++ b/chrome/browser/ui/browser_navigator.cc
@@ -95,10 +95,9 @@
 // technically an incognito window, these URLs are allowed.
 // Returns true on success. Otherwise, if changing params leads the browser into
 // an erroneous state, returns false.
-bool AdjustNavigateParamsForURL(chrome::NavigateParams* params) {
+bool AdjustNavigateParamsForURL(NavigateParams* params) {
   if (params->target_contents != NULL ||
-      chrome::IsURLAllowedInIncognito(params->url,
-                                      params->initiating_profile) ||
+      IsURLAllowedInIncognito(params->url, params->initiating_profile) ||
       params->initiating_profile->IsGuestSession()) {
     return true;
   }
@@ -118,7 +117,7 @@
 
     params->disposition = WindowOpenDisposition::SINGLETON_TAB;
     params->browser = GetOrCreateBrowser(profile, params->user_gesture);
-    params->window_action = chrome::NavigateParams::SHOW_WINDOW;
+    params->window_action = NavigateParams::SHOW_WINDOW;
   }
 
   return true;
@@ -127,7 +126,7 @@
 // Returns a Browser that can host the navigation or tab addition specified in
 // |params|. This might just return the same Browser specified in |params|, or
 // some other if that Browser is deemed incompatible.
-Browser* GetBrowserForDisposition(chrome::NavigateParams* params) {
+Browser* GetBrowserForDisposition(NavigateParams* params) {
   // If no source WebContents was specified, we use the selected one from
   // the target browser. This must happen first, before
   // GetBrowserForDisposition() has a chance to replace |params->browser| with
@@ -206,7 +205,7 @@
 
 // Fix disposition and other parameter values depending on prevailing
 // conditions.
-void NormalizeDisposition(chrome::NavigateParams* params) {
+void NormalizeDisposition(NavigateParams* params) {
   // Calculate the WindowOpenDisposition if necessary.
   if (params->browser->tab_strip_model()->empty() &&
       (params->disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB ||
@@ -234,8 +233,8 @@
     case WindowOpenDisposition::NEW_POPUP: {
       // Code that wants to open a new window typically expects it to be shown
       // automatically.
-      if (params->window_action == chrome::NavigateParams::NO_ACTION)
-        params->window_action = chrome::NavigateParams::SHOW_WINDOW;
+      if (params->window_action == NavigateParams::NO_ACTION)
+        params->window_action = NavigateParams::SHOW_WINDOW;
       // Fall-through.
     }
     case WindowOpenDisposition::NEW_FOREGROUND_TAB:
@@ -249,7 +248,7 @@
 }
 
 // Obtain the profile used by the code that originated the Navigate() request.
-Profile* GetSourceProfile(chrome::NavigateParams* params) {
+Profile* GetSourceProfile(NavigateParams* params) {
   // |source_site_instance| needs to be checked before |source_contents|. This
   // might matter when chrome.windows.create is used to open multiple URLs,
   // which would reuse |params| and modify |params->source_contents| across
@@ -269,7 +268,7 @@
 
 void LoadURLInContents(WebContents* target_contents,
                        const GURL& url,
-                       chrome::NavigateParams* params) {
+                       NavigateParams* params) {
   NavigationController::LoadURLParams load_url_params(url);
   load_url_params.source_site_instance = params->source_site_instance;
   load_url_params.referrer = params->referrer;
@@ -295,14 +294,11 @@
 // by the time it goes out of scope, provided |params| wants it to be shown.
 class ScopedBrowserShower {
  public:
-  explicit ScopedBrowserShower(chrome::NavigateParams* params)
-      : params_(params) {
-  }
+  explicit ScopedBrowserShower(NavigateParams* params) : params_(params) {}
   ~ScopedBrowserShower() {
-    if (params_->window_action ==
-        chrome::NavigateParams::SHOW_WINDOW_INACTIVE) {
+    if (params_->window_action == NavigateParams::SHOW_WINDOW_INACTIVE) {
       params_->browser->window()->ShowInactive();
-    } else if (params_->window_action == chrome::NavigateParams::SHOW_WINDOW) {
+    } else if (params_->window_action == NavigateParams::SHOW_WINDOW) {
       BrowserWindow* window = params_->browser->window();
       window->Show();
       // If a user gesture opened a popup window, focus the contents.
@@ -316,7 +312,7 @@
   }
 
  private:
-  chrome::NavigateParams* params_;
+  NavigateParams* params_;
   DISALLOW_COPY_AND_ASSIGN(ScopedBrowserShower);
 };
 
@@ -329,9 +325,8 @@
 // avoid a leak and the params->target_contents field is set to NULL.
 class ScopedTargetContentsOwner {
  public:
-  explicit ScopedTargetContentsOwner(chrome::NavigateParams* params)
-      : params_(params) {
-  }
+  explicit ScopedTargetContentsOwner(NavigateParams* params)
+      : params_(params) {}
   ~ScopedTargetContentsOwner() {
     if (target_contents_owner_.get())
       params_->target_contents = NULL;
@@ -349,12 +344,12 @@
   }
 
  private:
-  chrome::NavigateParams* params_;
+  NavigateParams* params_;
   std::unique_ptr<WebContents> target_contents_owner_;
   DISALLOW_COPY_AND_ASSIGN(ScopedTargetContentsOwner);
 };
 
-content::WebContents* CreateTargetContents(const chrome::NavigateParams& params,
+content::WebContents* CreateTargetContents(const NavigateParams& params,
                                            const GURL& url) {
   // Always create the new WebContents in a new SiteInstance (and therefore a
   // new BrowsingInstance), *unless* there's a |params.opener|.
@@ -412,7 +407,7 @@
 // If a prerendered page exists for |url|, replace the page at
 // |params->target_contents| with it and update to point to the swapped-in
 // WebContents.
-bool SwapInPrerender(const GURL& url, chrome::NavigateParams* params) {
+bool SwapInPrerender(const GURL& url, NavigateParams* params) {
   Profile* profile =
       Profile::FromBrowserContext(params->target_contents->GetBrowserContext());
   prerender::PrerenderManager* prerender_manager =
@@ -423,9 +418,6 @@
 
 }  // namespace
 
-
-namespace chrome {
-
 void Navigate(NavigateParams* params) {
   Browser* source_browser = params->browser;
   if (source_browser)
@@ -540,7 +532,7 @@
                                    ui::PAGE_TRANSITION_KEYWORD);
 
   // Check if this is a singleton tab that already exists
-  int singleton_index = chrome::GetIndexOfSingletonTab(params);
+  int singleton_index = GetIndexOfSingletonTab(params);
 
   // Did we use a prerender?
   bool swapped_in_prerender = false;
@@ -697,5 +689,3 @@
   return !(rewritten_url.scheme_piece() == content::kChromeUIScheme &&
            rewritten_url.host_piece() == chrome::kChromeUIUberHost);
 }
-
-}  // namespace chrome
diff --git a/chrome/browser/ui/browser_navigator.h b/chrome/browser/ui/browser_navigator.h
index ccdbfbd..b2fcc42 100644
--- a/chrome/browser/ui/browser_navigator.h
+++ b/chrome/browser/ui/browser_navigator.h
@@ -11,8 +11,6 @@
 class BrowserContext;
 }
 
-namespace chrome {
-
 struct NavigateParams;
 
 // Navigates according to the configuration specified in |params|.
@@ -22,6 +20,4 @@
 bool IsURLAllowedInIncognito(const GURL& url,
                              content::BrowserContext* browser_context);
 
-}  // namespace chrome
-
 #endif  // CHROME_BROWSER_UI_BROWSER_NAVIGATOR_H_
diff --git a/chrome/browser/ui/browser_navigator_browsertest.cc b/chrome/browser/ui/browser_navigator_browsertest.cc
index 3a72fb6..29baffba 100644
--- a/chrome/browser/ui/browser_navigator_browsertest.cc
+++ b/chrome/browser/ui/browser_navigator_browsertest.cc
@@ -84,22 +84,21 @@
 
 }  // namespace
 
-chrome::NavigateParams BrowserNavigatorTest::MakeNavigateParams() const {
+NavigateParams BrowserNavigatorTest::MakeNavigateParams() const {
   return MakeNavigateParams(browser());
 }
 
-chrome::NavigateParams BrowserNavigatorTest::MakeNavigateParams(
+NavigateParams BrowserNavigatorTest::MakeNavigateParams(
     Browser* browser) const {
-  chrome::NavigateParams params(browser, GetGoogleURL(),
-                                ui::PAGE_TRANSITION_LINK);
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  NavigateParams params(browser, GetGoogleURL(), ui::PAGE_TRANSITION_LINK);
+  params.window_action = NavigateParams::SHOW_WINDOW;
   return params;
 }
 
 bool BrowserNavigatorTest::OpenPOSTURLInNewForegroundTabAndGetTitle(
     const GURL& url, const std::string& post_data, bool is_browser_initiated,
     base::string16* title) {
-  chrome::NavigateParams param(MakeNavigateParams());
+  NavigateParams param(MakeNavigateParams());
   param.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   param.url = url;
   param.is_renderer_initiated = !is_browser_initiated;
@@ -152,9 +151,9 @@
 
 void BrowserNavigatorTest::RunSuppressTest(WindowOpenDisposition disposition) {
   GURL old_url = browser()->tab_strip_model()->GetActiveWebContents()->GetURL();
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = disposition;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Nothing should have happened as a result of Navigate();
   EXPECT_EQ(1, browser()->tab_strip_model()->count());
@@ -171,11 +170,11 @@
   EXPECT_EQ(1, incognito_browser->tab_strip_model()->count());
 
   // Navigate to the page.
-  chrome::NavigateParams params(MakeNavigateParams(incognito_browser));
+  NavigateParams params(MakeNavigateParams(incognito_browser));
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = url;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 
   // This page should be opened in browser() window.
   EXPECT_NE(incognito_browser, params.browser);
@@ -198,11 +197,11 @@
                      IncognitoModePrefs::FORCED);
 
   // Navigate to the page.
-  chrome::NavigateParams params(MakeNavigateParams(browser));
+  NavigateParams params(MakeNavigateParams(browser));
   params.disposition = WindowOpenDisposition::OFF_THE_RECORD;
   params.url = url;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 
   // The page should not be opened.
   EXPECT_EQ(browser, params.browser);
@@ -262,10 +261,10 @@
       created_tab_contents_count_ = 0;
 
   // Navigate to singleton_url1.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_url1;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // The middle tab should now be selected.
   EXPECT_EQ(browser(), params.browser);
@@ -291,10 +290,10 @@
   EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
 
   // Navigate to singleton_url2.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_ref_url2;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // We should now have 2 tabs, the 2nd one selected.
   EXPECT_EQ(browser(), params.browser);
@@ -305,8 +304,8 @@
   params = MakeNavigateParams();
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_ref_url2;
-  params.ref_behavior = chrome::NavigateParams::RESPECT_REF;
-  chrome::Navigate(&params);
+  params.ref_behavior = NavigateParams::RESPECT_REF;
+  Navigate(&params);
 
   // We should now have 3 tabs, the 3th one selected.
   EXPECT_EQ(browser(), params.browser);
@@ -317,8 +316,8 @@
   params = MakeNavigateParams();
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_ref_url3;
-  params.ref_behavior = chrome::NavigateParams::RESPECT_REF;
-  chrome::Navigate(&params);
+  params.ref_behavior = NavigateParams::RESPECT_REF;
+  Navigate(&params);
 
   // We should now have 4 tabs, the 4th one selected.
   EXPECT_EQ(browser(), params.browser);
@@ -335,10 +334,10 @@
   EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
 
   // Navigate to singleton_url1.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_url1;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // We should now have 2 tabs, the 2nd one selected.
   EXPECT_EQ(browser(), params.browser);
@@ -352,9 +351,9 @@
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewForegroundTab) {
   WebContents* old_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
   EXPECT_NE(old_contents,
             browser()->tab_strip_model()->GetActiveWebContents());
   EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents(),
@@ -367,9 +366,9 @@
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewBackgroundTab) {
   WebContents* old_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
   WebContents* new_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
   // The selected tab should have remained unchanged, since the new tab was
@@ -387,9 +386,9 @@
   // existing compatible window somewhere else that they can be opened within.
   Browser* popup = CreateEmptyBrowserForType(Browser::TYPE_POPUP,
                                              browser()->profile());
-  chrome::NavigateParams params(MakeNavigateParams(popup));
+  NavigateParams params(MakeNavigateParams(popup));
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened the tab in a different browser since the
   // one we supplied didn't support additional tabs.
@@ -420,9 +419,9 @@
   Browser* popup = CreateEmptyBrowserForType(
       Browser::TYPE_POPUP,
       browser()->profile()->GetOffTheRecordProfile());
-  chrome::NavigateParams params(MakeNavigateParams(popup));
+  NavigateParams params(MakeNavigateParams(popup));
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened the tab in a different browser since the
   // one we supplied didn't support additional tabs.
@@ -446,7 +445,7 @@
 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP
 // from a normal Browser results in a new Browser with TYPE_POPUP.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.window_bounds = gfx::Rect(0, 0, 200, 200);
   // Wait for new popup to to load and gain focus.
@@ -471,7 +470,7 @@
 // This test verifies that navigating with WindowOpenDisposition = NEW_POPUP
 // from a normal Browser results in a new Browser with is_app() true.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup_ExtensionId) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.extension_app_id = "extensionappid";
   params.window_bounds = gfx::Rect(0, 0, 200, 200);
@@ -494,15 +493,15 @@
 // from a normal popup results in a new Browser with TYPE_POPUP.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupFromPopup) {
   // Open a popup.
-  chrome::NavigateParams params1(MakeNavigateParams());
+  NavigateParams params1(MakeNavigateParams());
   params1.disposition = WindowOpenDisposition::NEW_POPUP;
   params1.window_bounds = gfx::Rect(0, 0, 200, 200);
-  chrome::Navigate(&params1);
+  Navigate(&params1);
   // Open another popup.
-  chrome::NavigateParams params2(MakeNavigateParams(params1.browser));
+  NavigateParams params2(MakeNavigateParams(params1.browser));
   params2.disposition = WindowOpenDisposition::NEW_POPUP;
   params2.window_bounds = gfx::Rect(0, 0, 200, 200);
-  chrome::Navigate(&params2);
+  Navigate(&params2);
 
   // Navigate() should have opened a new normal popup window.
   EXPECT_NE(params1.browser, params2.browser);
@@ -522,10 +521,10 @@
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
                        Disposition_NewPopupFromAppWindow) {
   Browser* app_browser = CreateEmptyBrowserForApp(browser()->profile());
-  chrome::NavigateParams params(MakeNavigateParams(app_browser));
+  NavigateParams params(MakeNavigateParams(app_browser));
   params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.window_bounds = gfx::Rect(0, 0, 200, 200);
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened a new popup app window.
   EXPECT_NE(app_browser, params.browser);
@@ -547,15 +546,15 @@
                        Disposition_NewPopupFromAppPopup) {
   Browser* app_browser = CreateEmptyBrowserForApp(browser()->profile());
   // Open an app popup.
-  chrome::NavigateParams params1(MakeNavigateParams(app_browser));
+  NavigateParams params1(MakeNavigateParams(app_browser));
   params1.disposition = WindowOpenDisposition::NEW_POPUP;
   params1.window_bounds = gfx::Rect(0, 0, 200, 200);
-  chrome::Navigate(&params1);
+  Navigate(&params1);
   // Now open another app popup.
-  chrome::NavigateParams params2(MakeNavigateParams(params1.browser));
+  NavigateParams params2(MakeNavigateParams(params1.browser));
   params2.disposition = WindowOpenDisposition::NEW_POPUP;
   params2.window_bounds = gfx::Rect(0, 0, 200, 200);
-  chrome::Navigate(&params2);
+  Navigate(&params2);
 
   // Navigate() should have opened a new popup app window.
   EXPECT_NE(browser(), params1.browser);
@@ -582,10 +581,10 @@
 // This test verifies that navigating with window_action = SHOW_WINDOW_INACTIVE
 // does not focus a new new popup window.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupUnfocused) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.window_bounds = gfx::Rect(0, 0, 200, 200);
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW_INACTIVE;
+  params.window_action = NavigateParams::SHOW_WINDOW_INACTIVE;
   // Wait for new popup to load (and gain focus if the test fails).
   ui_test_utils::NavigateToURL(&params);
 
@@ -602,7 +601,7 @@
 // and trusted_source = true results in a new Browser where is_trusted_source()
 // is true.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupTrusted) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.trusted_source = true;
   params.window_bounds = gfx::Rect(0, 0, 200, 200);
@@ -619,9 +618,9 @@
 // This test verifies that navigating with WindowOpenDisposition = NEW_WINDOW
 // always opens a new window.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewWindow) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_WINDOW;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened a new toplevel window.
   EXPECT_NE(browser(), params.browser);
@@ -643,9 +642,9 @@
 // This test verifies that navigating with WindowOpenDisposition = INCOGNITO
 // opens a new incognito window if no existing incognito window is present.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, MAYBE_Disposition_Incognito) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::OFF_THE_RECORD;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened a new toplevel incognito window.
   EXPECT_NE(browser(), params.browser);
@@ -669,9 +668,9 @@
   Browser* incognito_browser =
       CreateEmptyBrowserForType(Browser::TYPE_TABBED,
                                 browser()->profile()->GetOffTheRecordProfile());
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::OFF_THE_RECORD;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened a new tab in the existing incognito window.
   EXPECT_NE(browser(), params.browser);
@@ -698,10 +697,10 @@
 
 // This tests adding a foreground tab with a predefined WebContents.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, TargetContents_ForegroundTab) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.target_contents = CreateWebContents(false);
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened the contents in a new foreground tab in the
   // current Browser.
@@ -717,11 +716,11 @@
 #if defined(OS_WIN)
 // This tests adding a popup with a predefined WebContents.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, DISABLED_TargetContents_Popup) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.target_contents = CreateWebContents(false);
   params.window_bounds = gfx::Rect(10, 10, 500, 500);
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened a new popup window.
   EXPECT_NE(browser(), params.browser);
@@ -757,7 +756,7 @@
 // RenderFrame without navigating it.
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
                        CreateWebContentsWithRendererProcess) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.target_contents = CreateWebContents(true);
   ASSERT_TRUE(params.target_contents);
@@ -779,7 +778,7 @@
   EXPECT_NE(browser()->tab_strip_model()->GetActiveWebContents(),
             params.target_contents);
 
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have opened the contents in a new foreground tab in the
   // current Browser, without changing the renderer process of target_contents.
@@ -800,11 +799,11 @@
   // implementation of the browser observes the insertion index. That is
   // covered by the unit tests for TabStripModel. This merely verifies that
   // insertion index preference is reflected in common cases.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.tabstrip_index = 0;
   params.tabstrip_add_types = TabStripModel::ADD_FORCE_INDEX;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Navigate() should have inserted a new tab at slot 0 in the tabstrip.
   EXPECT_EQ(browser(), params.browser);
@@ -830,12 +829,12 @@
   EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
 
   // Navigate to a new singleton tab with a sub-page.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = GetContentSettingsURL();
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  Navigate(&params);
 
   // The last tab should now be selected and navigated to the sub-page of the
   // URL.
@@ -864,12 +863,12 @@
   EXPECT_EQ(2, browser()->tab_strip_model()->active_index());
 
   // Navigate to singleton_url1.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = GetContentSettingsURL();
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  Navigate(&params);
 
   // The middle tab should now be selected and navigated to the sub-page of the
   // URL.
@@ -898,12 +897,12 @@
   EXPECT_EQ(2, browser()->tab_strip_model()->active_index());
 
   // Navigate to singleton_url1.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = GetClearBrowsingDataURL();
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  Navigate(&params);
 
   // The middle tab should now be selected and navigated to the sub-page of the
   // URL.
@@ -932,12 +931,12 @@
   EXPECT_EQ(2, browser()->tab_strip_model()->active_index());
 
   // Navigate to singleton_url1.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = GetClearBrowsingDataURL();
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_STAY_PUT;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_STAY_PUT;
+  Navigate(&params);
 
   // The middle tab should now be selected.
   EXPECT_EQ(browser(), params.browser);
@@ -964,12 +963,12 @@
 
   // Navigate to a different settings path.
   GURL singleton_url_target(GetClearBrowsingDataURL());
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_url_target;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  Navigate(&params);
 
   // The second tab should still be selected, but navigated to the new path.
   EXPECT_EQ(browser(), params.browser);
@@ -997,12 +996,12 @@
   GURL singleton_url_target(
       "chrome://settings/internet?"
       "guid=ethernet_00aa00aa00aa&networkType=1");
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_url_target;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  Navigate(&params);
 
   // Last tab should still be selected.
   EXPECT_EQ(browser(), params.browser);
@@ -1045,14 +1044,14 @@
 // Disabled until fixed for uber settings: http://crbug.com/111243
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
     DISABLED_Disposition_Settings_UseNonIncognitoWindowForBookmark) {
-  chrome::NavigateParams params(browser(), GetSettingsURL(),
-                                ui::PAGE_TRANSITION_AUTO_BOOKMARK);
+  NavigateParams params(browser(), GetSettingsURL(),
+                        ui::PAGE_TRANSITION_AUTO_BOOKMARK);
   params.disposition = WindowOpenDisposition::OFF_THE_RECORD;
   {
     content::WindowedNotificationObserver observer(
         content::NOTIFICATION_LOAD_STOP,
         content::NotificationService::AllSources());
-    chrome::Navigate(&params);
+    Navigate(&params);
     observer.Wait();
   }
 
@@ -1105,11 +1104,11 @@
   web_contents->SetIsCrashed(base::TERMINATION_STATUS_PROCESS_CRASHED, -1);
   EXPECT_TRUE(web_contents->IsCrashed());
 
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = singleton_url;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
   ui_test_utils::NavigateToURL(&params);
 
   // The tab should not be sad anymore.
@@ -1133,7 +1132,7 @@
 
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
                        NavigateFromBlankToOptionsInSameTab) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.url = GURL(url::kAboutBlankURL);
   ui_test_utils::NavigateToURL(&params);
 
@@ -1152,7 +1151,7 @@
 
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
                        NavigateFromNTPToOptionsInSameTab) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.url = GURL(chrome::kChromeUINewTabURL);
   ui_test_utils::NavigateToURL(&params);
   EXPECT_EQ(1, browser()->tab_strip_model()->count());
@@ -1174,7 +1173,7 @@
 
 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
                        NavigateFromPageToOptionsInNewTab) {
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   ui_test_utils::NavigateToURL(&params);
   EXPECT_EQ(GetGoogleURL(),
             browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
@@ -1358,16 +1357,16 @@
                        NavigateWithoutBrowser) {
   // First navigate using the profile of the existing browser window, and
   // check that the window is reused.
-  chrome::NavigateParams params(browser()->profile(), GetGoogleURL(),
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser()->profile(), GetGoogleURL(),
+                        ui::PAGE_TRANSITION_LINK);
   ui_test_utils::NavigateToURL(&params);
   EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
 
   // Now navigate using the incognito profile and check that a new window
   // is created.
-  chrome::NavigateParams params_incognito(
-      browser()->profile()->GetOffTheRecordProfile(),
-      GetGoogleURL(), ui::PAGE_TRANSITION_LINK);
+  NavigateParams params_incognito(
+      browser()->profile()->GetOffTheRecordProfile(), GetGoogleURL(),
+      ui::PAGE_TRANSITION_LINK);
   ui_test_utils::NavigateToURL(&params_incognito);
   EXPECT_EQ(2u, chrome::GetTotalBrowserCount());
 }
@@ -1377,16 +1376,14 @@
       std::string(content::kViewSourceScheme) + ":" +
       chrome::kChromeUIVersionURL;
 
-  chrome::NavigateParams viewsource_params(browser(),
-                                           GURL(viewsource_ntp_url),
-                                           ui::PAGE_TRANSITION_LINK);
+  NavigateParams viewsource_params(browser(), GURL(viewsource_ntp_url),
+                                   ui::PAGE_TRANSITION_LINK);
   ui_test_utils::NavigateToURL(&viewsource_params);
 
-  chrome::NavigateParams singleton_params(browser(),
-                                          GURL(chrome::kChromeUIVersionURL),
-                                          ui::PAGE_TRANSITION_LINK);
+  NavigateParams singleton_params(browser(), GURL(chrome::kChromeUIVersionURL),
+                                  ui::PAGE_TRANSITION_LINK);
   singleton_params.disposition = WindowOpenDisposition::SINGLETON_TAB;
-  EXPECT_EQ(-1, chrome::GetIndexOfSingletonTab(&singleton_params));
+  EXPECT_EQ(-1, GetIndexOfSingletonTab(&singleton_params));
 }
 
 // This test verifies that browser initiated navigations can send requests
@@ -1441,10 +1438,10 @@
                              escaped_title + "</title></html>";
 
   // Navigate to the page.
-  chrome::NavigateParams params(MakeNavigateParams());
+  NavigateParams params(MakeNavigateParams());
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.url = GURL(data_url);
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  params.window_action = NavigateParams::SHOW_WINDOW;
   ui_test_utils::NavigateToURL(&params);
 
   base::string16 expected_title(base::UTF8ToUTF16(unescaped_title));
diff --git a/chrome/browser/ui/browser_navigator_browsertest.h b/chrome/browser/ui/browser_navigator_browsertest.h
index 6c9f102..37d7a9d 100644
--- a/chrome/browser/ui/browser_navigator_browsertest.h
+++ b/chrome/browser/ui/browser_navigator_browsertest.h
@@ -26,8 +26,8 @@
 class BrowserNavigatorTest : public InProcessBrowserTest,
                              public content::NotificationObserver {
  protected:
-  chrome::NavigateParams MakeNavigateParams() const;
-  chrome::NavigateParams MakeNavigateParams(Browser* browser) const;
+  NavigateParams MakeNavigateParams() const;
+  NavigateParams MakeNavigateParams(Browser* browser) const;
 
   Browser* CreateEmptyBrowserForType(Browser::Type type, Profile* profile);
   Browser* CreateEmptyBrowserForApp(Profile* profile);
diff --git a/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc b/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc
index 5580941c..2f1e2926 100644
--- a/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc
+++ b/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc
@@ -81,12 +81,12 @@
   EXPECT_EQ(1, incognito_browser->tab_strip_model()->count());
 
   // Navigate to the settings page.
-  chrome::NavigateParams params(MakeNavigateParams(incognito_browser));
+  NavigateParams params(MakeNavigateParams(incognito_browser));
   params.disposition = WindowOpenDisposition::SINGLETON_TAB;
   params.url = GURL("chrome://chrome/settings");
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  Navigate(&params);
 
   // Settings page should be opened in incognito window.
   EXPECT_NE(browser(), params.browser);
@@ -112,13 +112,13 @@
     EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
 
     // Navigate to the settings page.
-    chrome::NavigateParams params(MakeNavigateParams(browser()));
+    NavigateParams params(MakeNavigateParams(browser()));
     params.disposition = WindowOpenDisposition::NEW_POPUP;
     params.url = GURL("chrome://chrome/settings");
-    params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-    params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
+    params.window_action = NavigateParams::SHOW_WINDOW;
+    params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
     params.browser = browser();
-    chrome::Navigate(&params);
+    Navigate(&params);
 
     EXPECT_EQ(2u, chrome::GetTotalBrowserCount());
 
@@ -136,13 +136,13 @@
         new TestMultiUserWindowManager(browser(), browser_owner);
 
     // Navigate to the settings page.
-    chrome::NavigateParams params(MakeNavigateParams(browser()));
+    NavigateParams params(MakeNavigateParams(browser()));
     params.disposition = WindowOpenDisposition::NEW_POPUP;
     params.url = GURL("chrome://chrome/settings");
-    params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-    params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
+    params.window_action = NavigateParams::SHOW_WINDOW;
+    params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
     params.browser = browser();
-    chrome::Navigate(&params);
+    Navigate(&params);
 
     EXPECT_EQ(3u, chrome::GetTotalBrowserCount());
 
diff --git a/chrome/browser/ui/browser_navigator_params.cc b/chrome/browser/ui/browser_navigator_params.cc
index 43e9569..26ac6a5 100644
--- a/chrome/browser/ui/browser_navigator_params.cc
+++ b/chrome/browser/ui/browser_navigator_params.cc
@@ -16,8 +16,6 @@
 using content::NavigationController;
 using content::WebContents;
 
-namespace chrome {
-
 #if defined(OS_ANDROID)
 NavigateParams::NavigateParams(WebContents* a_target_contents)
     : target_contents(a_target_contents) {}
@@ -45,21 +43,18 @@
 
 NavigateParams::~NavigateParams() {}
 
-void FillNavigateParamsFromOpenURLParams(NavigateParams* nav_params,
-                                         const content::OpenURLParams& params) {
-  nav_params->referrer = params.referrer;
-  nav_params->source_site_instance = params.source_site_instance;
-  nav_params->frame_tree_node_id = params.frame_tree_node_id;
-  nav_params->redirect_chain = params.redirect_chain;
-  nav_params->extra_headers = params.extra_headers;
-  nav_params->disposition = params.disposition;
-  nav_params->trusted_source = false;
-  nav_params->is_renderer_initiated = params.is_renderer_initiated;
-  nav_params->should_replace_current_entry =
-      params.should_replace_current_entry;
-  nav_params->uses_post = params.uses_post;
-  nav_params->post_data = params.post_data;
-  nav_params->started_from_context_menu = params.started_from_context_menu;
+void NavigateParams::FillNavigateParamsFromOpenURLParams(
+    const content::OpenURLParams& params) {
+  this->referrer = params.referrer;
+  this->source_site_instance = params.source_site_instance;
+  this->frame_tree_node_id = params.frame_tree_node_id;
+  this->redirect_chain = params.redirect_chain;
+  this->extra_headers = params.extra_headers;
+  this->disposition = params.disposition;
+  this->trusted_source = false;
+  this->is_renderer_initiated = params.is_renderer_initiated;
+  this->should_replace_current_entry = params.should_replace_current_entry;
+  this->uses_post = params.uses_post;
+  this->post_data = params.post_data;
+  this->started_from_context_menu = params.started_from_context_menu;
 }
-
-}  // namespace chrome
diff --git a/chrome/browser/ui/browser_navigator_params.h b/chrome/browser/ui/browser_navigator_params.h
index d79db8e..1403597c 100644
--- a/chrome/browser/ui/browser_navigator_params.h
+++ b/chrome/browser/ui/browser_navigator_params.h
@@ -29,27 +29,25 @@
 struct OpenURLParams;
 }
 
-namespace chrome {
-
 // Parameters that tell Navigate() what to do.
 //
 // Some basic examples:
 //
 // Simple Navigate to URL in current tab:
-// chrome::NavigateParams params(browser, GURL("http://www.google.com/"),
+// NavigateParams params(browser, GURL("http://www.google.com/"),
 //                               ui::PAGE_TRANSITION_LINK);
-// chrome::Navigate(&params);
+// Navigate(&params);
 //
 // Open bookmark in new background tab:
-// chrome::NavigateParams params(browser, url,
+// NavigateParams params(browser, url,
 //                               ui::PAGE_TRANSITION_AUTO_BOOKMARK);
 // params.disposition = NEW_BACKGROUND_TAB;
-// chrome::Navigate(&params);
+// Navigate(&params);
 //
 // Opens a popup WebContents:
-// chrome::NavigateParams params(browser, popup_contents);
+// NavigateParams params(browser, popup_contents);
 // params.source_contents = source_contents;
-// chrome::Navigate(&params);
+// Navigate(&params);
 //
 // See browser_navigator_browsertest.cc for more examples.
 
@@ -70,6 +68,10 @@
   NavigateParams(const NavigateParams& other);
   ~NavigateParams();
 
+  // Copies fields from |params| struct to |nav_params| struct.
+  void FillNavigateParamsFromOpenURLParams(
+      const content::OpenURLParams& params);
+
   // The URL/referrer to be loaded. Ignored if |target_contents| is non-NULL.
   GURL url;
   content::Referrer referrer;
@@ -247,10 +249,4 @@
   NavigateParams();
 };
 
-// Copies fields from |params| struct to |nav_params| struct.
-void FillNavigateParamsFromOpenURLParams(chrome::NavigateParams* nav_params,
-                                         const content::OpenURLParams& params);
-
-}  // namespace chrome
-
 #endif  // CHROME_BROWSER_UI_BROWSER_NAVIGATOR_PARAMS_H_
diff --git a/chrome/browser/ui/browser_tabstrip.cc b/chrome/browser/ui/browser_tabstrip.cc
index c0b4916..4db66846 100644
--- a/chrome/browser/ui/browser_tabstrip.cc
+++ b/chrome/browser/ui/browser_tabstrip.cc
@@ -24,13 +24,13 @@
   // WebContents, but we want to include the time it takes to create the
   // WebContents object too.
   base::TimeTicks new_tab_start_time = base::TimeTicks::Now();
-  chrome::NavigateParams params(browser,
-      url.is_empty() ? GURL(chrome::kChromeUINewTabURL) : url,
-      ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser,
+                        url.is_empty() ? GURL(chrome::kChromeUINewTabURL) : url,
+                        ui::PAGE_TRANSITION_TYPED);
   params.disposition = foreground ? WindowOpenDisposition::NEW_FOREGROUND_TAB
                                   : WindowOpenDisposition::NEW_BACKGROUND_TAB;
   params.tabstrip_index = idx;
-  chrome::Navigate(&params);
+  Navigate(&params);
   CoreTabHelper* core_tab_helper =
       CoreTabHelper::FromWebContents(params.target_contents);
   core_tab_helper->set_new_tab_start_time(new_tab_start_time);
diff --git a/chrome/browser/ui/cocoa/applescript/window_applescript.mm b/chrome/browser/ui/cocoa/applescript/window_applescript.mm
index 9cbb85cb..9062948 100644
--- a/chrome/browser/ui/cocoa/applescript/window_applescript.mm
+++ b/chrome/browser/ui/cocoa/applescript/window_applescript.mm
@@ -198,11 +198,11 @@
 
   // Set how long it takes a tab to be created.
   base::TimeTicks newTabStartTime = base::TimeTicks::Now();
-  chrome::NavigateParams params(browser_, GURL(chrome::kChromeUINewTabURL),
-                                ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser_, GURL(chrome::kChromeUINewTabURL),
+                        ui::PAGE_TRANSITION_TYPED);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   params.tabstrip_index = index;
-  chrome::Navigate(&params);
+  Navigate(&params);
   CoreTabHelper* core_tab_helper =
       CoreTabHelper::FromWebContents(params.target_contents);
   core_tab_helper->set_new_tab_start_time(newTabStartTime);
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
index a83d149..4bae8d7 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
@@ -441,10 +441,10 @@
 
   // Inserts a new tab into the tabstrip at the background.
   void AddTabAtBackground(int index, GURL url) {
-    chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+    NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
     params.tabstrip_index = index;
     params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
-    chrome::Navigate(&params);
+    Navigate(&params);
     content::WaitForLoadStopWithoutSuccessCheck(params.target_contents);
   }
 
diff --git a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm
index dd46a9a..79b722f 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm
@@ -475,9 +475,9 @@
   DCHECK(didClose);
   std::string configure_url = chrome::kChromeUIExtensionsURL;
   configure_url += chrome::kExtensionConfigureCommandsSubPage;
-  chrome::NavigateParams params(chrome::GetSingletonTabNavigateParams(
-      browser_, GURL(configure_url)));
-  chrome::Navigate(&params);
+  NavigateParams params(
+      GetSingletonTabNavigateParams(browser_, GURL(configure_url)));
+  Navigate(&params);
 }
 
 - (IBAction)onAppShortcutClicked:(id)sender {
diff --git a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
index 92ac9094..96fe0ee 100644
--- a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
+++ b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
@@ -55,10 +55,10 @@
     DCHECK(node->url.is_valid());
     WindowOpenDisposition disposition =
         ui::WindowOpenDispositionFromNSEvent([NSApp currentEvent]);
-    chrome::NavigateParams params(bridge_->profile(), node->url,
-        ui::PAGE_TRANSITION_AUTO_BOOKMARK);
+    NavigateParams params(bridge_->profile(), node->url,
+                          ui::PAGE_TRANSITION_AUTO_BOOKMARK);
     params.disposition = disposition;
-    chrome::Navigate(&params);
+    Navigate(&params);
   }
 }
 
diff --git a/chrome/browser/ui/cocoa/profiles/profile_signin_confirmation_view_controller.mm b/chrome/browser/ui/cocoa/profiles/profile_signin_confirmation_view_controller.mm
index 1c947f2..1de79f5d 100644
--- a/chrome/browser/ui/cocoa/profiles/profile_signin_confirmation_view_controller.mm
+++ b/chrome/browser/ui/cocoa/profiles/profile_signin_confirmation_view_controller.mm
@@ -363,12 +363,12 @@
 }
 
 - (void)learnMore {
-  chrome::NavigateParams params(
-      browser_, GURL(chrome::kChromeEnterpriseSignInLearnMoreURL),
-      ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
+  NavigateParams params(browser_,
+                        GURL(chrome::kChromeEnterpriseSignInLearnMoreURL),
+                        ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
   params.disposition = WindowOpenDisposition::NEW_POPUP;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 }
 
 - (BOOL)textView:(NSTextView*)textView
diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm b/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
index 66dfe8d..0df89d698 100644
--- a/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
+++ b/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
@@ -2163,13 +2163,12 @@
     case WindowOpenDisposition::NEW_FOREGROUND_TAB:
     case WindowOpenDisposition::NEW_BACKGROUND_TAB: {
       base::RecordAction(UserMetricsAction("Tab_DropURLBetweenTabs"));
-      chrome::NavigateParams params(browser_, *url,
-                                    ui::PAGE_TRANSITION_TYPED);
+      NavigateParams params(browser_, *url, ui::PAGE_TRANSITION_TYPED);
       params.disposition = disposition;
       params.tabstrip_index = index;
       params.tabstrip_add_types =
           TabStripModel::ADD_ACTIVE | TabStripModel::ADD_FORCE_INDEX;
-      chrome::Navigate(&params);
+      Navigate(&params);
       break;
     }
     case WindowOpenDisposition::CURRENT_TAB: {
diff --git a/chrome/browser/ui/extensions/application_launch.cc b/chrome/browser/ui/extensions/application_launch.cc
index 0786973..ffba234 100644
--- a/chrome/browser/ui/extensions/application_launch.cc
+++ b/chrome/browser/ui/extensions/application_launch.cc
@@ -272,7 +272,7 @@
     add_type |= TabStripModel::ADD_PINNED;
 
   ui::PageTransition transition = ui::PAGE_TRANSITION_AUTO_BOOKMARK;
-  chrome::NavigateParams params(browser, url, transition);
+  NavigateParams params(browser, url, transition);
   params.tabstrip_add_types = add_type;
   params.disposition = disposition;
 
@@ -300,7 +300,7 @@
 
     contents = existing_tab;
   } else {
-    chrome::Navigate(&params);
+    Navigate(&params);
     contents = params.target_contents;
   }
 
diff --git a/chrome/browser/ui/extensions/extension_install_ui_default.cc b/chrome/browser/ui/extensions/extension_install_ui_default.cc
index b6dcaf9..5661569a 100644
--- a/chrome/browser/ui/extensions/extension_install_ui_default.cc
+++ b/chrome/browser/ui/extensions/extension_install_ui_default.cc
@@ -204,9 +204,9 @@
   Profile* current_profile = profile_->GetOriginalProfile();
   Browser* browser = FindOrCreateVisibleBrowser(current_profile);
   if (browser) {
-    chrome::NavigateParams params(chrome::GetSingletonTabNavigateParams(
-        browser, GURL(chrome::kChromeUIAppsURL)));
-    chrome::Navigate(&params);
+    NavigateParams params(
+        GetSingletonTabNavigateParams(browser, GURL(chrome::kChromeUIAppsURL)));
+    Navigate(&params);
 
     content::NotificationService::current()->Notify(
         chrome::NOTIFICATION_APP_INSTALLED_TO_NTP,
diff --git a/chrome/browser/ui/extensions/hosted_app_browsertest.cc b/chrome/browser/ui/extensions/hosted_app_browsertest.cc
index 8a7a629..e3ad15b1 100644
--- a/chrome/browser/ui/extensions/hosted_app_browsertest.cc
+++ b/chrome/browser/ui/extensions/hosted_app_browsertest.cc
@@ -72,7 +72,7 @@
   content::TestNavigationObserver observer(
       browser->tab_strip_model()->GetActiveWebContents(),
       content::MessageLoopRunner::QuitMode::DEFERRED);
-  chrome::NavigateParams params(browser, url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser, url, ui::PAGE_TRANSITION_LINK);
   ui_test_utils::NavigateToURL(&params);
   observer.Wait();
 }
diff --git a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
index a4d72e9..15da7df 100644
--- a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
+++ b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
@@ -703,7 +703,7 @@
 
   // Navigate in the first tab, currently in the background.
   GURL url2("data:text/html,page2");
-  chrome::NavigateParams params(browser(), url2, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url2, ui::PAGE_TRANSITION_LINK);
   params.source_contents = contents;
   params.disposition = WindowOpenDisposition::CURRENT_TAB;
   ui_test_utils::NavigateToURL(&params);
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
index d51d784..dced1dc 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -448,11 +448,11 @@
 }
 
 void ManagePasswordsUIController::NavigateToSmartLockHelpPage() {
-  chrome::NavigateParams params(
-      chrome::FindBrowserWithWebContents(web_contents()),
-      GURL(chrome::kSmartLockHelpPage), ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(chrome::FindBrowserWithWebContents(web_contents()),
+                        GURL(chrome::kSmartLockHelpPage),
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() {
@@ -462,12 +462,12 @@
 }
 
 void ManagePasswordsUIController::NavigateToPasswordManagerAccountDashboard() {
-  chrome::NavigateParams params(
+  NavigateParams params(
       chrome::FindBrowserWithWebContents(web_contents()),
       GURL(password_manager::kPasswordManagerAccountDashboardURL),
       ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 void ManagePasswordsUIController::NavigateToChromeSignIn() {
diff --git a/chrome/browser/ui/settings_window_manager_chromeos.cc b/chrome/browser/ui/settings_window_manager_chromeos.cc
index 8f8ddc0..f6b69e56 100644
--- a/chrome/browser/ui/settings_window_manager_chromeos.cc
+++ b/chrome/browser/ui/settings_window_manager_chromeos.cc
@@ -52,7 +52,7 @@
     NavigateParams params(browser, gurl, ui::PAGE_TRANSITION_AUTO_BOOKMARK);
     params.window_action = NavigateParams::SHOW_WINDOW;
     params.user_gesture = true;
-    chrome::Navigate(&params);
+    Navigate(&params);
     return;
   }
 
@@ -63,7 +63,7 @@
   params.window_action = NavigateParams::SHOW_WINDOW;
   params.user_gesture = true;
   params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::Navigate(&params);
+  Navigate(&params);
   settings_session_map_[profile] = params.browser->session_id().id();
   DCHECK(params.browser->is_trusted_source());
 
diff --git a/chrome/browser/ui/signin_view_controller.cc b/chrome/browser/ui/signin_view_controller.cc
index 47ca68d..0e1f4e77 100644
--- a/chrome/browser/ui/signin_view_controller.cc
+++ b/chrome/browser/ui/signin_view_controller.cc
@@ -147,7 +147,7 @@
                                   ui::PAGE_TRANSITION_AUTO_TOPLEVEL, false);
     active_contents->OpenURL(params);
   } else {
-    chrome::ShowSingletonTab(browser, signin_url);
+    ShowSingletonTab(browser, signin_url);
     active_contents = browser->tab_strip_model()->GetActiveWebContents();
   }
   DCHECK(active_contents);
diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_tabs.cc
index d956fdb2..5909690 100644
--- a/chrome/browser/ui/singleton_tabs.cc
+++ b/chrome/browser/ui/singleton_tabs.cc
@@ -14,7 +14,6 @@
 #include "content/public/browser/browser_url_handler.h"
 #include "content/public/browser/web_contents.h"
 
-namespace chrome {
 namespace {
 
 // Returns true if two URLs are equal after taking |replacements| into account.
@@ -50,7 +49,8 @@
       browser->tab_strip_model()->GetActiveWebContents();
   if (contents) {
     const GURL& contents_url = contents->GetURL();
-    if ((contents_url == kChromeUINewTabURL || search::IsInstantNTP(contents) ||
+    if ((contents_url == chrome::kChromeUINewTabURL ||
+         search::IsInstantNTP(contents) ||
          contents_url == url::kAboutBlankURL) &&
         GetIndexOfSingletonTab(&local_params) < 0) {
       local_params.disposition = WindowOpenDisposition::CURRENT_TAB;
@@ -128,5 +128,3 @@
 
   return -1;
 }
-
-}  // namespace chrome
diff --git a/chrome/browser/ui/singleton_tabs.h b/chrome/browser/ui/singleton_tabs.h
index d13b724..0f579aa 100644
--- a/chrome/browser/ui/singleton_tabs.h
+++ b/chrome/browser/ui/singleton_tabs.h
@@ -13,8 +13,6 @@
 // Methods for opening "singleton tabs". Tabs are guaranteed unique by varying
 // metrics within a particular Browser window.
 
-namespace chrome {
-
 // Core singleton tab API:
 
 // Show a given a URL. If a tab with the same URL (ignoring the ref) is
@@ -37,6 +35,4 @@
 // Otherwise, returns -1.
 int GetIndexOfSingletonTab(NavigateParams* params);
 
-}  // namespace chrome
-
 #endif  // CHROME_BROWSER_UI_SINGLETON_TABS_H_
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
index 1c60ebf..edb8cfe 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -433,8 +433,8 @@
     if (tabs[i].is_pinned)
       add_types |= TabStripModel::ADD_PINNED;
 
-    chrome::NavigateParams params(browser, tabs[i].url,
-                                  ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
+    NavigateParams params(browser, tabs[i].url,
+                          ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
     params.disposition = first_tab ? WindowOpenDisposition::NEW_FOREGROUND_TAB
                                    : WindowOpenDisposition::NEW_BACKGROUND_TAB;
     params.tabstrip_add_types = add_types;
@@ -446,7 +446,7 @@
     }
 #endif  // BUILDFLAG(ENABLE_RLZ)
 
-    chrome::Navigate(&params);
+    Navigate(&params);
 
     first_tab = false;
   }
diff --git a/chrome/browser/ui/sync/one_click_signin_links_delegate_impl.cc b/chrome/browser/ui/sync/one_click_signin_links_delegate_impl.cc
index 71f0cbe5..bbc4e7ae 100644
--- a/chrome/browser/ui/sync/one_click_signin_links_delegate_impl.cc
+++ b/chrome/browser/ui/sync/one_click_signin_links_delegate_impl.cc
@@ -17,11 +17,11 @@
 OneClickSigninLinksDelegateImpl::~OneClickSigninLinksDelegateImpl() {}
 
 void OneClickSigninLinksDelegateImpl::OnLearnMoreLinkClicked(bool is_dialog) {
-  chrome::NavigateParams params(browser_, GURL(chrome::kChromeSyncLearnMoreURL),
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser_, GURL(chrome::kChromeSyncLearnMoreURL),
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = is_dialog ? WindowOpenDisposition::NEW_WINDOW
                                  : WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 void OneClickSigninLinksDelegateImpl::OnAdvancedLinkClicked() {
diff --git a/chrome/browser/ui/toolbar/back_forward_menu_model.cc b/chrome/browser/ui/toolbar/back_forward_menu_model.cc
index d61eb5e6..2e0b4bf7 100644
--- a/chrome/browser/ui/toolbar/back_forward_menu_model.cc
+++ b/chrome/browser/ui/toolbar/back_forward_menu_model.cc
@@ -178,9 +178,9 @@
   // Execute the command for the last item: "Show Full History".
   if (index == GetItemCount() - 1) {
     base::RecordComputedAction(BuildActionName("ShowFullHistory", -1));
-    chrome::ShowSingletonTabOverwritingNTP(browser_,
-        chrome::GetSingletonTabNavigateParams(
-            browser_, GURL(chrome::kChromeUIHistoryURL)));
+    ShowSingletonTabOverwritingNTP(
+        browser_, GetSingletonTabNavigateParams(
+                      browser_, GURL(chrome::kChromeUIHistoryURL)));
     return;
   }
 
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
index 2f11977..9fbd4513 100644
--- a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
+++ b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
@@ -144,7 +144,7 @@
   PrefService* pref_service;
   switch (command_id) {
     case IDC_MEDIA_ROUTER_ABOUT:
-      chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl));
+      ShowSingletonTab(browser_, GURL(kAboutPageUrl));
       break;
     case IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION:
       SetAlwaysShowActionPref(!GetAlwaysShowActionPref());
@@ -158,16 +158,16 @@
       pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, true);
       break;
     case IDC_MEDIA_ROUTER_HELP:
-      chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl));
+      ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl));
       base::RecordAction(base::UserMetricsAction(
           "MediaRouter_Ui_Navigate_Help"));
       break;
     case IDC_MEDIA_ROUTER_LEARN_MORE:
-      chrome::ShowSingletonTab(browser_, GURL(kCastLearnMorePageUrl));
+      ShowSingletonTab(browser_, GURL(kCastLearnMorePageUrl));
       break;
 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
     case IDC_MEDIA_ROUTER_MANAGE_DEVICES:
-      chrome::ShowSingletonTab(browser_, GURL(chrome::kChromeUICastURL));
+      ShowSingletonTab(browser_, GURL(chrome::kChromeUICastURL));
       break;
 #endif
     case IDC_MEDIA_ROUTER_REPORT_ISSUE:
@@ -196,7 +196,7 @@
       extensions::kExtensionScheme +
       std::string(url::kStandardSchemeSeparator) +
       request_manager->media_route_provider_extension_id() + "/feedback.html");
-  chrome::ShowSingletonTab(browser_, GURL(feedback_url));
+  ShowSingletonTab(browser_, GURL(feedback_url));
 }
 
 int MediaRouterContextualMenu::GetChangeVisibilityTextId() {
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_panel.cc
index 4779d8a..a28e0a61 100644
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_panel.cc
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_panel.cc
@@ -33,8 +33,8 @@
 
 void AppInfoPanel::OpenLink(const GURL& url) {
   DCHECK(!url.is_empty());
-  chrome::NavigateParams params(profile_, url, ui::PAGE_TRANSITION_LINK);
-  chrome::Navigate(&params);
+  NavigateParams params(profile_, url, ui::PAGE_TRANSITION_LINK);
+  Navigate(&params);
 }
 
 views::Label* AppInfoPanel::CreateHeading(const base::string16& text) const {
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_sign_in_delegate_browsertest.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_sign_in_delegate_browsertest.cc
index 0149363..3179cca 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_sign_in_delegate_browsertest.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_sign_in_delegate_browsertest.cc
@@ -50,10 +50,10 @@
 // replace this tab.  This function replaces about:blank with another URL
 // so that the sign in page goes into a new tab.
 void BookmarkBubbleSignInDelegateTest::ReplaceBlank(Browser* browser) {
-  chrome::NavigateParams params(
-      chrome::GetSingletonTabNavigateParams(browser, GURL("chrome:version")));
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
-  chrome::ShowSingletonTabOverwritingNTP(browser, params);
+  NavigateParams params(
+      GetSingletonTabNavigateParams(browser, GURL("chrome:version")));
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
+  ShowSingletonTabOverwritingNTP(browser, params);
 }
 
 void BookmarkBubbleSignInDelegateTest::SignInBrowser(Browser* browser) {
diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
index beb8667..5d6d6d9 100644
--- a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
@@ -295,9 +295,9 @@
 
   std::string configure_url = chrome::kChromeUIExtensionsURL;
   configure_url += chrome::kExtensionConfigureCommandsSubPage;
-  chrome::NavigateParams params(
-      chrome::GetSingletonTabNavigateParams(browser(), GURL(configure_url)));
-  chrome::Navigate(&params);
+  NavigateParams params(
+      GetSingletonTabNavigateParams(browser(), GURL(configure_url)));
+  Navigate(&params);
   CloseBubble(BUBBLE_CLOSE_NAVIGATED);
 }
 
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
index 29f405d..01099a3 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
@@ -477,8 +477,7 @@
 
   const extensions::Extension* app = InstallBookmarkApp(web_app_info);
   Browser* app_browser = LaunchAppBrowser(app);
-  chrome::NavigateParams params(app_browser, kAppStartURL,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(app_browser, kAppStartURL, ui::PAGE_TRANSITION_LINK);
   ui_test_utils::NavigateToURL(&params);
 
   BrowserView* browser_view =
diff --git a/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc b/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc
index b0b24c2..04c4f13 100644
--- a/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc
+++ b/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc
@@ -541,8 +541,8 @@
   // The only thing that can trigger this is the user clicking on the "edit"
   // link for a server card.
   chrome::ScopedTabbedBrowserDisplayer displayer(dialog()->GetProfile());
-  chrome::ShowSingletonTab(displayer.browser(),
-                           autofill::payments::GetManageAddressesUrl(0));
+  ShowSingletonTab(displayer.browser(),
+                   autofill::payments::GetManageAddressesUrl(0));
 }
 
 void CreditCardEditorViewController::SelectBasicCardNetworkIcon(
diff --git a/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc b/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
index c58c1d3..fd53233 100644
--- a/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
+++ b/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
@@ -364,11 +364,11 @@
                                      base::FilePath(), owning_window, ""));
 
   // Open a singleton tab in background.
-  chrome::NavigateParams p(browser(), GURL("http://www.google.com"),
-                           ui::PAGE_TRANSITION_LINK);
-  p.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  NavigateParams p(browser(), GURL("http://www.google.com"),
+                   ui::PAGE_TRANSITION_LINK);
+  p.window_action = NavigateParams::SHOW_WINDOW;
   p.disposition = WindowOpenDisposition::SINGLETON_TAB;
-  chrome::Navigate(&p);
+  Navigate(&p);
 
   // Press cancel button.
   CloseDialog(DIALOG_BTN_CANCEL, owning_window);
diff --git a/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc b/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc
index 9f92a73..c66055c 100644
--- a/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc
+++ b/chrome/browser/ui/views/sync/profile_signin_confirmation_dialog_views.cc
@@ -255,13 +255,12 @@
     views::StyledLabel* label,
     const gfx::Range& range,
     int event_flags) {
-  chrome::NavigateParams params(
-      browser_,
-      GURL("https://support.google.com/chromebook/answer/1331549"),
+  NavigateParams params(
+      browser_, GURL("https://support.google.com/chromebook/answer/1331549"),
       ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_POPUP;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 }
 
 void ProfileSigninConfirmationDialogViews::ButtonPressed(
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
index 34c9855..148887d 100644
--- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
+++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
@@ -323,8 +323,8 @@
 void BrowserTabStripController::PerformDrop(bool drop_before,
                                             int index,
                                             const GURL& url) {
-  chrome::NavigateParams params(browser_view_->browser(), url,
-                                ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser_view_->browser(), url,
+                        ui::PAGE_TRANSITION_LINK);
   params.tabstrip_index = index;
 
   if (drop_before) {
@@ -335,8 +335,8 @@
     params.disposition = WindowOpenDisposition::CURRENT_TAB;
     params.source_contents = model_->GetWebContentsAt(index);
   }
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
-  chrome::Navigate(&params);
+  params.window_action = NavigateParams::SHOW_WINDOW;
+  Navigate(&params);
 }
 
 bool BrowserTabStripController::IsCompatibleWith(TabStripImpl* other) const {
diff --git a/chrome/browser/ui/webui/chrome_web_contents_handler.cc b/chrome/browser/ui/webui/chrome_web_contents_handler.cc
index 419cc8b..3b935948 100644
--- a/chrome/browser/ui/webui/chrome_web_contents_handler.cc
+++ b/chrome/browser/ui/webui/chrome_web_contents_handler.cc
@@ -45,7 +45,7 @@
     browser =
         new Browser(Browser::CreateParams(Browser::TYPE_TABBED, profile, true));
   }
-  chrome::NavigateParams nav_params(browser, params.url, params.transition);
+  NavigateParams nav_params(browser, params.url, params.transition);
   nav_params.referrer = params.referrer;
   if (source && source->IsCrashed() &&
       params.disposition == WindowOpenDisposition::CURRENT_TAB &&
@@ -55,9 +55,9 @@
   } else {
     nav_params.disposition = params.disposition;
   }
-  nav_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  nav_params.window_action = NavigateParams::SHOW_WINDOW;
   nav_params.user_gesture = true;
-  chrome::Navigate(&nav_params);
+  Navigate(&nav_params);
 
   // Close the browser if chrome::Navigate created a new one.
   if (browser_created && (browser != nav_params.browser))
@@ -90,13 +90,13 @@
     browser = new Browser(
         Browser::CreateParams(Browser::TYPE_TABBED, profile, user_gesture));
   }
-  chrome::NavigateParams params(browser, new_contents);
+  NavigateParams params(browser, new_contents);
   params.source_contents = source;
   params.disposition = disposition;
   params.window_bounds = initial_rect;
-  params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+  params.window_action = NavigateParams::SHOW_WINDOW;
   params.user_gesture = user_gesture;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   // Close the browser if chrome::Navigate created a new one.
   if (browser_created && (browser != params.browser))
diff --git a/chrome/browser/ui/webui/inspect_ui.cc b/chrome/browser/ui/webui/inspect_ui.cc
index 7e460c8..a4e57d9 100644
--- a/chrome/browser/ui/webui/inspect_ui.cc
+++ b/chrome/browser/ui/webui/inspect_ui.cc
@@ -428,9 +428,9 @@
 
 void InspectUI::InspectDevices(Browser* browser) {
   base::RecordAction(base::UserMetricsAction("InspectDevices"));
-  chrome::NavigateParams params(chrome::GetSingletonTabNavigateParams(
+  NavigateParams params(GetSingletonTabNavigateParams(
       browser, GURL(chrome::kChromeUIInspectURL)));
-  params.path_behavior = chrome::NavigateParams::IGNORE_AND_NAVIGATE;
+  params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
   ShowSingletonTabOverwritingNTP(browser, params);
 }
 
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc
index 0126d1c8..170db11 100644
--- a/chrome/browser/ui/webui/settings/people_handler.cc
+++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -314,7 +314,7 @@
   }
 
   if (url.is_valid())
-    chrome::ShowSingletonTab(browser, url);
+    ShowSingletonTab(browser, url);
 }
 #endif
 
diff --git a/chrome/browser/ui/webui/signin/inline_login_handler.cc b/chrome/browser/ui/webui/signin/inline_login_handler.cc
index 1624518d..89c7c432 100644
--- a/chrome/browser/ui/webui/signin/inline_login_handler.cc
+++ b/chrome/browser/ui/webui/signin/inline_login_handler.cc
@@ -178,9 +178,9 @@
         main_frame_url, signin::kSignInPromoQueryKeyConstrained, "0");
   }
 
-  chrome::NavigateParams params(profile, main_frame_url,
-                                ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
-  chrome::Navigate(&params);
+  NavigateParams params(profile, main_frame_url,
+                        ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
+  Navigate(&params);
 
   CloseDialogFromJavascript();
 }
diff --git a/chrome/browser/ui/webui/welcome_handler.cc b/chrome/browser/ui/webui/welcome_handler.cc
index c7abdcd..c764d29 100644
--- a/chrome/browser/ui/webui/welcome_handler.cc
+++ b/chrome/browser/ui/webui/welcome_handler.cc
@@ -82,10 +82,10 @@
 }
 
 void WelcomeHandler::GoToNewTabPage() {
-  chrome::NavigateParams params(GetBrowser(), GURL(chrome::kChromeUINewTabURL),
-                                ui::PageTransition::PAGE_TRANSITION_LINK);
+  NavigateParams params(GetBrowser(), GURL(chrome::kChromeUINewTabURL),
+                        ui::PageTransition::PAGE_TRANSITION_LINK);
   params.source_contents = web_ui()->GetWebContents();
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 Browser* WelcomeHandler::GetBrowser() {
diff --git a/chrome/test/base/browser_with_test_window_test.cc b/chrome/test/base/browser_with_test_window_test.cc
index 6eca9cc..2b576213 100644
--- a/chrome/test/base/browser_with_test_window_test.cc
+++ b/chrome/test/base/browser_with_test_window_test.cc
@@ -139,10 +139,10 @@
 }
 
 void BrowserWithTestWindowTest::AddTab(Browser* browser, const GURL& url) {
-  chrome::NavigateParams params(browser, url, ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser, url, ui::PAGE_TRANSITION_TYPED);
   params.tabstrip_index = 0;
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
   CommitPendingLoad(&params.target_contents->GetController());
 }
 
diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc
index f7c799e..7cd6cf51 100644
--- a/chrome/test/base/in_process_browser_test.cc
+++ b/chrome/test/base/in_process_browser_test.cc
@@ -412,10 +412,10 @@
     const GURL& url,
     ui::PageTransition transition,
     bool check_navigation_success) {
-  chrome::NavigateParams params(browser, url, transition);
+  NavigateParams params(browser, url, transition);
   params.tabstrip_index = index;
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 
   if (check_navigation_success)
     content::WaitForLoadStop(params.target_contents);
diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc
index 660a9c47..c0b6fa61 100644
--- a/chrome/test/base/ui_test_utils.cc
+++ b/chrome/test/base/ui_test_utils.cc
@@ -171,14 +171,13 @@
   return true;
 }
 
-void NavigateToURL(chrome::NavigateParams* params) {
-  chrome::Navigate(params);
+void NavigateToURL(NavigateParams* params) {
+  Navigate(params);
   content::WaitForLoadStop(params->target_contents);
 }
 
 void NavigateToURLWithPost(Browser* browser, const GURL& url) {
-  chrome::NavigateParams params(browser, url,
-                                ui::PAGE_TRANSITION_FORM_SUBMIT);
+  NavigateParams params(browser, url, ui::PAGE_TRANSITION_FORM_SUBMIT);
 
   std::string post_data("test=body");
   params.post_data = content::ResourceRequestBody::CreateFromBytes(
diff --git a/chrome/test/base/ui_test_utils.h b/chrome/test/base/ui_test_utils.h
index 72beb06..b6a14cd 100644
--- a/chrome/test/base/ui_test_utils.h
+++ b/chrome/test/base/ui_test_utils.h
@@ -40,9 +40,7 @@
 class FilePath;
 }
 
-namespace chrome {
 struct NavigateParams;
-}
 
 namespace content {
 class WebContents;
@@ -78,7 +76,7 @@
 // Performs the provided navigation process, blocking until the navigation
 // finishes. May change the params in some cases (i.e. if the navigation
 // opens a new browser window). Uses chrome::Navigate.
-void NavigateToURL(chrome::NavigateParams* params);
+void NavigateToURL(NavigateParams* params);
 
 // Navigates the selected tab of |browser| to |url|, blocking until the
 // navigation finishes. Simulates a POST and uses chrome::Navigate.
diff --git a/chrome/test/base/web_ui_browser_test.cc b/chrome/test/base/web_ui_browser_test.cc
index e2eae68..88e8a30 100644
--- a/chrome/test/base/web_ui_browser_test.cc
+++ b/chrome/test/base/web_ui_browser_test.cc
@@ -223,11 +223,10 @@
   WebUIJsInjectionReadyObserver injection_observer(
       web_contents, this, preload_test_fixture_, preload_test_name_);
   content::TestNavigationObserver navigation_observer(web_contents);
-  chrome::NavigateParams params(
-      browser(), GURL(browse_to), ui::PAGE_TRANSITION_TYPED);
+  NavigateParams params(browser(), GURL(browse_to), ui::PAGE_TRANSITION_TYPED);
   params.disposition = WindowOpenDisposition::CURRENT_TAB;
 
-  chrome::Navigate(&params);
+  Navigate(&params);
   navigation_observer.Wait();
 }
 
diff --git a/chrome/test/gpu/webgl_infobar_browsertest.cc b/chrome/test/gpu/webgl_infobar_browsertest.cc
index 23fa8c7..5e4dd626 100644
--- a/chrome/test/gpu/webgl_infobar_browsertest.cc
+++ b/chrome/test/gpu/webgl_infobar_browsertest.cc
@@ -38,15 +38,13 @@
   // do here: navigate with the PAGE_TRANSITION_FROM_ADDRESS_BAR flag,
   // without waiting for the navigation. It would be painful to change
   // either of the NavigateToURL entry points to support these two
-  // constraints, so we use chrome::Navigate directly.
-  chrome::NavigateParams params(
-      browser,
-      GURL(content::kChromeUIGpuCrashURL),
-      ui::PageTransitionFromInt(
-          ui::PAGE_TRANSITION_TYPED |
-          ui::PAGE_TRANSITION_FROM_ADDRESS_BAR));
+  // constraints, so we use Navigate directly.
+  NavigateParams params(
+      browser, GURL(content::kChromeUIGpuCrashURL),
+      ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED |
+                                ui::PAGE_TRANSITION_FROM_ADDRESS_BAR));
   params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
-  chrome::Navigate(&params);
+  Navigate(&params);
 }
 
 }  // namespace
diff --git a/chrome/test/ppapi/ppapi_browsertest.cc b/chrome/test/ppapi/ppapi_browsertest.cc
index ec83285..6a873d8 100644
--- a/chrome/test/ppapi/ppapi_browsertest.cc
+++ b/chrome/test/ppapi/ppapi_browsertest.cc
@@ -1029,7 +1029,7 @@
 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_CreateInvisible) {
   // Make a second tab in the foreground.
   GURL url = GetTestFileUrl("View_CreatedInvisible");
-  chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
   ui_test_utils::NavigateToURL(&params);
 }
@@ -1051,8 +1051,8 @@
 
   // Make a new tab to cause the original one to hide, this should trigger the
   // next phase of the test.
-  chrome::NavigateParams params(
-      browser(), GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_LINK);
+  NavigateParams params(browser(), GURL(url::kAboutBlankURL),
+                        ui::PAGE_TRANSITION_LINK);
   params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
   ui_test_utils::NavigateToURL(&params);
 
diff --git a/components/autofill/ios/browser/resources/autofill_controller.js b/components/autofill/ios/browser/resources/autofill_controller.js
index 39882d3..b2fcc1e1 100644
--- a/components/autofill/ios/browser/resources/autofill_controller.js
+++ b/components/autofill/ios/browser/resources/autofill_controller.js
@@ -1562,6 +1562,33 @@
 
 /**
  * Helper for |InferLabelForElement()| that infers a label, if possible, from
+ * an enclosing label.
+ * e.g. <label>Some Text<span><input ...></span></label>
+ *
+ * It is based on the logic in
+ *    string16 InferLabelFromEnclosingLabel(
+ *        const WebFormControlElement& element)
+ * in chromium/src/components/autofill/content/renderer/form_autofill_util.cc.
+ *
+ * @param {FormControlElement} element An element to examine.
+ * @return {string} The label of element.
+ */
+__gCrWeb.autofill.inferLabelFromEnclosingLabel = function(element) {
+  if (!element) {
+    return '';
+  }
+  var node = element.parentNode;
+  while (node && !__gCrWeb.autofill.hasTagName(node, 'label')) {
+    node = node.parentNode;
+  }
+  if (node) {
+    return __gCrWeb.autofill.findChildText(node);
+  }
+  return '';
+}
+
+/**
+ * Helper for |InferLabelForElement()| that infers a label, if possible, from
  * a surrounding div table,
  * e.g. <div>Some Text<span><input ...></span></div>
  * e.g. <div>Some Text</div><div><input ...></div>
@@ -1747,7 +1774,9 @@
     }
 
     seenTagNames[tagName] = true;
-    if (tagName === "DIV") {
+    if (tagName === "LABEL") {
+      inferredLabel = __gCrWeb.autofill.inferLabelFromEnclosingLabel(element);
+    } else if (tagName === "DIV") {
       inferredLabel = __gCrWeb.autofill.inferLabelFromDivTable(element);
     } else if (tagName === "TD") {
       inferredLabel = __gCrWeb.autofill.inferLabelFromTableColumn(element);
diff --git a/components/password_manager/core/browser/password_store_default_unittest.cc b/components/password_manager/core/browser/password_store_default_unittest.cc
index 1614515..b241c01 100644
--- a/components/password_manager/core/browser/password_store_default_unittest.cc
+++ b/components/password_manager/core/browser/password_store_default_unittest.cc
@@ -207,7 +207,6 @@
 
   // Adding a login should trigger a notification.
   store->AddLogin(*form);
-  delegate.FinishAsyncProcessing();
 
   // Change the password.
   form->password_value = base::ASCIIToUTF16("a different password");
@@ -221,7 +220,6 @@
 
   // Updating the login with the new password should trigger a notification.
   store->UpdateLogin(*form);
-  delegate.FinishAsyncProcessing();
 
   const PasswordStoreChange expected_delete_changes[] = {
       PasswordStoreChange(PasswordStoreChange::REMOVE, *form),
@@ -232,6 +230,7 @@
 
   // Deleting the login should trigger a notification.
   store->RemoveLogin(*form);
+  // Run the tasks to allow all the above expected calls to take place.
   delegate.FinishAsyncProcessing();
 
   store->RemoveObserver(&observer);
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn
index 3835cf1..b3711687 100644
--- a/components/viz/common/BUILD.gn
+++ b/components/viz/common/BUILD.gn
@@ -4,6 +4,7 @@
 
 import("//components/viz/viz.gni")
 import("//testing/test.gni")
+import("//gpu/vulkan/features.gni")
 
 viz_component("resource_format") {
   output_name = "viz_resource_format"
@@ -167,6 +168,11 @@
     "//ui/latency",
   ]
 
+  if (enable_vulkan) {
+    configs = [ "//third_party/vulkan:vulkan_config" ]
+    deps += [ "//gpu/vulkan" ]
+  }
+
   public_deps = [
     ":resource_format",
     "//gpu/command_buffer/client",
diff --git a/components/viz/common/gpu/vulkan_context_provider.h b/components/viz/common/gpu/vulkan_context_provider.h
index 0dc77b0..ff09c31 100644
--- a/components/viz/common/gpu/vulkan_context_provider.h
+++ b/components/viz/common/gpu/vulkan_context_provider.h
@@ -8,6 +8,8 @@
 #include "base/memory/ref_counted.h"
 #include "components/viz/common/viz_common_export.h"
 
+class GrContext;
+
 namespace gpu {
 class VulkanDeviceQueue;
 }
@@ -19,6 +21,7 @@
     : public base::RefCountedThreadSafe<VulkanContextProvider> {
  public:
   virtual gpu::VulkanDeviceQueue* GetDeviceQueue() = 0;
+  virtual GrContext* GetGrContext() = 0;
 
  protected:
   friend class base::RefCountedThreadSafe<VulkanContextProvider>;
diff --git a/components/viz/common/gpu/vulkan_in_process_context_provider.cc b/components/viz/common/gpu/vulkan_in_process_context_provider.cc
index d1714290..3c9d3b0 100644
--- a/components/viz/common/gpu/vulkan_in_process_context_provider.cc
+++ b/components/viz/common/gpu/vulkan_in_process_context_provider.cc
@@ -8,6 +8,8 @@
 #if BUILDFLAG(ENABLE_VULKAN)
 #include "gpu/vulkan/vulkan_device_queue.h"
 #include "gpu/vulkan/vulkan_implementation.h"
+#include "third_party/skia/include/gpu/GrContext.h"
+#include "third_party/skia/include/gpu/vk/GrVkInterface.h"
 #endif  // BUILDFLAG(ENABLE_VULKAN)
 
 namespace viz {
@@ -28,6 +30,20 @@
 #endif
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+GrVkInterface::GetProc make_unified_getter(
+    const GrVkInterface::GetInstanceProc& iproc,
+    const GrVkInterface::GetDeviceProc& dproc) {
+  return [&iproc, &dproc](const char* proc_name, VkInstance instance,
+                          VkDevice device) {
+    if (device != VK_NULL_HANDLE) {
+      return dproc(device, proc_name);
+    }
+    return iproc(instance, proc_name);
+  };
+}
+#endif
+
 bool VulkanInProcessContextProvider::Initialize() {
 #if BUILDFLAG(ENABLE_VULKAN)
   DCHECK(!device_queue_);
@@ -41,6 +57,32 @@
   }
 
   device_queue_ = std::move(device_queue);
+  const uint32_t feature_flags = kGeometryShader_GrVkFeatureFlag |
+                                 kDualSrcBlend_GrVkFeatureFlag |
+                                 kSampleRateShading_GrVkFeatureFlag;
+  const uint32_t extension_flags =
+      kEXT_debug_report_GrVkExtensionFlag | kKHR_surface_GrVkExtensionFlag |
+      kKHR_swapchain_GrVkExtensionFlag | kKHR_xcb_surface_GrVkExtensionFlag;
+  GrVkBackendContext* backend_context = new GrVkBackendContext();
+  backend_context->fInstance = device_queue_->GetVulkanInstance();
+  backend_context->fPhysicalDevice = device_queue_->GetVulkanPhysicalDevice();
+  backend_context->fDevice = device_queue_->GetVulkanDevice();
+  backend_context->fQueue = device_queue_->GetVulkanQueue();
+  backend_context->fGraphicsQueueIndex = device_queue_->GetVulkanQueueIndex();
+  backend_context->fMinAPIVersion = VK_MAKE_VERSION(1, 0, 8);
+  backend_context->fExtensions = extension_flags;
+  backend_context->fFeatures = feature_flags;
+
+  auto interface = sk_make_sp<GrVkInterface>(
+      make_unified_getter(vkGetInstanceProcAddr, vkGetDeviceProcAddr),
+      backend_context->fInstance, backend_context->fDevice,
+      backend_context->fExtensions);
+  backend_context->fInterface.reset(interface.release());
+  backend_context->fOwnsInstanceAndDevice = false;
+  backend_context_.reset(backend_context);
+  gr_context_ = GrContext::Create(
+      kVulkan_GrBackend,
+      reinterpret_cast<GrBackendContext>(backend_context_.get()));
   return true;
 #else
   return false;
@@ -52,10 +94,15 @@
   if (device_queue_) {
     device_queue_->Destroy();
     device_queue_.reset();
+    backend_context_.reset();
   }
 #endif
 }
 
+GrContext* VulkanInProcessContextProvider::GetGrContext() {
+  return gr_context_;
+}
+
 gpu::VulkanDeviceQueue* VulkanInProcessContextProvider::GetDeviceQueue() {
 #if BUILDFLAG(ENABLE_VULKAN)
   return device_queue_.get();
diff --git a/components/viz/common/gpu/vulkan_in_process_context_provider.h b/components/viz/common/gpu/vulkan_in_process_context_provider.h
index 9a94fcc..611e4bcf 100644
--- a/components/viz/common/gpu/vulkan_in_process_context_provider.h
+++ b/components/viz/common/gpu/vulkan_in_process_context_provider.h
@@ -10,6 +10,9 @@
 #include "components/viz/common/gpu/vulkan_context_provider.h"
 #include "components/viz/common/viz_common_export.h"
 #include "gpu/vulkan/features.h"
+#if BUILDFLAG(ENABLE_VULKAN)
+#include "third_party/skia/include/gpu/vk/GrVkBackendContext.h"
+#endif
 
 namespace gpu {
 class VulkanDeviceQueue;
@@ -24,6 +27,7 @@
 
   bool Initialize();
   void Destroy();
+  GrContext* GetGrContext() override;
 
   // VulkanContextProvider implementation
   gpu::VulkanDeviceQueue* GetDeviceQueue() override;
@@ -33,8 +37,10 @@
   ~VulkanInProcessContextProvider() override;
 
  private:
+  GrContext* gr_context_;
 #if BUILDFLAG(ENABLE_VULKAN)
   std::unique_ptr<gpu::VulkanDeviceQueue> device_queue_;
+  sk_sp<GrVkBackendContext> backend_context_;
 #endif
 
   DISALLOW_COPY_AND_ASSIGN(VulkanInProcessContextProvider);
diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
index edb3cc78..db3aa8a 100644
--- a/components/viz/service/BUILD.gn
+++ b/components/viz/service/BUILD.gn
@@ -240,11 +240,6 @@
   }
 
   if (enable_vulkan) {
-    sources += [
-      "display/vulkan_renderer.cc",
-      "display/vulkan_renderer.h",
-    ]
-
     deps += [ "//gpu/vulkan" ]
   }
 }
diff --git a/components/viz/service/display/direct_renderer.cc b/components/viz/service/display/direct_renderer.cc
index f36d8f1..4d1043d 100644
--- a/components/viz/service/display/direct_renderer.cc
+++ b/components/viz/service/display/direct_renderer.cc
@@ -471,6 +471,13 @@
     return;
   UseRenderPass(render_pass);
 
+  // TODO(crbug.com/582554): This change applies only when Vulkan is enabled and
+  // it will be removed once SkiaRenderer has complete support for Vulkan.
+  if (current_frame()->current_render_pass !=
+          current_frame()->root_render_pass &&
+      !IsRenderPassResourceAllocated(render_pass->id))
+    return;
+
   const gfx::Rect surface_rect_in_draw_space = OutputSurfaceRectInDrawSpace();
   gfx::Rect render_pass_scissor_in_draw_space = surface_rect_in_draw_space;
 
@@ -619,6 +626,11 @@
   AllocateRenderPassResourceIfNeeded(render_pass->id, enlarged_size,
                                      RenderPassTextureHint(render_pass));
 
+  // TODO(crbug.com/582554): This change applies only when Vulkan is enabled and
+  // it will be removed once SkiaRenderer has complete support for Vulkan.
+  if (!IsRenderPassResourceAllocated(render_pass->id))
+    return;
+
   BindFramebufferToTexture(render_pass->id);
   InitializeViewport(current_frame(), render_pass->output_rect,
                      gfx::Rect(render_pass->output_rect.size()),
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc
index 489137b..386ecc6 100644
--- a/components/viz/service/display/display.cc
+++ b/components/viz/service/display/display.cc
@@ -35,10 +35,6 @@
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gfx/presentation_feedback.h"
 
-#if BUILDFLAG(ENABLE_VULKAN)
-#include "cc/output/vulkan_renderer.h"
-#endif
-
 namespace viz {
 
 Display::Display(
@@ -207,8 +203,8 @@
           &settings_, output_surface_.get(), resource_provider_.get());
     }
   } else if (output_surface_->vulkan_context_provider()) {
-#if defined(ENABLE_VULKAN)
-    renderer_ = base::MakeUnique<VulkanRenderer>(
+#if BUILDFLAG(ENABLE_VULKAN)
+    renderer_ = base::MakeUnique<SkiaRenderer>(
         &settings_, output_surface_.get(), resource_provider_.get());
 #else
     NOTREACHED();
diff --git a/components/viz/service/display/output_surface.h b/components/viz/service/display/output_surface.h
index 40b247e..8c71bb73 100644
--- a/components/viz/service/display/output_surface.h
+++ b/components/viz/service/display/output_surface.h
@@ -18,6 +18,8 @@
 #include "components/viz/service/display/software_output_device.h"
 #include "components/viz/service/viz_service_export.h"
 #include "gpu/command_buffer/common/texture_in_use_response.h"
+#include "gpu/vulkan/features.h"
+#include "gpu/vulkan/vulkan_surface.h"
 #include "ui/gfx/color_space.h"
 #include "ui/latency/latency_info.h"
 
@@ -122,6 +124,11 @@
   // after returning from this method in order to unblock the next frame.
   virtual void SwapBuffers(OutputSurfaceFrame frame) = 0;
 
+#if BUILDFLAG(ENABLE_VULKAN)
+  // Gives the Vulkan surface created when enable_vulkan flag is set.
+  virtual gpu::VulkanSurface* GetVulkanSurface() = 0;
+#endif
+
   // A helper class for implementations of OutputSurface that want to cache
   // LatencyInfos that can be updated when we get the corresponding
   // gfx::SwapResponse.
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index baf147a..f550782 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -4,6 +4,7 @@
 
 #include "components/viz/service/display/skia_renderer.h"
 
+#include "base/command_line.h"
 #include "base/memory/ptr_util.h"
 #include "base/trace_event/trace_event.h"
 #include "cc/base/math_util.h"
@@ -39,6 +40,17 @@
 #include "ui/gfx/skia_util.h"
 #include "ui/gfx/transform.h"
 
+#if BUILDFLAG(ENABLE_VULKAN)
+#include "components/viz/common/gpu/vulkan_in_process_context_provider.h"
+#include "gpu/vulkan/vulkan_device_queue.h"
+#include "gpu/vulkan/vulkan_implementation.h"
+#include "gpu/vulkan/vulkan_surface.h"
+#include "gpu/vulkan/vulkan_swap_chain.h"
+#include "third_party/skia/include/gpu/GrContext.h"
+#include "third_party/skia/include/gpu/vk/GrVkBackendContext.h"
+#include "third_party/skia/include/gpu/vk/GrVkTypes.h"
+#endif
+
 namespace viz {
 namespace {
 
@@ -62,14 +74,21 @@
                            OutputSurface* output_surface,
                            cc::DisplayResourceProvider* resource_provider)
     : DirectRenderer(settings, output_surface, resource_provider) {
+#if BUILDFLAG(ENABLE_VULKAN)
+  use_swap_with_bounds_ = false;
+#else
   const auto& context_caps =
       output_surface_->context_provider()->ContextCapabilities();
   use_swap_with_bounds_ = context_caps.swap_buffers_with_bounds;
+#endif
 }
 
 SkiaRenderer::~SkiaRenderer() {}
 
 bool SkiaRenderer::CanPartialSwap() {
+#if BUILDFLAG(ENABLE_VULKAN)
+  return false;
+#endif
   if (use_swap_with_bounds_)
     return false;
   auto* context_provider = output_surface_->context_provider();
@@ -87,6 +106,9 @@
 
 void SkiaRenderer::BeginDrawingFrame() {
   TRACE_EVENT0("viz", "SkiaRenderer::BeginDrawingFrame");
+#if BUILDFLAG(ENABLE_VULKAN)
+  return;
+#else
   // Copied from GLRenderer.
   bool use_sync_query_ = false;
   scoped_refptr<ResourceFence> read_lock_fence;
@@ -108,6 +130,7 @@
         resource_provider_->WaitSyncToken(resource_id);
     }
   }
+#endif
 }
 
 void SkiaRenderer::FinishDrawingFrame() {
@@ -170,6 +193,33 @@
   DCHECK(!output_surface_->HasExternalStencilTest());
   current_framebuffer_lock_ = nullptr;
 
+  // LegacyFontHost will get LCD text and skia figures out what type to use.
+  SkSurfaceProps surface_props =
+      SkSurfaceProps(0, SkSurfaceProps::kLegacyFontHost_InitType);
+
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* vulkan_surface = output_surface_->GetVulkanSurface();
+  gpu::VulkanSwapChain* swap_chain = vulkan_surface->GetSwapChain();
+  VkImage image = swap_chain->GetCurrentImage(swap_chain->current_image());
+
+  GrVkImageInfo info_;
+  info_.fImage = image;
+  info_.fAlloc = {VK_NULL_HANDLE, 0, 0, 0};
+  info_.fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+  info_.fImageTiling = VK_IMAGE_TILING_OPTIMAL;
+  info_.fFormat = VK_FORMAT_B8G8R8A8_UNORM;
+  info_.fLevelCount = 1;
+
+  GrBackendRenderTarget render_target(
+      current_frame()->device_viewport_size.width(),
+      current_frame()->device_viewport_size.height(), 0, 0, info_);
+
+  GrContext* gr_context =
+      output_surface_->vulkan_context_provider()->GetGrContext();
+  root_surface_ = SkSurface::MakeFromBackendRenderTarget(
+      gr_context, render_target, kTopLeft_GrSurfaceOrigin, nullptr,
+      &surface_props);
+#else
   // TODO(weiliangc): Set up correct can_use_lcd_text and
   // use_distance_field_text for SkSurfaceProps flags. How to setup is in
   // ResourceProvider. (crbug.com/644851)
@@ -187,15 +237,11 @@
         current_frame()->device_viewport_size.height(), 0, 8,
         kRGBA_8888_GrPixelConfig, framebuffer_info);
 
-    // This is for use_distance_field_text false, and can_use_lcd_text true.
-    // LegacyFontHost will get LCD text and skia figures out what type to use.
-    SkSurfaceProps surface_props =
-        SkSurfaceProps(0, SkSurfaceProps::kLegacyFontHost_InitType);
-
     root_surface_ = SkSurface::MakeFromBackendRenderTarget(
         gr_context, render_target, kBottomLeft_GrSurfaceOrigin, nullptr,
         &surface_props);
   }
+#endif
 
   root_canvas_ = root_surface_->getCanvas();
   if (settings_->show_overdraw_feedback) {
@@ -217,6 +263,10 @@
   cc::ScopedResource* texture = render_pass_textures_[render_pass_id].get();
   DCHECK(texture);
   DCHECK(texture->id());
+#if BUILDFLAG(ENABLE_VULKAN)
+  NOTIMPLEMENTED();
+  return;
+#endif
 
   // Explicitly release lock, otherwise we can crash when try to lock
   // same texture again.
@@ -557,6 +607,10 @@
 }
 
 void SkiaRenderer::DrawRenderPassQuad(const RenderPassDrawQuad* quad) {
+#if BUILDFLAG(ENABLE_VULKAN)
+  NOTIMPLEMENTED();
+  return;
+#endif
   cc::ScopedResource* content_texture =
       render_pass_textures_[quad->render_pass_id].get();
   DCHECK(content_texture);
@@ -741,6 +795,10 @@
     const RenderPassId render_pass_id,
     const gfx::Size& enlarged_size,
     ResourceTextureHint texturehint) {
+#if BUILDFLAG(ENABLE_VULKAN)
+  NOTIMPLEMENTED();
+  return;
+#endif
   auto& resource = render_pass_textures_[render_pass_id];
   if (resource && resource->id())
     return;
diff --git a/components/viz/service/display/skia_renderer.h b/components/viz/service/display/skia_renderer.h
index 9b46dcf..f7b8a4a 100644
--- a/components/viz/service/display/skia_renderer.h
+++ b/components/viz/service/display/skia_renderer.h
@@ -9,6 +9,7 @@
 #include "cc/cc_export.h"
 #include "components/viz/service/display/direct_renderer.h"
 #include "components/viz/service/viz_service_export.h"
+#include "gpu/vulkan/features.h"
 #include "ui/latency/latency_info.h"
 
 class SkNWayCanvas;
diff --git a/components/viz/service/display_embedder/gl_output_surface.cc b/components/viz/service/display_embedder/gl_output_surface.cc
index 68bbf56..9ba6e8c 100644
--- a/components/viz/service/display_embedder/gl_output_surface.cc
+++ b/components/viz/service/display_embedder/gl_output_surface.cc
@@ -169,4 +169,11 @@
   client_->DidReceivePresentationFeedback(swap_id, feedback);
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface* GLOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace viz
diff --git a/components/viz/service/display_embedder/gl_output_surface.h b/components/viz/service/display_embedder/gl_output_surface.h
index 0a9aef10..c2e58bb 100644
--- a/components/viz/service/display_embedder/gl_output_surface.h
+++ b/components/viz/service/display_embedder/gl_output_surface.h
@@ -44,6 +44,9 @@
   bool SurfaceIsSuspendForRecycle() const override;
   bool HasExternalStencilTest() const override;
   void ApplyExternalStencil() override;
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
 
   // OutputSurface::LatencyInfoCache::Client implementation.
   void LatencyInfoCompleted(
diff --git a/components/viz/service/display_embedder/software_output_surface.cc b/components/viz/service/display_embedder/software_output_surface.cc
index b142ec28..3708290 100644
--- a/components/viz/service/display_embedder/software_output_surface.cc
+++ b/components/viz/service/display_embedder/software_output_surface.cc
@@ -128,4 +128,11 @@
       gfx::PresentationFeedback(base::TimeTicks::Now(), refresh_interval_, 0u));
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface* SoftwareOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace viz
diff --git a/components/viz/service/display_embedder/software_output_surface.h b/components/viz/service/display_embedder/software_output_surface.h
index a666004..70b2032 100644
--- a/components/viz/service/display_embedder/software_output_surface.h
+++ b/components/viz/service/display_embedder/software_output_surface.h
@@ -39,6 +39,9 @@
   void ApplyExternalStencil() override;
   bool SurfaceIsSuspendForRecycle() const override;
   uint32_t GetFramebufferCopyTextureFormat() override;
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
 
  private:
   void SwapBuffersCallback(uint64_t swap_id);
diff --git a/content/browser/compositor/gpu_browser_compositor_output_surface.cc b/content/browser/compositor/gpu_browser_compositor_output_surface.cc
index 3f3c30d..90fef26f3 100644
--- a/content/browser/compositor/gpu_browser_compositor_output_surface.cc
+++ b/content/browser/compositor/gpu_browser_compositor_output_surface.cc
@@ -207,4 +207,11 @@
   return command_buffer_proxy;
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface* GpuBrowserCompositorOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace content
diff --git a/content/browser/compositor/gpu_browser_compositor_output_surface.h b/content/browser/compositor/gpu_browser_compositor_output_surface.h
index a6cff77..ef06c3e8 100644
--- a/content/browser/compositor/gpu_browser_compositor_output_surface.h
+++ b/content/browser/compositor/gpu_browser_compositor_output_surface.h
@@ -11,6 +11,7 @@
 #include "build/build_config.h"
 #include "content/browser/compositor/browser_compositor_output_surface.h"
 #include "content/browser/compositor/gpu_vsync_begin_frame_source.h"
+#include "gpu/vulkan/features.h"
 #include "ui/gfx/swap_result.h"
 
 namespace viz {
@@ -80,6 +81,9 @@
 
   // GpuVSyncControl implementation.
   void SetNeedsVSync(bool needs_vsync) override;
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
 
   // OutputSurface::LatencyInfoCache::Client implementation.
   void LatencyInfoCompleted(
diff --git a/content/browser/compositor/offscreen_browser_compositor_output_surface.cc b/content/browser/compositor/offscreen_browser_compositor_output_surface.cc
index a36dfd62..6fc6604 100644
--- a/content/browser/compositor/offscreen_browser_compositor_output_surface.cc
+++ b/content/browser/compositor/offscreen_browser_compositor_output_surface.cc
@@ -205,4 +205,12 @@
   client_->DidReceivePresentationFeedback(swap_id, gfx::PresentationFeedback());
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface*
+OffscreenBrowserCompositorOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace content
diff --git a/content/browser/compositor/offscreen_browser_compositor_output_surface.h b/content/browser/compositor/offscreen_browser_compositor_output_surface.h
index f58cd000..abbcd19 100644
--- a/content/browser/compositor/offscreen_browser_compositor_output_surface.h
+++ b/content/browser/compositor/offscreen_browser_compositor_output_surface.h
@@ -14,6 +14,7 @@
 #include "base/memory/weak_ptr.h"
 #include "build/build_config.h"
 #include "content/browser/compositor/browser_compositor_output_surface.h"
+#include "gpu/vulkan/features.h"
 #include "ui/latency/latency_info.h"
 
 namespace ui {
@@ -59,6 +60,10 @@
   void SetSurfaceSuspendedForRecycle(bool suspended) override {}
 #endif
 
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
+
   void OnSwapBuffersComplete(const std::vector<ui::LatencyInfo>& latency_info,
                              uint64_t swap_id);
 
diff --git a/content/browser/compositor/reflector_impl_unittest.cc b/content/browser/compositor/reflector_impl_unittest.cc
index bcf802a..504c517950 100644
--- a/content/browser/compositor/reflector_impl_unittest.cc
+++ b/content/browser/compositor/reflector_impl_unittest.cc
@@ -118,6 +118,10 @@
   void SetSurfaceSuspendedForRecycle(bool suspended) override {}
 #endif
 
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override { return nullptr; }
+#endif
+
  private:
   std::unique_ptr<ReflectorTexture> reflector_texture_;
 };
diff --git a/content/browser/compositor/software_browser_compositor_output_surface.cc b/content/browser/compositor/software_browser_compositor_output_surface.cc
index 253e832..b805b8ba 100644
--- a/content/browser/compositor/software_browser_compositor_output_surface.cc
+++ b/content/browser/compositor/software_browser_compositor_output_surface.cc
@@ -145,4 +145,11 @@
 }
 #endif
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gpu::VulkanSurface* SoftwareBrowserCompositorOutputSurface::GetVulkanSurface() {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+#endif
+
 }  // namespace content
diff --git a/content/browser/compositor/software_browser_compositor_output_surface.h b/content/browser/compositor/software_browser_compositor_output_surface.h
index ab0061d0..4036e69 100644
--- a/content/browser/compositor/software_browser_compositor_output_surface.h
+++ b/content/browser/compositor/software_browser_compositor_output_surface.h
@@ -11,6 +11,7 @@
 #include "build/build_config.h"
 #include "content/browser/compositor/browser_compositor_output_surface.h"
 #include "content/common/content_export.h"
+#include "gpu/vulkan/features.h"
 
 namespace cc {
 class SoftwareOutputDevice;
@@ -45,6 +46,9 @@
   gfx::BufferFormat GetOverlayBufferFormat() const override;
   bool SurfaceIsSuspendForRecycle() const override;
   uint32_t GetFramebufferCopyTextureFormat() override;
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override;
+#endif
 
  private:
   // BrowserCompositorOutputSurface implementation.
diff --git a/content/browser/compositor/vulkan_browser_compositor_output_surface.cc b/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
index 55c9377..72e1b33 100644
--- a/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
+++ b/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
@@ -106,16 +106,21 @@
 void VulkanBrowserCompositorOutputSurface::SwapBuffers(
     viz::OutputSurfaceFrame frame) {
   surface_->SwapBuffers();
+  ++swap_id_;
 
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
       base::Bind(&VulkanBrowserCompositorOutputSurface::SwapBuffersAck,
-                 weak_ptr_factory_.GetWeakPtr()));
+                 weak_ptr_factory_.GetWeakPtr(), swap_id_));
 }
 
-void VulkanBrowserCompositorOutputSurface::SwapBuffersAck() {
+void VulkanBrowserCompositorOutputSurface::SwapBuffersAck(uint64_t swap_id) {
   DCHECK(client_);
-  client_->DidReceiveSwapBuffersAck();
+  client_->DidReceiveSwapBuffersAck(swap_id);
+}
+
+gpu::VulkanSurface* VulkanBrowserCompositorOutputSurface::GetVulkanSurface() {
+  return surface_.get();
 }
 
 }  // namespace content
diff --git a/content/browser/compositor/vulkan_browser_compositor_output_surface.h b/content/browser/compositor/vulkan_browser_compositor_output_surface.h
index 67cbe349..9398765c 100644
--- a/content/browser/compositor/vulkan_browser_compositor_output_surface.h
+++ b/content/browser/compositor/vulkan_browser_compositor_output_surface.h
@@ -49,11 +49,15 @@
   void SwapBuffers(viz::OutputSurfaceFrame frame) override;
   void SetDrawRectangle(const gfx::Rect& rect) override;
 
+  gpu::VulkanSurface* GetVulkanSurface() override;
+
  private:
-  void SwapBuffersAck();
+  void SwapBuffersAck(uint64_t swap_id);
 
   std::unique_ptr<gpu::VulkanSurface> surface_;
   viz::OutputSurfaceClient* client_ = nullptr;
+  uint64_t swap_id_ = 0;
+
   base::WeakPtrFactory<VulkanBrowserCompositorOutputSurface> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(VulkanBrowserCompositorOutputSurface);
diff --git a/gpu/vulkan/BUILD.gn b/gpu/vulkan/BUILD.gn
index a901159..53f06fd 100644
--- a/gpu/vulkan/BUILD.gn
+++ b/gpu/vulkan/BUILD.gn
@@ -51,19 +51,10 @@
       ]
 
       configs += [ "//build/config:precompiled_headers" ]
+
       defines = [ "VULKAN_IMPLEMENTATION" ]
 
-      all_dependent_configs = [ "//third_party/vulkan:vulkan_headers" ]
-      libs = [ "vulkan" ]
-
-      if (current_cpu == "x64") {
-        lib_dirs = [
-          "/usr/lib/x86_64-linux-gnu",
-          vulkan_lib_dir,
-        ]
-      } else {
-        assert(false, "Unsupported vulkan target: " + current_cpu)
-      }
+      all_dependent_configs = [ "//third_party/vulkan:vulkan_config" ]
 
       deps = [
         "//base",
diff --git a/gpu/vulkan/vulkan_device_queue.cc b/gpu/vulkan/vulkan_device_queue.cc
index 28000d5..29050750 100644
--- a/gpu/vulkan/vulkan_device_queue.cc
+++ b/gpu/vulkan/vulkan_device_queue.cc
@@ -26,20 +26,21 @@
 }
 
 bool VulkanDeviceQueue::Initialize(uint32_t options) {
-  VkInstance vk_instance = gpu::GetVulkanInstance();
-  if (VK_NULL_HANDLE == vk_instance)
+  vk_instance_ = gpu::GetVulkanInstance();
+
+  if (VK_NULL_HANDLE == vk_instance_)
     return false;
 
   VkResult result = VK_SUCCESS;
 
   uint32_t device_count = 0;
-  result = vkEnumeratePhysicalDevices(vk_instance, &device_count, nullptr);
+  result = vkEnumeratePhysicalDevices(vk_instance_, &device_count, nullptr);
   if (VK_SUCCESS != result || device_count == 0)
     return false;
 
   std::vector<VkPhysicalDevice> devices(device_count);
   result =
-      vkEnumeratePhysicalDevices(vk_instance, &device_count, devices.data());
+      vkEnumeratePhysicalDevices(vk_instance_, &device_count, devices.data());
   if (VK_SUCCESS != result) {
     DLOG(ERROR) << "vkEnumeratePhysicalDevices() failed: " << result;
     return false;
diff --git a/gpu/vulkan/vulkan_device_queue.h b/gpu/vulkan/vulkan_device_queue.h
index ecb1724..221c18d 100644
--- a/gpu/vulkan/vulkan_device_queue.h
+++ b/gpu/vulkan/vulkan_device_queue.h
@@ -46,6 +46,8 @@
     return vk_queue_;
   }
 
+  VkInstance GetVulkanInstance() const { return vk_instance_; }
+
   uint32_t GetVulkanQueueIndex() const { return vk_queue_index_; }
 
   std::unique_ptr<gpu::VulkanCommandPool> CreateCommandPool();
@@ -55,6 +57,7 @@
   VkDevice vk_device_ = VK_NULL_HANDLE;
   VkQueue vk_queue_ = VK_NULL_HANDLE;
   uint32_t vk_queue_index_ = 0;
+  VkInstance vk_instance_ = VK_NULL_HANDLE;
 
   DISALLOW_COPY_AND_ASSIGN(VulkanDeviceQueue);
 };
diff --git a/gpu/vulkan/vulkan_swap_chain.h b/gpu/vulkan/vulkan_swap_chain.h
index 28099f8..a39b305 100644
--- a/gpu/vulkan/vulkan_swap_chain.h
+++ b/gpu/vulkan/vulkan_swap_chain.h
@@ -52,6 +52,11 @@
     return images_[current_image_]->command_buffer.get();
   }
 
+  VkImage GetCurrentImage(uint32_t index) const {
+    DCHECK_LT(index, images_.size());
+    return images_[index]->image;
+  }
+
  private:
   bool InitializeSwapChain(VkSurfaceKHR surface,
                            const VkSurfaceCapabilitiesKHR& surface_caps,
diff --git a/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm b/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm
index ba99bb2..1127dbe2 100644
--- a/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm
+++ b/ios/chrome/browser/autofill/autofill_controller_js_unittest.mm
@@ -181,6 +181,26 @@
           nil]];
 }
 
+NSArray* GetTestFormInputElementWithLabelFromEnclosingLabelBefore() {
+  return @[
+      @("<LABEL>* First name: "
+          "<INPUT type='text' name='firstname' value='John'/>"
+          "</LABEL>"),
+      [NSDictionary dictionaryWithObjectsAndKeys:
+          @"'* First name:'", @"label",
+          @"'firstname'", @"name",
+          @"'text'", @"form_control_type",
+          @"undefined", @"autocomplete_attribute",
+          GetDefaultMaxLengthString(), @"max_length",
+          @"true", @"should_autocomplete",
+          @"false", @"is_checkable",
+          @"'John'", @"value",
+          @"'John'", @"value_option_text",
+          @"undefined", @"option_values",
+          @"undefined", @"option_contents",
+          nil]];
+}
+
 NSArray* GetTestFormInputElementWithLabelFromPreviousSpan() {
   return @[
       @("* Last name<span>:</span> "
@@ -951,6 +971,12 @@
       @"input");
 }
 
+TEST_F(AutofillControllerJsTest, InferLabelFromEnclosingLabelBefore) {
+  TestInputElementDataEvaluation(
+      @"__gCrWeb.autofill.inferLabelFromEnclosingLabel", @"label",
+      GetTestFormInputElementWithLabelFromEnclosingLabelBefore(), @"input");
+}
+
 TEST_F(AutofillControllerJsTest, InferLabelFromPreviousTextBrAndSpan) {
   TestInputElementDataEvaluation(
       @"__gCrWeb.autofill.inferLabelFromPrevious", @"label",
@@ -1006,6 +1032,7 @@
     GetTestFormInputElementWithLabelFromPreviousParagraph(),
     GetTestFormInputElementWithLabelFromPreviousLabel(),
     GetTestFormInputElementWithLabelFromPreviousLabelOtherIgnored(),
+    GetTestFormInputElementWithLabelFromEnclosingLabelBefore(),
     GetTestFormInputElementWithLabelFromPreviousTextSpanBr(),
     GetTestFormInputElementWithLabelFromPreviousTextBrAndSpan(),
     GetTestFormInputElementWithLabelFromListItem(),
@@ -1267,6 +1294,7 @@
     GetTestFormInputElementWithLabelFromPreviousParagraph(),
     GetTestFormInputElementWithLabelFromPreviousLabel(),
     GetTestFormInputElementWithLabelFromPreviousLabelOtherIgnored(),
+    GetTestFormInputElementWithLabelFromEnclosingLabelBefore(),
     GetTestFormInputElementWithLabelFromPreviousTextBrAndSpan(),
     GetTestFormInputElementWithLabelFromPreviousTextSpanBr(),
     GetTestFormInputElementWithLabelFromListItem(),
@@ -1351,6 +1379,7 @@
     GetTestFormInputElementWithLabelFromPreviousParagraph(),
     GetTestFormInputElementWithLabelFromPreviousLabel(),
     GetTestFormInputElementWithLabelFromPreviousLabelOtherIgnored(),
+    GetTestFormInputElementWithLabelFromEnclosingLabelBefore(),
     GetTestFormInputElementWithLabelFromPreviousTextSpanBr(),
     GetTestFormInputElementWithLabelFromPreviousTextBrAndSpan(),
     GetTestFormInputElementWithLabelFromListItem(),
@@ -1461,6 +1490,7 @@
     GetTestFormInputElementWithLabelFromPreviousParagraph(),
     GetTestFormInputElementWithLabelFromPreviousLabel(),
     GetTestFormInputElementWithLabelFromPreviousLabelOtherIgnored(),
+    GetTestFormInputElementWithLabelFromEnclosingLabelBefore(),
     GetTestFormInputElementWithLabelFromPreviousTextSpanBr(),
     GetTestFormInputElementWithLabelFromPreviousTextBrAndSpan(),
     GetTestFormInputElementWithLabelFromListItem(),
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm b/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm
index 5ae7855..993db07 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm
@@ -146,7 +146,7 @@
       ntp_header::kToolbarHeight - content_suggestions::kSearchFieldHeight;
 
   widthConstraint.constant = searchFieldNormalWidth - 2 * maxXInset * percent;
-  topMarginConstraint.constant = -content_suggestions::searchFieldTopMargin() +
+  topMarginConstraint.constant = -content_suggestions::searchFieldTopMargin() -
                                  ntp_header::kMaxTopMarginDiff * percent;
   heightConstraint.constant =
       content_suggestions::kSearchFieldHeight + maxHeightDiff * percent;
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm b/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm
index e39d0e25..7e07afc3 100644
--- a/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm
+++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm
@@ -331,12 +331,14 @@
 
 - (void)locationBarHasBecomeFirstResponder {
   [self.delegate locationBarDidBecomeFirstResponder];
-  [self expandOmniboxAnimated:YES];
+  if (!self.toolbarViewController.expanded)
+    [self expandOmniboxAnimated:YES];
 }
 
 - (void)locationBarHasResignedFirstResponder {
   [self.delegate locationBarDidResignFirstResponder];
-  [self contractOmnibox];
+  if (self.toolbarViewController.expanded)
+    [self contractOmnibox];
 }
 
 - (void)locationBarBeganEdit {
@@ -355,8 +357,7 @@
 #pragma mark - OmniboxFocuser
 
 - (void)focusOmnibox {
-  if (!self.viewController.view.hidden)
-    [_locationBarView.textField becomeFirstResponder];
+  [_locationBarView.textField becomeFirstResponder];
 }
 
 - (void)cancelOmniboxEdit {
@@ -531,6 +532,7 @@
                  curve:UIViewAnimationCurveEaseInOut
             animations:^{
             }];
+
   [self.locationBarView addExpandOmniboxAnimations:animator];
   [self.toolbarViewController addToolbarExpansionAnimations:animator];
   [animator startAnimation];
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.h b/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.h
index fbbda99..f29bc53 100644
--- a/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.h
+++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.h
@@ -41,6 +41,8 @@
 @property(nonatomic, strong) UIView* locationBarView;
 // The ToolsMenu button.
 @property(nonatomic, strong, readonly) ToolbarToolsMenuButton* toolsMenuButton;
+// Whether the toolbar is in the expanded state or not.
+@property(nonatomic, assign) BOOL expanded;
 
 // Adds the toolbar expanded state animations to |animator|, and changes the
 // toolbar constraints in preparation for the animation.
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm b/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm
index cce8e88..c8d8f89 100644
--- a/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm
+++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm
@@ -68,6 +68,7 @@
 @synthesize buttonFactory = _buttonFactory;
 @synthesize buttonUpdater = _buttonUpdater;
 @synthesize dispatcher = _dispatcher;
+@synthesize expanded = _expanded;
 @synthesize locationBarView = _locationBarView;
 @synthesize stackView = _stackView;
 @synthesize loading = _loading;
@@ -117,6 +118,7 @@
     [self setUpToolbarButtons];
     [self setUpLocationBarContainer];
     [self setUpProgressBar];
+    _expanded = NO;
   }
   return self;
 }
@@ -131,6 +133,7 @@
     self.contractButton.hidden = NO;
     self.contractButton.alpha = 1;
   }];
+  self.expanded = YES;
 }
 
 - (void)addToolbarContractionAnimations:(UIViewPropertyAnimator*)animator {
@@ -143,6 +146,7 @@
     self.contractButton.hidden = YES;
     self.contractButton.alpha = 0;
   }];
+  self.expanded = NO;
 }
 
 - (void)updateForSideSwipeSnapshotOnNTP:(BOOL)onNTP {
diff --git a/ios/web_view/internal/autofill/cwv_autofill_controller.mm b/ios/web_view/internal/autofill/cwv_autofill_controller.mm
index ec2a2a66..aa9fad5 100644
--- a/ios/web_view/internal/autofill/cwv_autofill_controller.mm
+++ b/ios/web_view/internal/autofill/cwv_autofill_controller.mm
@@ -64,15 +64,17 @@
                JSAutofillManager:(JsAutofillManager*)JSAutofillManager {
   self = [super init];
   if (self) {
+    DCHECK(webState);
     _webState = webState;
 
     ios_web_view::WebViewBrowserState* browserState =
         ios_web_view::WebViewBrowserState::FromBrowserState(
-            webState->GetBrowserState());
+            _webState->GetBrowserState());
     _autofillAgent = autofillAgent;
 
-    _webStateObserverBridge.reset(
-        new web::WebStateObserverBridge(webState, self));
+    _webStateObserverBridge =
+        std::make_unique<web::WebStateObserverBridge>(self);
+    _webState->AddObserver(_webStateObserverBridge.get());
 
     std::unique_ptr<IdentityProvider> identityProvider(
         std::make_unique<ProfileIdentityProvider>(
@@ -90,17 +92,25 @@
             GetAutofillWebDataForBrowserState(
                 browserState, ServiceAccessType::EXPLICIT_ACCESS)));
     autofill::AutofillDriverIOS::CreateForWebStateAndDelegate(
-        webState, _autofillClient.get(), self,
+        _webState, _autofillClient.get(), self,
         ios_web_view::ApplicationContext::GetInstance()->GetApplicationLocale(),
         autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER);
-    _autofillManager =
-        autofill::AutofillDriverIOS::FromWebState(webState)->autofill_manager();
+    _autofillManager = autofill::AutofillDriverIOS::FromWebState(_webState)
+                           ->autofill_manager();
 
     _JSAutofillManager = JSAutofillManager;
   }
   return self;
 }
 
+- (void)dealloc {
+  if (_webState) {
+    _webState->RemoveObserver(_webStateObserverBridge.get());
+    _webStateObserverBridge.reset();
+    _webState = nullptr;
+  }
+}
+
 #pragma mark - Public Methods
 
 - (void)clearFormWithName:(NSString*)formName
@@ -243,6 +253,7 @@
 
 - (void)webState:(web::WebState*)webState
     didRegisterFormActivity:(const web::FormActivityParams&)params {
+  DCHECK_EQ(_webState, webState);
   NSString* nsFormName = base::SysUTF8ToNSString(params.form_name);
   NSString* nsFieldName = base::SysUTF8ToNSString(params.field_name);
   NSString* nsValue = base::SysUTF8ToNSString(params.value);
@@ -289,7 +300,9 @@
 }
 
 - (void)webStateDestroyed:(web::WebState*)webState {
+  DCHECK_EQ(_webState, webState);
   [_autofillAgent detachFromWebState];
+  _webState->RemoveObserver(_webStateObserverBridge.get());
   _webStateObserverBridge.reset();
   _webState = nullptr;
 }
diff --git a/remoting/host/clipboard_x11.cc b/remoting/host/clipboard_x11.cc
index cd03acc..7f83e8b 100644
--- a/remoting/host/clipboard_x11.cc
+++ b/remoting/host/clipboard_x11.cc
@@ -4,10 +4,7 @@
 
 #include "remoting/host/clipboard.h"
 
-#include <X11/Xlib.h>
-
 #include "base/memory/ptr_util.h"
-#undef Status  // Xlib.h #defines this, which breaks protobuf headers.
 
 #include "base/bind.h"
 #include "base/files/file_descriptor_watcher_posix.h"
@@ -16,6 +13,7 @@
 #include "remoting/host/linux/x_server_clipboard.h"
 #include "remoting/proto/event.pb.h"
 #include "remoting/protocol/clipboard_stub.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/curtain_mode_linux.cc b/remoting/host/curtain_mode_linux.cc
index b99ae2d..cc356ab 100644
--- a/remoting/host/curtain_mode_linux.cc
+++ b/remoting/host/curtain_mode_linux.cc
@@ -4,14 +4,13 @@
 
 #include "remoting/host/curtain_mode.h"
 
-#include <X11/extensions/XInput.h>
-
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/single_thread_task_runner.h"
 #include "remoting/base/logging.h"
 #include "remoting/host/client_session_control.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/desktop_resizer_x11.cc b/remoting/host/desktop_resizer_x11.cc
index 90110fc..639aa1bf 100644
--- a/remoting/host/desktop_resizer_x11.cc
+++ b/remoting/host/desktop_resizer_x11.cc
@@ -4,8 +4,6 @@
 
 #include "remoting/host/desktop_resizer.h"
 
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
 #include <string.h>
 
 #include "base/command_line.h"
@@ -13,6 +11,7 @@
 #include "base/memory/ptr_util.h"
 #include "remoting/base/logging.h"
 #include "remoting/host/linux/x11_util.h"
+#include "ui/gfx/x/x11.h"
 
 // On Linux, we use the xrandr extension to change the desktop resolution. In
 // curtain mode, we do exact resize where supported (currently only using a
@@ -168,9 +167,9 @@
 DesktopResizerX11::DesktopResizerX11()
     : display_(XOpenDisplay(nullptr)),
       screen_(DefaultScreen(display_)),
-      root_(RootWindow(display_, screen_)),
-      exact_resize_(base::CommandLine::ForCurrentProcess()->
-                    HasSwitch("server-supports-exact-resize")) {
+      root_(XRootWindow(display_, screen_)),
+      exact_resize_(base::CommandLine::ForCurrentProcess()->HasSwitch(
+          "server-supports-exact-resize")) {
   int rr_event_base;
   int rr_error_base;
 
@@ -320,7 +319,7 @@
       if (sizes[i].width == resolution.dimensions().width()
           && sizes[i].height == resolution.dimensions().height()) {
         XRRSetScreenConfig(display_, config, root_, i, current_rotation,
-                           CurrentTime);
+                           x11::CurrentTime);
         break;
       }
     }
@@ -358,7 +357,7 @@
 }
 
 void DesktopResizerX11::SwitchToMode(const char* name) {
-  RRMode mode_id = None;
+  RRMode mode_id = x11::None;
   RROutput* outputs = nullptr;
   int number_of_outputs = 0;
   if (name) {
@@ -368,7 +367,8 @@
     number_of_outputs = resources_.get()->noutput;
   }
   XRRSetCrtcConfig(display_, resources_.get(), resources_.GetCrtc(),
-                   CurrentTime, 0, 0, mode_id, 1, outputs, number_of_outputs);
+                   x11::CurrentTime, 0, 0, mode_id, 1, outputs,
+                   number_of_outputs);
 }
 
 std::unique_ptr<DesktopResizer> DesktopResizer::Create() {
diff --git a/remoting/host/input_injector_x11.cc b/remoting/host/input_injector_x11.cc
index b28347b..3435ee5 100644
--- a/remoting/host/input_injector_x11.cc
+++ b/remoting/host/input_injector_x11.cc
@@ -6,13 +6,6 @@
 
 #include <stddef.h>
 #include <stdint.h>
-#include <X11/extensions/XInput.h>
-#include <X11/extensions/XTest.h>
-#include <X11/Xlib.h>
-#include <X11/XKBlib.h>
-#include <X11/keysym.h>
-#undef Status  // Xlib.h #defines this, which breaks protobuf headers.
-
 #include <set>
 #include <utility>
 
@@ -35,6 +28,7 @@
 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
+#include "ui/gfx/x/x11.h"
 
 #if defined(OS_CHROMEOS)
 #include "remoting/host/chromeos/point_transformer.h"
@@ -50,7 +44,7 @@
 using protocol::MouseEvent;
 using protocol::TouchEvent;
 
-bool IsModifierKey(ui::DomCode dom_code) {
+bool IsDomModifierKey(ui::DomCode dom_code) {
   return dom_code == ui::DomCode::CONTROL_LEFT ||
          dom_code == ui::DomCode::SHIFT_LEFT ||
          dom_code == ui::DomCode::ALT_LEFT ||
@@ -228,7 +222,7 @@
   if (!task_runner_->BelongsToCurrentThread())
     task_runner_->PostTask(FROM_HERE, base::Bind(&Core::InitClipboard, this));
 
-  root_window_ = RootWindow(display_, DefaultScreen(display_));
+  root_window_ = XRootWindow(display_, DefaultScreen(display_));
   if (root_window_ == BadValue) {
     LOG(ERROR) << "Unable to get the root window";
     return false;
@@ -278,11 +272,11 @@
   if (event.pressed()) {
     if (pressed_keys_.find(keycode) != pressed_keys_.end()) {
       // Ignore repeats for modifier keys.
-      if (IsModifierKey(static_cast<ui::DomCode>(event.usb_keycode())))
+      if (IsDomModifierKey(static_cast<ui::DomCode>(event.usb_keycode())))
         return;
       // Key is already held down, so lift the key up to ensure this repeated
       // press takes effect.
-      XTestFakeKeyEvent(display_, keycode, False, CurrentTime);
+      XTestFakeKeyEvent(display_, keycode, x11::False, x11::CurrentTime);
     }
 
     if (!IsLockKey(keycode)) {
@@ -325,7 +319,7 @@
     }
   }
 
-  XTestFakeKeyEvent(display_, keycode, event.pressed(), CurrentTime);
+  XTestFakeKeyEvent(display_, keycode, event.pressed(), x11::CurrentTime);
   XFlush(display_);
 }
 
@@ -340,7 +334,7 @@
   // any interference with the currently pressed keys. E.g. if Shift is pressed
   // when TextEvent is received.
   for (int key : pressed_keys_) {
-    XTestFakeKeyEvent(display_, key, False, CurrentTime);
+    XTestFakeKeyEvent(display_, key, x11::False, x11::CurrentTime);
   }
   pressed_keys_.clear();
 
@@ -382,9 +376,9 @@
 bool InputInjectorX11::Core::IsLockKey(KeyCode keycode) {
   XkbStateRec state;
   KeySym keysym;
-  if (XkbGetState(display_, XkbUseCoreKbd, &state) == Success &&
+  if (XkbGetState(display_, XkbUseCoreKbd, &state) == x11::Success &&
       XkbLookupKeySym(display_, keycode, XkbStateMods(&state), nullptr,
-                      &keysym) == True) {
+                      &keysym) == x11::True) {
     return keysym == XK_Caps_Lock || keysym == XK_Num_Lock;
   } else {
     return false;
@@ -426,8 +420,8 @@
   }
   for (int i = 0; i < count; i++) {
     // Generate a button-down and a button-up to simulate a wheel click.
-    XTestFakeButtonEvent(display_, button, true, CurrentTime);
-    XTestFakeButtonEvent(display_, button, false, CurrentTime);
+    XTestFakeButtonEvent(display_, button, true, x11::CurrentTime);
+    XTestFakeButtonEvent(display_, button, false, x11::CurrentTime);
   }
 }
 
@@ -443,9 +437,8 @@
       (event.delta_x() != 0 || event.delta_y() != 0)) {
     latest_mouse_position_.set(-1, -1);
     VLOG(3) << "Moving mouse by " << event.delta_x() << "," << event.delta_y();
-    XTestFakeRelativeMotionEvent(display_,
-                                 event.delta_x(), event.delta_y(),
-                                 CurrentTime);
+    XTestFakeRelativeMotionEvent(display_, event.delta_x(), event.delta_y(),
+                                 x11::CurrentTime);
 
   } else if (event.has_x() && event.has_y()) {
     // Injecting a motion event immediately before a button release results in
@@ -474,8 +467,7 @@
               << "," << latest_mouse_position_.y();
       XTestFakeMotionEvent(display_, DefaultScreen(display_),
                            latest_mouse_position_.x(),
-                           latest_mouse_position_.y(),
-                           CurrentTime);
+                           latest_mouse_position_.y(), x11::CurrentTime);
     }
   }
 
@@ -492,7 +484,7 @@
             << (event.button_down() ? "down " : "up ")
             << button_number;
     XTestFakeButtonEvent(display_, button_number, event.button_down(),
-                         CurrentTime);
+                         x11::CurrentTime);
   }
 
   // Older client plugins always send scroll events in pixels, which
@@ -602,7 +594,7 @@
   }
   error = XSetDeviceButtonMapping(display_, device, button_mapping.get(),
                                   num_device_buttons);
-  if (error != Success)
+  if (error != x11::Success)
     LOG(ERROR) << "Failed to set XTest device button mapping: " << error;
 
   XCloseDevice(display_, device);
diff --git a/remoting/host/it2me/it2me_native_messaging_host_main.cc b/remoting/host/it2me/it2me_native_messaging_host_main.cc
index 9c66e163..43d4f885 100644
--- a/remoting/host/it2me/it2me_native_messaging_host_main.cc
+++ b/remoting/host/it2me/it2me_native_messaging_host_main.cc
@@ -27,9 +27,9 @@
 
 #if defined(OS_LINUX)
 #include <gtk/gtk.h>
-#include <X11/Xlib.h>
 
 #include "base/linux_util.h"
+#include "ui/gfx/x/x11.h"
 #endif  // defined(OS_LINUX)
 
 #if defined(OS_MACOSX)
diff --git a/remoting/host/linux/unicode_to_keysym.cc b/remoting/host/linux/unicode_to_keysym.cc
index 3f28185..2048910 100644
--- a/remoting/host/linux/unicode_to_keysym.cc
+++ b/remoting/host/linux/unicode_to_keysym.cc
@@ -5,28 +5,9 @@
 #include "remoting/host/linux/unicode_to_keysym.h"
 
 #include <algorithm>
-#define XK_MISCELLANY
-#define XK_XKB_KEYS
-#define XK_LATIN1
-#define XK_LATIN2
-#define XK_LATIN3
-#define XK_LATIN4
-#define XK_LATIN9
-#define XK_GREEK
-#define XK_KATAKANA
-#define XK_ARABIC
-#define XK_CYRILLIC
-#define XK_HEBREW
-#define XK_THAI
-#define XK_KOREAN
-#define XK_CURRENCY
-#define XK_TECHNICAL
-#define XK_PUBLISHING
-#define XK_APL
-#define XK_SPECIAL
-#include <X11/keysymdef.h>
 
 #include "base/macros.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/linux/x11_keyboard_impl.cc b/remoting/host/linux/x11_keyboard_impl.cc
index ca696864..9d53957 100644
--- a/remoting/host/linux/x11_keyboard_impl.cc
+++ b/remoting/host/linux/x11_keyboard_impl.cc
@@ -4,12 +4,9 @@
 
 #include "remoting/host/linux/x11_keyboard_impl.h"
 
-#include <X11/extensions/XInput.h>
-#include <X11/extensions/XTest.h>
-#include <X11/XKBlib.h>
-
 #include "base/strings/stringprintf.h"
 #include "remoting/host/linux/unicode_to_keysym.h"
+#include "ui/gfx/x/x11.h"
 #include "ui/gfx/x/x11_types.h"
 
 namespace {
@@ -82,8 +79,8 @@
 void X11KeyboardImpl::PressKey(uint32_t keycode, uint32_t modifiers) {
   XkbLockModifiers(display_, XkbUseCoreKbd, modifiers, modifiers);
 
-  XTestFakeKeyEvent(display_, keycode, True, CurrentTime);
-  XTestFakeKeyEvent(display_, keycode, False, CurrentTime);
+  XTestFakeKeyEvent(display_, keycode, x11::True, x11::CurrentTime);
+  XTestFakeKeyEvent(display_, keycode, x11::False, x11::CurrentTime);
 
   XkbLockModifiers(display_, XkbUseCoreKbd, modifiers, 0);
 }
diff --git a/remoting/host/linux/x11_keyboard_impl.h b/remoting/host/linux/x11_keyboard_impl.h
index 00d418c6..a803072 100644
--- a/remoting/host/linux/x11_keyboard_impl.h
+++ b/remoting/host/linux/x11_keyboard_impl.h
@@ -7,9 +7,8 @@
 
 #include "remoting/host/linux/x11_keyboard.h"
 
-#include <X11/Xlib.h>
-
 #include "base/macros.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/linux/x11_util.cc b/remoting/host/linux/x11_util.cc
index 40ebf7b1..e526a61 100644
--- a/remoting/host/linux/x11_util.cc
+++ b/remoting/host/linux/x11_util.cc
@@ -4,9 +4,8 @@
 
 #include "remoting/host/linux/x11_util.h"
 
-#include <X11/extensions/XTest.h>
-
 #include "base/bind.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/linux/x11_util.h b/remoting/host/linux/x11_util.h
index 3bd1809..bf84b29 100644
--- a/remoting/host/linux/x11_util.h
+++ b/remoting/host/linux/x11_util.h
@@ -5,14 +5,15 @@
 #ifndef REMOTING_HOST_LINUX_X11_UTIL_H_
 #define REMOTING_HOST_LINUX_X11_UTIL_H_
 
-// Xlib.h defines XErrorEvent as an anonymous struct, so we can't forward-
-// declare it in this header. Since Xlib.h is not generally something you
-// should #include into arbitrary code, please refrain from #including this
-// header in another header.
-#include <X11/Xlib.h>
+// Xlib.h (via ui/gfx/x/x11.h) defines XErrorEvent as an anonymous
+// struct, so we can't forward- declare it in this header. Since
+// Xlib.h is not generally something you should #include into
+// arbitrary code, please refrain from #including this header in
+// another header.
 
 #include "base/callback.h"
 #include "base/macros.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/linux/x_server_clipboard.cc b/remoting/host/linux/x_server_clipboard.cc
index 41fbbcdf..84488217 100644
--- a/remoting/host/linux/x_server_clipboard.cc
+++ b/remoting/host/linux/x_server_clipboard.cc
@@ -4,13 +4,12 @@
 
 #include "remoting/host/linux/x_server_clipboard.h"
 
-#include <X11/extensions/Xfixes.h>
-
 #include "base/callback.h"
 #include "base/macros.h"
 #include "remoting/base/constants.h"
 #include "remoting/base/logging.h"
 #include "remoting/base/util.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
@@ -18,14 +17,13 @@
     : display_(nullptr),
       clipboard_window_(BadValue),
       xfixes_event_base_(-1),
-      clipboard_atom_(None),
-      large_selection_atom_(None),
-      selection_string_atom_(None),
-      targets_atom_(None),
-      timestamp_atom_(None),
-      utf8_string_atom_(None),
-      large_selection_property_(None) {
-}
+      clipboard_atom_(x11::None),
+      large_selection_atom_(x11::None),
+      selection_string_atom_(x11::None),
+      targets_atom_(x11::None),
+      timestamp_atom_(x11::None),
+      utf8_string_atom_(x11::None),
+      large_selection_property_(x11::None) {}
 
 XServerClipboard::~XServerClipboard() = default;
 
@@ -68,7 +66,7 @@
 
   Atom atoms[kNumAtomNames];
   if (XInternAtoms(display_, const_cast<char**>(kAtomNames), kNumAtomNames,
-                   False, atoms)) {
+                   x11::False, atoms)) {
     clipboard_atom_ = atoms[0];
     large_selection_atom_ = atoms[1];
     selection_string_atom_ = atoms[2];
@@ -167,7 +165,7 @@
 }
 
 void XServerClipboard::OnPropertyNotify(XEvent* event) {
-  if (large_selection_property_ != None &&
+  if (large_selection_property_ != x11::None &&
       event->xproperty.atom == large_selection_property_ &&
       event->xproperty.state == PropertyNewValue) {
     Atom type;
@@ -175,37 +173,36 @@
     unsigned long item_count, after;
     unsigned char *data;
     XGetWindowProperty(display_, clipboard_window_, large_selection_property_,
-                       0, ~0L, True, AnyPropertyType, &type, &format,
+                       0, ~0L, x11::True, AnyPropertyType, &type, &format,
                        &item_count, &after, &data);
-    if (type != None) {
+    if (type != x11::None) {
       // TODO(lambroslambrou): Properly support large transfers -
       // http://crbug.com/151447.
       XFree(data);
 
       // If the property is zero-length then the large transfer is complete.
       if (item_count == 0)
-        large_selection_property_ = None;
+        large_selection_property_ = x11::None;
     }
   }
 }
 
 void XServerClipboard::OnSelectionNotify(XEvent* event) {
-  if (event->xselection.property != None) {
+  if (event->xselection.property != x11::None) {
     Atom type;
     int format;
     unsigned long item_count, after;
     unsigned char *data;
-    XGetWindowProperty(display_, clipboard_window_,
-                       event->xselection.property, 0, ~0L, True,
-                       AnyPropertyType, &type, &format,
+    XGetWindowProperty(display_, clipboard_window_, event->xselection.property,
+                       0, ~0L, x11::True, AnyPropertyType, &type, &format,
                        &item_count, &after, &data);
     if (type == large_selection_atom_) {
       // Large selection - just read and ignore these for now.
       large_selection_property_ = event->xselection.property;
     } else {
       // Standard selection - call the selection notifier.
-      large_selection_property_ = None;
-      if (type != None) {
+      large_selection_property_ = x11::None;
+      if (type != x11::None) {
         HandleSelectionNotify(&event->xselection, type, format, item_count,
                               data);
         XFree(data);
@@ -224,10 +221,10 @@
   selection_event.selection = event->xselectionrequest.selection;
   selection_event.time = event->xselectionrequest.time;
   selection_event.target = event->xselectionrequest.target;
-  if (event->xselectionrequest.property == None)
+  if (event->xselectionrequest.property == x11::None)
     event->xselectionrequest.property = event->xselectionrequest.target;
   if (!IsSelectionOwner(selection_event.selection)) {
-    selection_event.property = None;
+    selection_event.property = x11::None;
   } else {
     selection_event.property = event->xselectionrequest.property;
     if (selection_event.target == targets_atom_) {
@@ -241,7 +238,7 @@
                          selection_event.target);
     }
   }
-  XSendEvent(display_, selection_event.requestor, False, 0,
+  XSendEvent(display_, selection_event.requestor, x11::False, 0,
              reinterpret_cast<XEvent*>(&selection_event));
 }
 
@@ -268,7 +265,7 @@
   // TODO(lambroslambrou): Should use a proper timestamp here instead of
   // CurrentTime.  ICCCM recommends doing a zero-length property append,
   // and getting a timestamp from the subsequent PropertyNotify event.
-  Time time = CurrentTime;
+  Time time = x11::CurrentTime;
   XChangeProperty(display_, requestor, property, XA_INTEGER, 32,
                   PropModeReplace, reinterpret_cast<unsigned char*>(&time), 1);
 }
@@ -350,16 +347,16 @@
 
 void XServerClipboard::RequestSelectionTargets(Atom selection) {
   XConvertSelection(display_, selection, targets_atom_, targets_atom_,
-                    clipboard_window_, CurrentTime);
+                    clipboard_window_, x11::CurrentTime);
 }
 
 void XServerClipboard::RequestSelectionString(Atom selection, Atom target) {
   XConvertSelection(display_, selection, target, selection_string_atom_,
-                    clipboard_window_, CurrentTime);
+                    clipboard_window_, x11::CurrentTime);
 }
 
 void XServerClipboard::AssertSelectionOwnership(Atom selection) {
-  XSetSelectionOwner(display_, selection, clipboard_window_, CurrentTime);
+  XSetSelectionOwner(display_, selection, clipboard_window_, x11::CurrentTime);
   if (XGetSelectionOwner(display_, selection) == clipboard_window_) {
     selections_owned_.insert(selection);
   } else {
diff --git a/remoting/host/linux/x_server_clipboard.h b/remoting/host/linux/x_server_clipboard.h
index 272c2bc3..f4cc3ce 100644
--- a/remoting/host/linux/x_server_clipboard.h
+++ b/remoting/host/linux/x_server_clipboard.h
@@ -7,15 +7,13 @@
 #ifndef REMOTING_HOST_LINUX_X_SERVER_CLIPBOARD_H_
 #define REMOTING_HOST_LINUX_X_SERVER_CLIPBOARD_H_
 
-#include <X11/Xatom.h>
-#include <X11/Xlib.h>
-
 #include <set>
 #include <string>
 
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/time/time.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/linux/x_server_clipboard_unittest.cc b/remoting/host/linux/x_server_clipboard_unittest.cc
index 8abf1cd..ea5ff30 100644
--- a/remoting/host/linux/x_server_clipboard_unittest.cc
+++ b/remoting/host/linux/x_server_clipboard_unittest.cc
@@ -7,12 +7,9 @@
 #include "base/bind.h"
 #include "base/macros.h"
 #include "remoting/base/constants.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-// X11 headers must be #included after gtest.h, since the X11 headers define
-// some macros that cause errors in gtest-type-util.h.
-#include <X11/Xlib.h>
 #include "remoting/host/linux/x_server_clipboard.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
@@ -72,10 +69,10 @@
     // XSynchronize() ensures that PumpXEvents() fully processes all X server
     // requests and responses before returning to the caller.
     Display* display1 = XOpenDisplay(nullptr);
-    XSynchronize(display1, True);
+    XSynchronize(display1, x11::True);
     client1_.Init(display1);
     Display* display2 = XOpenDisplay(nullptr);
-    XSynchronize(display2, True);
+    XSynchronize(display2, x11::True);
     client2_.Init(display2);
   }
 
diff --git a/remoting/host/local_input_monitor_x11.cc b/remoting/host/local_input_monitor_x11.cc
index cca14fda..8ae3403 100644
--- a/remoting/host/local_input_monitor_x11.cc
+++ b/remoting/host/local_input_monitor_x11.cc
@@ -7,11 +7,6 @@
 #include <sys/select.h>
 #include <unistd.h>
 
-#include "base/memory/ptr_util.h"
-#include "base/sequence_checker.h"
-#define XK_MISCELLANY
-#include <X11/keysymdef.h>
-
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/compiler_specific.h"
@@ -19,15 +14,12 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
+#include "base/sequence_checker.h"
 #include "base/single_thread_task_runner.h"
 #include "remoting/host/client_session_control.h"
 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
-
-// These includes need to be later than dictated by the style guide due to
-// Xlib header pollution, specifically the min, max, and Status macros.
-#include <X11/XKBlib.h>
-#include <X11/Xlibint.h>
-#include <X11/extensions/record.h>
+#include "ui/gfx/x/x11.h"
 
 namespace remoting {
 
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc
index 77aa9fd..0f6d662 100644
--- a/remoting/host/remoting_me2me_host.cc
+++ b/remoting/host/remoting_me2me_host.cc
@@ -118,11 +118,10 @@
 
 #if defined(OS_LINUX)
 #include <gtk/gtk.h>
-#include <X11/Xlib.h>
-#undef Status  // Xlib.h #defines this, which breaks protobuf headers.
-#include <base/linux_util.h>
+#include "base/linux_util.h"
 #include "remoting/host/audio_capturer_linux.h"
 #include "remoting/host/linux/certificate_watcher.h"
+#include "ui/gfx/x/x11.h"
 #endif  // defined(OS_LINUX)
 
 #if defined(OS_WIN)
diff --git a/remoting/test/it2me_standalone_host_main.cc b/remoting/test/it2me_standalone_host_main.cc
index d263f149e..8ff87e47 100644
--- a/remoting/test/it2me_standalone_host_main.cc
+++ b/remoting/test/it2me_standalone_host_main.cc
@@ -11,9 +11,9 @@
 
 #if defined(OS_LINUX)
 #include <gtk/gtk.h>
-#include <X11/Xlib.h>
 
 #include "base/linux_util.h"
+#include "ui/gfx/x/x11.h"
 #endif  // defined(OS_LINUX)
 
 int main(int argc, const char** argv) {
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
index 43cc7ba..8d24f5c 100644
--- a/skia/BUILD.gn
+++ b/skia/BUILD.gn
@@ -8,6 +8,7 @@
 import("//printing/features/features.gni")
 import("//testing/test.gni")
 import("//third_party/skia/gn/shared_sources.gni")
+import("//gpu/vulkan/features.gni")
 
 if (current_cpu == "arm") {
   import("//build/config/arm.gni")
@@ -21,6 +22,9 @@
 
 declare_args() {
   skia_whitelist_serialized_typefaces = false
+  if (enable_vulkan) {
+    vulkan_sdk_path = getenv("VULKAN_SDK")
+  }
 }
 
 # External-facing config for dependent code.
@@ -43,6 +47,9 @@
     "//third_party/skia/include/utils",
     "//third_party/skia/third_party/vulkan",
   ]
+  if (enable_vulkan) {
+    include_dirs += [ "$vulkan_sdk_path/include" ]
+  }
 
   defines = skia_for_chromium_defines
   defines += [
@@ -53,6 +60,9 @@
   if (!is_ios) {
     defines += [ "SK_HAS_JPEG_LIBRARY" ]
   }
+  if (enable_vulkan) {
+    defines += [ "SK_VULKAN=1" ]
+  }
 
   if (is_component_build) {
     defines += [
@@ -66,6 +76,9 @@
       "//third_party/skia/src/gpu",
       "//third_party/skia/src/sksl",
     ]
+    if (enable_vulkan) {
+      include_dirs += [ "//third_party/skia/include/gpu/vk/" ]
+    }
     defines += [ "SK_SUPPORT_GPU=1" ]
   } else {
     defines += [ "SK_SUPPORT_GPU=0" ]
@@ -305,6 +318,9 @@
     sources += skia_gpu_sources
     sources += skia_null_gpu_sources
     sources += skia_sksl_sources
+    if (enable_vulkan) {
+      sources += skia_vk_sources
+    }
   }
 
   # Remove unused util sources.
diff --git a/storage/browser/blob/blob_data_handle.cc b/storage/browser/blob/blob_data_handle.cc
index 22dc7a16..fd92efa 100644
--- a/storage/browser/blob/blob_data_handle.cc
+++ b/storage/browser/blob/blob_data_handle.cc
@@ -95,6 +95,9 @@
 }
 
 BlobStatus BlobDataHandle::GetBlobStatus() const {
+  DCHECK(io_task_runner_->RunsTasksInCurrentSequence());
+  if (!shared_->context_)
+    return BlobStatus::ERR_REFERENCED_BLOB_BROKEN;
   return shared_->context_->GetBlobStatus(shared_->uuid_);
 }
 
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index dbde41f..7c552c5 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -4239,6 +4239,21 @@
             ]
         }
     ],
+    "WebRTC-NetEqOpusDtxDelayFix": [
+        {
+            "platforms": [
+                "chromeos",
+                "linux",
+                "mac",
+                "win"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled"
+                }
+            ]
+        }
+    ],
     "WebRTC-ProbingScreenshareBwe": [
         {
             "platforms": [
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html
index 2a1d8f9..ca584b1 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html
@@ -23,7 +23,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(false);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html
index 3b84008..ae89862 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html
@@ -23,7 +23,7 @@
 </style>
 <script>
 if (window.internals)
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
 </script>
 <div id='scroller'>
   <div id='fixed'></div>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html
index b01e264..be8b522d 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html
@@ -35,7 +35,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html
index 3eb1a83..8d8d8926 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html
@@ -35,7 +35,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(false);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html
index 6b436a1b..81c171d2 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html
@@ -36,7 +36,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(false);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html
index 045eb20..b4b65e99 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html
@@ -41,7 +41,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html
index a02c8a8..b1495ae 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html
@@ -32,7 +32,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(false);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html
index 85f9468..48c536dd 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html
@@ -37,7 +37,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html
index 16bb95cf..0445b8ed 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html
@@ -42,7 +42,7 @@
   testRunner.dumpAsText();
 
 if (window.internals) {
-  window.internals.settings.setOverlayScrollbarsEnabled(true);
+  window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
   window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html
index 3d666ca..abfbeb8 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html
@@ -23,7 +23,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(false);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html
index 339be18..71de73ac 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html
@@ -29,7 +29,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html b/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html
index cbd4365a..f5f9d86 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html
@@ -50,7 +50,7 @@
 </div>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html
index 2c923a4..ad67b8b 100644
--- a/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html
+++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html
@@ -19,7 +19,7 @@
 -->
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html
index 1e1199f..18ca7ed8 100644
--- a/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html
+++ b/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html
@@ -40,7 +40,7 @@
 </style>
 <script>
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html
index 85e432a6..485427b 100644
--- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html
+++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html
@@ -32,5 +32,5 @@
 </div>
 <script>
 if (window.internals)
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
 </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html
index 7edd589..5f76ca4 100644
--- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html
+++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html
@@ -38,7 +38,7 @@
 // Check that a case with a reparented overflow control and a containing perspective node
 // paints the same with and without layer squashing.
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setPreferCompositingToLCDTextEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-scaled-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-scaled-overlay-scrollbars.html
index df14428..c1c7531 100644
--- a/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-scaled-overlay-scrollbars.html
+++ b/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-scaled-overlay-scrollbars.html
@@ -9,7 +9,7 @@
 </style>
 <script>
 if (window.internals)
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
 if (window.testRunner)
     testRunner.dumpAsText();
 if (window.eventSender)
diff --git a/third_party/WebKit/LayoutTests/fast/block/float/float-change-composited-scrolling.html b/third_party/WebKit/LayoutTests/fast/block/float/float-change-composited-scrolling.html
index 42fc06c..ddbea9b 100644
--- a/third_party/WebKit/LayoutTests/fast/block/float/float-change-composited-scrolling.html
+++ b/third_party/WebKit/LayoutTests/fast/block/float/float-change-composited-scrolling.html
@@ -4,7 +4,7 @@
 if (window.internals) {
   internals.settings.setPreferCompositingToLCDTextEnabled(true);
   internals.settings.setMockScrollbarsEnabled(true);
-  internals.settings.setOverlayScrollbarsEnabled(true);
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
 }
 
 if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html
index 34642ca..3bf1e085 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html
@@ -28,7 +28,7 @@
         testRunner.dumpAsText();
 
     if (window.internals)
-        window.internals.settings.setOverlayScrollbarsEnabled(true);
+        window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
     test(function() {
         var measure = document.getElementById('measure');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html
index fa557ba..d98864b 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html
@@ -28,7 +28,7 @@
         testRunner.dumpAsText();
 
     if (window.internals)
-        window.internals.settings.setOverlayScrollbarsEnabled(true); // Note: We force non-overlay scrollbars with CSS.
+        window.internals.runtimeFlags.overlayScrollbarsEnabled = true; // Note: We force non-overlay scrollbars with CSS.
 
     var test = async_test("Test that partial layout works with non-overlay scrollbars.");
     setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html
index 53a6133..5b07116e 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html
@@ -23,7 +23,7 @@
         testRunner.dumpAsText();
 
     if (window.internals)
-        window.internals.settings.setOverlayScrollbarsEnabled(true);
+        window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
     var test = async_test("Test that partial layout works with overlay scrollbars.");
     setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/root-client-size-iframe.html b/third_party/WebKit/LayoutTests/fast/dom/root-client-size-iframe.html
index acca1981..915a0f9 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/root-client-size-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/root-client-size-iframe.html
@@ -13,7 +13,7 @@
     shouldBeDefined(window.internals);
 
     var originalOverlayScrollbars = internals.runtimeFlags.overlayScrollbarsEnabled;
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
     function runTests() {
         clientWidthBefore = frame.contentDocument.documentElement.clientWidth;
@@ -24,7 +24,7 @@
         shouldBe("clientWidthBefore", "100");
         shouldBe("clientWidthAfter", "200");
 
-        internals.settings.setOverlayScrollbarsEnabled(originalOverlayScrollbars);
+        internals.runtimeFlags.overlayScrollbarsEnabled = originalOverlayScrollbars;
         finishJSTest();
     }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html b/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html
index 9efabc5..7a387306 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html
@@ -39,15 +39,15 @@
 
     var originalOverlayScrollbars = internals.runtimeFlags.overlayScrollbarsEnabled;
 
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
     runClientSizeTest("wide", false, false, 1);
     runClientSizeTest("tall", false, false, 1);
 
-    internals.settings.setOverlayScrollbarsEnabled(false);
+    internals.runtimeFlags.overlayScrollbarsEnabled = false;
 
     runClientSizeTest("wide", false, true, 0);
     runClientSizeTest("tall", true, false, 0);
 
-    internals.settings.setOverlayScrollbarsEnabled(originalOverlayScrollbars);
+    internals.runtimeFlags.overlayScrollbarsEnabled = originalOverlayScrollbars;
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html
index 903b541..1fa16dd7 100644
--- a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html
+++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html
@@ -18,7 +18,7 @@
 description("Ensure hit test cache works in correct scenarios of overlay scrollbars.");
 
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
     var parentDiv = document.getElementById("parent");
     var rect = parentDiv.getBoundingClientRect();
@@ -30,4 +30,4 @@
     window.internals.elementFromPoint(document, rect.left + rect.width - 2, rect.top + (rect.height/2), false, false);
     shouldBe("window.internals.hitTestCacheHits(document)", "expectedCount");
 }
-</script>
\ No newline at end of file
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/listbox-overlay-scrollbar.html b/third_party/WebKit/LayoutTests/fast/forms/select/listbox-overlay-scrollbar.html
index e0934ab..ea3b9fd 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/select/listbox-overlay-scrollbar.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/select/listbox-overlay-scrollbar.html
@@ -19,7 +19,7 @@
 <script>
 if (window.internals) {
     testRunner.dumpAsTextWithPixelResults();
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
     internals.settings.setMockScrollbarsEnabled(true);
 }
 </script>
@@ -47,4 +47,4 @@
 </select>
 </div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/WebKit/LayoutTests/fast/lists/list-and-margin-collapse.html b/third_party/WebKit/LayoutTests/fast/lists/list-and-margin-collapse.html
new file mode 100644
index 0000000..2905721
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/lists/list-and-margin-collapse.html
@@ -0,0 +1,14 @@
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<ul id="target" style="margin-top:100px;">
+  <li>
+    <div style="overflow:hidden; margin-top:100px; height:25px;"><a href="#">xxx</a></div>
+  </li>
+</ul>
+<div id="log"></div>
+<script>
+test(function() {
+  var height = document.getElementById("target").clientHeight;
+  assert_equals(height, 25, "the height of ul should be 25px")
+}, "list and margin collapse");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/overlay-scrollbars.html b/third_party/WebKit/LayoutTests/fast/scrolling/overlay-scrollbars.html
index b4f315f..8b02104c 100644
--- a/third_party/WebKit/LayoutTests/fast/scrolling/overlay-scrollbars.html
+++ b/third_party/WebKit/LayoutTests/fast/scrolling/overlay-scrollbars.html
@@ -20,7 +20,7 @@
 <script>
 if (window.internals) {
     testRunner.dumpAsTextWithPixelResults();
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
     internals.settings.setMockScrollbarsEnabled(true);
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html
index 78c9933..9e1deb55 100644
--- a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html
+++ b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html
@@ -6,7 +6,7 @@
 <script>
 description('Checks that clicking on scrollbar works when tickmarks are added.');
 if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
 }
 
 onload = function()
diff --git a/third_party/WebKit/LayoutTests/html/sections/body-quirk-client-size.html b/third_party/WebKit/LayoutTests/html/sections/body-quirk-client-size.html
index 3b990145..8973954 100644
--- a/third_party/WebKit/LayoutTests/html/sections/body-quirk-client-size.html
+++ b/third_party/WebKit/LayoutTests/html/sections/body-quirk-client-size.html
@@ -39,15 +39,15 @@
 
     var originalOverlayScrollbars = internals.runtimeFlags.overlayScrollbarsEnabled;
 
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
     runClientSizeTest("wide", false, false, 1);
     runClientSizeTest("tall", false, false, 1);
 
-    internals.settings.setOverlayScrollbarsEnabled(false);
+    internals.runtimeFlags.overlayScrollbarsEnabled = false;
 
     runClientSizeTest("wide", false, true, 0);
     runClientSizeTest("tall", true, false, 0);
 
-    internals.settings.setOverlayScrollbarsEnabled(originalOverlayScrollbars);
+    internals.runtimeFlags.overlayScrollbarsEnabled = originalOverlayScrollbars;
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/worklet/dynamic-import-expected.txt b/third_party/WebKit/LayoutTests/http/tests/worklet/dynamic-import-expected.txt
new file mode 100644
index 0000000..d478a94
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/worklet/dynamic-import-expected.txt
@@ -0,0 +1,7 @@
+CONSOLE MESSAGE: line 9: This test logs a result once from each PaintWorkletGlobalScope
+CONSOLE ERROR: line 3: TypeError: import() is disallowed on WorkletGlobalScope.
+CONSOLE ERROR: line 3: TypeError: import() is disallowed on WorkletGlobalScope.
+This is a testharness.js-based test.
+PASS Dynamic import() on WorkletGlobalScope should reject the promise.
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/http/tests/worklet/dynamic-import.html b/third_party/WebKit/LayoutTests/http/tests/worklet/dynamic-import.html
new file mode 100644
index 0000000..ac0f4481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/worklet/dynamic-import.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>Worklet: Dynamic import() on WorkletGlobalScope</title>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script>
+
+// This test should not be upstreamed to WPT because this tests console outputs.
+
+console.log('This test logs a result once from each PaintWorkletGlobalScope');
+promise_test(() => {
+  const kScriptURL = 'resources/dynamic-import-worklet-script.js';
+  return CSS.paintWorklet.addModule(kScriptURL)
+    .then(result => assert_equals(undefined, result));
+}, 'Dynamic import() on WorkletGlobalScope should reject the promise.');
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/worklet/resources/dynamic-import-worklet-script.js b/third_party/WebKit/LayoutTests/http/tests/worklet/resources/dynamic-import-worklet-script.js
new file mode 100644
index 0000000..11734ef
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/worklet/resources/dynamic-import-worklet-script.js
@@ -0,0 +1,3 @@
+import('./empty-worklet-script.js')
+    .then(() => console.error('Should not reach here.'))
+    .catch(e => console.error(e.name + ': ' + e.message));
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/destroy-overlay-scrollbar.html b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/destroy-overlay-scrollbar.html
index 783c1566..3ce2a7ec 100644
--- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/destroy-overlay-scrollbar.html
+++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/destroy-overlay-scrollbar.html
@@ -2,7 +2,7 @@
 <script src="../resources/text-based-repaint.js"></script>
 <script>
 if (window.internals) {
-  internals.settings.setOverlayScrollbarsEnabled(true);
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
   internals.settings.setMockScrollbarsEnabled(true);
 }
 function repaintTest() {
diff --git a/third_party/WebKit/LayoutTests/plugins/overlay-scrollbar-mouse-capture.html b/third_party/WebKit/LayoutTests/plugins/overlay-scrollbar-mouse-capture.html
index 6b6abc1..5924bd2f 100644
--- a/third_party/WebKit/LayoutTests/plugins/overlay-scrollbar-mouse-capture.html
+++ b/third_party/WebKit/LayoutTests/plugins/overlay-scrollbar-mouse-capture.html
@@ -57,7 +57,7 @@
         // RuntimeEnabledFeature after the ScrollbarTheme is initialized. It
         // makes the non overlay scrollbars think they're overlay so it works
         // for this test but it should probably be in a unit test.
-        internals.settings.setOverlayScrollbarsEnabled(true);
+        internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
         var d = document.getElementById('container');
         var plugin = document.createElement('object');
diff --git a/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html b/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html
index 283508c8..e01bb80 100644
--- a/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html
+++ b/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script>
   if (window.internals) {
-    window.internals.settings.setOverlayScrollbarsEnabled(true);
+    window.internals.runtimeFlags.overlayScrollbarsEnabled = true;
     window.internals.settings.setMockScrollbarsEnabled(true);
 
     window.onload = function() {
diff --git a/third_party/WebKit/LayoutTests/scrollbars/hidden-scrollbars-invisible.html b/third_party/WebKit/LayoutTests/scrollbars/hidden-scrollbars-invisible.html
index dce32018..1328554 100644
--- a/third_party/WebKit/LayoutTests/scrollbars/hidden-scrollbars-invisible.html
+++ b/third_party/WebKit/LayoutTests/scrollbars/hidden-scrollbars-invisible.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script>
 if (window.internals) {
-  internals.settings.setOverlayScrollbarsEnabled(true);
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
   internals.settings.setMockScrollbarsEnabled(true);
 }
 </script>
@@ -15,7 +15,7 @@
 <script>
   window.onload = function() {
     if (window.internals) {
-      internals.settings.setOverlayScrollbarsEnabled(true);
+      internals.runtimeFlags.overlayScrollbarsEnabled = true;
 
       var div = document.querySelector('#div');
       var iframe = document.querySelector('#iframe');
diff --git a/third_party/WebKit/LayoutTests/scrollbars/overlay-scrollbars-within-overflow-scroll.html b/third_party/WebKit/LayoutTests/scrollbars/overlay-scrollbars-within-overflow-scroll.html
index d95481c..7e8048d 100644
--- a/third_party/WebKit/LayoutTests/scrollbars/overlay-scrollbars-within-overflow-scroll.html
+++ b/third_party/WebKit/LayoutTests/scrollbars/overlay-scrollbars-within-overflow-scroll.html
@@ -31,7 +31,7 @@
 
 <script>
 if (window.internals) {
-    internals.settings.setOverlayScrollbarsEnabled(true);
+    internals.runtimeFlags.overlayScrollbarsEnabled = true;
     internals.settings.setMockScrollbarsEnabled(true);
 }
 const outer = document.getElementById('outer');
diff --git a/third_party/WebKit/Source/bindings/IDLExtendedAttributes.md b/third_party/WebKit/Source/bindings/IDLExtendedAttributes.md
index aa352711..e8589cf 100644
--- a/third_party/WebKit/Source/bindings/IDLExtendedAttributes.md
+++ b/third_party/WebKit/Source/bindings/IDLExtendedAttributes.md
@@ -142,7 +142,7 @@
 
 Standard: [CEReactions](https://html.spec.whatwg.org/multipage/scripting.html#cereactions)
 
-Summary: `[CEReactoins]` indicates that
+Summary: `[CEReactions]` indicates that
 [custom element reactions](https://html.spec.whatwg.org/multipage/scripting.html#concept-custom-element-reaction)
 are triggered for this method or attribute.
 
diff --git a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp b/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp
index cd822ca..38fb74f 100644
--- a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp
+++ b/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.cpp
@@ -4,8 +4,10 @@
 
 #include "core/dom/WorkletModulatorImpl.h"
 
+#include "bindings/core/v8/ScriptPromiseResolver.h"
 #include "core/loader/modulescript/WorkletModuleScriptFetcher.h"
 #include "core/workers/WorkletGlobalScope.h"
+#include "platform/bindings/V8ThrowException.h"
 
 namespace blink {
 
@@ -28,4 +30,13 @@
       global_scope->ModuleResponsesMapProxy());
 }
 
+void WorkletModulatorImpl::ResolveDynamically(const String&,
+                                              const KURL&,
+                                              const ReferrerScriptInfo&,
+                                              ScriptPromiseResolver* resolver) {
+  resolver->Reject(V8ThrowException::CreateTypeError(
+      GetScriptState()->GetIsolate(),
+      "import() is disallowed on WorkletGlobalScope."));
+}
+
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h b/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h
index 9de2458..0a3f6837 100644
--- a/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h
+++ b/third_party/WebKit/Source/core/dom/WorkletModulatorImpl.h
@@ -21,12 +21,18 @@
  public:
   static ModulatorImplBase* Create(scoped_refptr<ScriptState>);
 
-  // Implements Modulator.
+  // Implements ModulatorImplBase.
   SecurityOrigin* GetSecurityOriginForFetch() override;
   ModuleScriptFetcher* CreateModuleScriptFetcher() override;
 
  private:
   explicit WorkletModulatorImpl(scoped_refptr<ScriptState>);
+
+  // Implements ModulatorImplBase.
+  void ResolveDynamically(const String& specifier,
+                          const KURL&,
+                          const ReferrerScriptInfo&,
+                          ScriptPromiseResolver*) final;
 };
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
index 9337bb9db..6e02828 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
@@ -387,6 +387,16 @@
   if (has_auto_height || ((logical_height_length.IsFixed() ||
                            logical_height_length.IsPercentOrCalc()) &&
                           logical_height_length.IsZero())) {
+    // Marker_container should be a self-collapsing block. Marker_container is a
+    // zero height anonymous block and marker is its only child.
+    if (logical_height_length.IsFixed() && logical_height_length.IsZero() &&
+        IsAnonymous() && Parent() && Parent()->IsListItem()) {
+      LayoutObject* first_child = FirstChild();
+      if (first_child && first_child->IsListMarker() &&
+          !first_child->NextSibling())
+        return true;
+    }
+
     // If the block has inline children, see if we generated any line boxes.
     // If we have any line boxes, then we can't be self-collapsing, since we
     // have content.
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.cpp b/third_party/WebKit/Source/core/testing/InternalSettings.cpp
index 3ddc48b..5c23eaba 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.cpp
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.cpp
@@ -168,10 +168,6 @@
       enabled);
 }
 
-void InternalSettings::setOverlayScrollbarsEnabled(bool enabled) {
-  RuntimeEnabledFeatures::SetOverlayScrollbarsEnabled(enabled);
-}
-
 void InternalSettings::setViewportEnabled(bool enabled,
                                           ExceptionState& exception_state) {
   InternalSettingsGuardForSettings();
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.h b/third_party/WebKit/Source/core/testing/InternalSettings.h
index ae862c5..28145440 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.h
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.h
@@ -131,7 +131,6 @@
   // cannot be changed after process start. These setters should
   // be removed or moved onto internals.runtimeFlags:
   void setLangAttributeAwareFormControlUIEnabled(bool);
-  void setOverlayScrollbarsEnabled(bool);
   void setExperimentalContentSecurityPolicyFeaturesEnabled(bool);
   void setImageAnimationPolicy(const String&, ExceptionState&);
   void setScrollTopLeftInteropEnabled(bool);
diff --git a/third_party/WebKit/Source/core/testing/InternalSettings.idl b/third_party/WebKit/Source/core/testing/InternalSettings.idl
index cf83088..ef34435a 100644
--- a/third_party/WebKit/Source/core/testing/InternalSettings.idl
+++ b/third_party/WebKit/Source/core/testing/InternalSettings.idl
@@ -60,7 +60,6 @@
     // cannot be changed after process start.  These setters should
     // be removed or moved onto internals.runtimeFlags:
     void setLangAttributeAwareFormControlUIEnabled(boolean enabled);
-    void setOverlayScrollbarsEnabled(boolean enabled);
     void setExperimentalContentSecurityPolicyFeaturesEnabled(boolean enabled);
     void setScrollTopLeftInteropEnabled(boolean enabled);
 };
diff --git a/third_party/vulkan/BUILD.gn b/third_party/vulkan/BUILD.gn
index b7388a2..b21f295 100644
--- a/third_party/vulkan/BUILD.gn
+++ b/third_party/vulkan/BUILD.gn
@@ -2,6 +2,17 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-config("vulkan_headers") {
+config("vulkan_config") {
   include_dirs = [ "include" ]
+  vulkan_lib_dir = getenv("VULKAN_SDK") + "/lib"
+  libs = [ "vulkan" ]
+
+  if (current_cpu == "x64") {
+    lib_dirs = [
+      "/usr/lib/x86_64-linux-gnu",
+      vulkan_lib_dir,
+    ]
+  } else {
+    assert(false, "Unsupported vulkan target: " + current_cpu)
+  }
 }
diff --git a/third_party/vulkan/README.chromium b/third_party/vulkan/README.chromium
index 85ffc4bb..d7becce 100644
--- a/third_party/vulkan/README.chromium
+++ b/third_party/vulkan/README.chromium
@@ -1,4 +1,4 @@
-Name: Vulkan API headers
+Name: Vulkan API headers & library
 Short Name: Vulkan
 URL: https://github.com/LunarG/VulkanTools/tree/master/include/vulkan
 Version: Unknown
@@ -7,7 +7,7 @@
 License File: LICENSE
 
 Description:
-This simply includes the include files for the Vulkan SDK. Eventually this
+This simply includes the include files and library for the Vulkan SDK. Eventually this
 will just be taken from the build system.
 
 Local Modifications:
diff --git a/ui/compositor/test/in_process_context_factory.cc b/ui/compositor/test/in_process_context_factory.cc
index 339e1b7..3a9faea 100644
--- a/ui/compositor/test/in_process_context_factory.cc
+++ b/ui/compositor/test/in_process_context_factory.cc
@@ -123,6 +123,9 @@
   bool SurfaceIsSuspendForRecycle() const override { return false; }
   bool HasExternalStencilTest() const override { return false; }
   void ApplyExternalStencil() override {}
+#if BUILDFLAG(ENABLE_VULKAN)
+  gpu::VulkanSurface* GetVulkanSurface() override { return nullptr; }
+#endif
 
  private:
   void OnSwapBuffersComplete(uint64_t swap_id) {
diff --git a/ui/gfx/x/x11.h b/ui/gfx/x/x11.h
index f6c24ca..62d4110 100644
--- a/ui/gfx/x/x11.h
+++ b/ui/gfx/x/x11.h
@@ -33,6 +33,7 @@
 #include <X11/extensions/Xfixes.h>
 #include <X11/extensions/Xrandr.h>
 #include <X11/extensions/Xrender.h>
+#include <X11/extensions/record.h>
 #include <X11/extensions/scrnsaver.h>
 #include <X11/extensions/shape.h>
 
@@ -65,6 +66,7 @@
 #define XK_MATHEMATICAL
 #define XK_BRAILLE
 #define XK_SINHALA
+#define XK_XKB_KEYS
 
 #ifndef XK_dead_greek
 #define XK_dead_greek 0xfe8c