Chrome OS: Remove dead code of Host/Controller pairing screens.

Bug: 856337
Cq-Include-Trybots: luci.chromium.try:closure_compilation
Change-Id: I1fc6d0eff37bdb3f7c2175861782652ee028c4b2
Reviewed-on: https://chromium-review.googlesource.com/c/1114240
Commit-Queue: Alexander Alekseev <alemate@chromium.org>
Reviewed-by: Achuith Bhandarkar <achuith@chromium.org>
Reviewed-by: Xiaoqian Dai <xdai@chromium.org>
Reviewed-by: Zachary Kuznia <zork@chromium.org>
Reviewed-by: Maksim Ivanov <emaxx@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616947}
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index 66a56ce..4a1abe48 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -280,12 +280,6 @@
   <message name="IDS_OOBE_ADVANCED_OPTIONS_SCREEN_TITLE" desc="Screen title on the Chrome OS OOBE (first run) Advanced options screen">
     Advanced options
   </message>
-  <message name="IDS_OOBE_ADVANCED_OPTIONS_EE_BOOTSTRAPPING_TITLE" desc="Title of the button that triggers Enterprise Enrollment via bootstrapping application mode on the Chrome OS OOBE (first run UI) Advanced options screen">
-    Enable remote enrollment
-  </message>
-  <message name="IDS_OOBE_ADVANCED_OPTIONS_EE_BOOTSTRAPPING_SUBTITLE" desc="Subtitle of the button that triggers Enterprise Enrollment via bootstrapping application mode on the Chrome OS OOBE (first run UI) Advanced options screen">
-    Use the bootstrapping app to quickly enroll
-  </message>
   <message name="IDS_OOBE_ADVANCED_OPTIONS_CFM_SETUP_TITLE" desc="Title of the button that triggers Chromebox for Meetings device mode on the Chrome OS OOBE (first run UI) Advanced options screen">
     Set up as Chromebox for meetings
   </message>
@@ -2370,137 +2364,6 @@
   <message name="IDS_ENABLE_DEMO_MODE_DIALOG_CONFIRM" desc="Confirm button text in the enable demo mode dialog.">
     OK
   </message>
-  <message name="IDS_PAIRING_CONTROLLER_WELCOME" desc="Message shown on 'Hangouts Meet' controller in the beginning of the setup process.">
-    Welcome to Hangouts Meet
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_SEARCHING" desc="Message shown on 'Hangouts Meet' controller when it is searching for host devices.">
-    Searching for nearby Chromeboxes...
-  </message>
-  <message name="IDS_PAIRING_NEED_HELP" desc="Text on the button launching help article about the 'Hangouts Meet' setup process.">
-    Need help?
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_TROUBLE_CONNECTING" desc="Title of the the dialog giving an advice on how to improve a connection between a host and a controller during the 'Hangouts Meet' setup process.">
-    Trouble connecting?
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONNECTING_ADVICE" desc="Text in the dialog giving an advice on how to improve a connection between a host and a controller during the 'Hangouts Meet' setup process.">
-    Please make sure that your Hotrod device is turned on and connected to a TV.
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ADVICE_GOT_IT" desc="Text on the confirmation button of the dialog giving an advice on how to improve a connection between a host and a controller during the 'Hangouts Meet' setup process.">
-    OK, got it
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_SELECT_TITLE" desc="Title of the list of nearby 'Hangouts Meet' devices, that is shown on a controller device during a setup process.">
-    Select a Chromebox to connect to
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONNECT" desc="Text on the button initiating a connection to the choosen device. After a user pressed the button, text changes to 'Connecting...'.">
-    Connect
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONNECTING" desc="Text on the button initiating a connection to the choosen device, after a user pressed it. The initial text is 'Connect'.">
-    Connecting...
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONFIRMATION_TITLE" desc="Title of the page showing the confirmation code on a controller's screen during the 'Hangouts Meet' setup process.">
-    Pair with Chromebox
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONFIRMATION_QUESTION" desc="Text that is shown near 6-digit confirmation code on a controller's screen during the 'Hangouts Meet' setup process.">
-    Does this code appear on your Chromebox screen?
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_REJECT_CODE" desc="Text on a button which the user presses to report that they don't see a confirmation code.">
-    No, I don't see it
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ACCEPT_CODE" desc="Text on a button which the user presses to report that they see a correct confirmation code.">
-    Yes, I see it
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_UPDATE_TITLE" desc="Title of the controller's update page of the 'Hangouts Meet' setup process.">
-    Updating Chromebox
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_UPDATE_TEXT" desc="Text on the controller's update page of the 'Hangouts Meet' setup process.">
-    In order to bring you the latest features, your Chromebox needs to update.
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONNECTION_LOST_TITLE" desc="Title of the controller page which says that connection with host was lost during the 'Hangouts Meet' setup process.">
-    Connection to Chromebox lost
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONNECTION_LOST_TEXT" desc="Text on the controller page which says that connection with host was lost during the 'Hangouts Meet' setup process.">
-    Lost connection to your Chromebox. Please move closer, or check your device while we try to reconnect.
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_HOST_NETWORK_ERROR_TITLE" desc="Title of the controller page which says that the host device's network is not set up successfully.">
-    Failed to set up your Chromebox's network
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ENROLL_TITLE" desc="Title of the enroll page of the 'Hangouts Meet' setup process.">
-    Enroll in your organization
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ENROLL_TEXT_1" desc="First paragraph of text shown on the controller's enroll page of the 'Hangouts Meet' setup process. Second paragraph is: 'This will only happen once, and your credentials will not be stored.'">
-    Hangouts Meet needs to know what domain it belongs to. This will require you to sign in to your account.
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ENROLL_TEXT_2" desc="Second paragraph of text shown on the controller's enroll page of the 'Hangouts Meet' setup process. First paragraph is: 'Hangouts Meet needs to know what domain it belongs to. This will require you to sign in to your account.'">
-    This will only happen once, and your credentials will not be stored.
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONTINUE" desc="Text on buttons leading to the next step of the 'Hangouts Meet' setup process.">
-    Continue
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ENROLLMENT_IN_PROGRESS" desc="Message shown on enroll screens of the 'Hangouts Meet' setup process.">
-    Enrolling in <ph name="BEGIN_BOLD">&lt;strong&gt;</ph><ph name="DOMAIN_NAME">$1<ex>example.com</ex></ph><ph name="END_BOLD">&lt;/strong&gt;</ph>...
-  </message>
-  <message name="IDS_PAIRING_ENROLLMENT_ERROR_TITLE" desc="Title of the page shown when enrollment attempt is failed during the 'Hangouts Meet' setup process.">
-    Unable to enroll
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_ENROLLMENT_ERROR_HOST_RESTARTS" desc="Text on the controller's page shown when enrollment attempt is failed during the 'Hangouts Meet' setup process.">
-    Please wait while your Chromebox restarts...
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_SUCCESS_TITLE" desc="Title of the final controller's page shown when the 'Hangouts Meet' setup process is finished.">
-    Success!
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_SUCCESS_TEXT" desc="Text on the final controller's page shown when the 'Hangouts Meet' setup process is finished.">
-    <ph name="DEVICE_NAME">$1<ex>Chromebox-01</ex></ph> will now appear in the Admin Console
-  </message>
-  <message name="IDS_PAIRING_CONTROLLER_CONTINUE_TO_HANGOUTS" desc="Text on the button, shown on the final controller's page, displayed when the 'Hangouts Meet' setup process is finished.">
-    Continue to Hangouts Meet
-  </message>
-  <message name="IDS_PAIRING_HOST_WELCOME_TITLE" desc="Title of the host's welcome page of the 'Hangouts Meet' setup process.">
-    Welcome to Hangouts Meet!
-  </message>
-  <message name="IDS_PAIRING_HOST_WELCOME_TEXT" desc="Text on the host's welcome page of the 'Hangouts Meet' setup process.">
-    Turn on your touch controller to set me up
-  </message>
-  <message name="IDS_PAIRING_HOST_UPDATING_TITLE" desc="Title of the host's update page of the 'Hangouts Meet' setup process.">
-    Updating Chromebox...
-  </message>
-  <message name="IDS_PAIRING_HOST_UPDATING_TEXT" desc="Update progress shown on the host's update page of the 'Hangouts Meet' setup process.">
-    <ph name="DOWNLOADED_AMOUNT_MB">$1<ex>13.7</ex></ph> MB / <ph name="TOTAL_AMOUNT_MB">$2<ex>23</ex></ph> MB downloaded
-  </message>
-  <message name="IDS_PAIRING_HOST_DONE_TITLE" desc="Title of the final host's page shown when the 'Hangouts Meet' setup process is finished.">
-    Congratulations
-  </message>
-  <message name="IDS_PAIRING_HOST_DONE_TEXT" desc="Title of the final host's page shown when the 'Hangouts Meet' setup process is finished.">
-    You're all set to continue on to Hangouts Meet
-  </message>
-  <message name="IDS_PAIRING_HOST_ERROR_NEED_RESTART_TEXT" desc="Text on the host's error page shown when the bootstrapping attampt or 'Hangouts Meet' setup process is failed.">
-    Please restart the device and try again later.
-  </message>
-
-  <!-- Strings for the bootstrapping OOBE process -->
-  <message name="IDS_HOST_SETUP_BASIC_CONFIGURATION_TITLE" desc="Title of the host's basic configuration setup page during the bootstrapping process.">
-    Setup network connection, language, keyboard layout...
-  </message>
-  <message name="IDS_HOST_SETUP_NETWORK_ERROR_TITLE" desc="Title of the host's network error page during the bootstrapping process.">
-    Could not set up network
-  </message>
-  <message name="IDS_SLAVE_CONFIRMATION_TITLE" desc="Title of the host's confirmation page of the bootstrapping process. 6-digit confirmation code is displayed below.">
-    Initialize the connection
-  </message>
-  <message name="IDS_SLAVE_ENROLL_TITLE" desc="Title of the enroll page of the bootstrapping process.">
-    Enroll in your organization
-  </message>
-  <message name="IDS_SLAVE_ENROLLMENT_IN_PROGRESS" desc="Message shown on the host screen of the bootstrapping process.">
-    Enrolling in <ph name="BEGIN_BOLD">&lt;strong&gt;</ph><ph name="DOMAIN_NAME">$1<ex>example.com</ex></ph><ph name="END_BOLD">&lt;/strong&gt;</ph>...
-  </message>
-  <message name="IDS_SLAVE_ENROLLMENT_ERROR_TITLE" desc="Title of the page shown when enrollment attempt is failed during the bootstrapping process.">
-    Unable to enroll
-  </message>
-  <message name="IDS_PAIRING_HOST_INITIALIZATION_ERROR_TITLE" desc="Title of the host's initialization error page during the bootstrapping process or 'Hangouts Meet' setup process.">
-    Could not initialize the connection
-  </message>
-  <message name="IDS_PAIRING_HOST_CONNECTION_ERROR_TITLE" desc="Title of the host's connection error page during the bootstrapping process or 'Hangouts Meet' setup process.">
-    Connection was lost
-  </message>
 
   <!-- Strings for the enterprise enrollment page -->
   <message name="IDS_ENTERPRISE_ENROLLMENT_STATUS_REGISTRATION_FAILED" desc="Error message shown on the enrollment screen upon failed device registration.">
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 4f55472..bcf54d5 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -143,7 +143,6 @@
     "//components/omnibox/browser",
     "//components/onc",
     "//components/ownership",
-    "//components/pairing",
     "//components/password_manager/core/browser",
     "//components/password_manager/core/browser:hash_password_manager",
     "//components/policy:generated",
@@ -1156,10 +1155,6 @@
     "login/screens/base_screen_delegate.h",
     "login/screens/chrome_user_selection_screen.cc",
     "login/screens/chrome_user_selection_screen.h",
-    "login/screens/controller_pairing_screen.cc",
-    "login/screens/controller_pairing_screen.h",
-    "login/screens/controller_pairing_screen_view.cc",
-    "login/screens/controller_pairing_screen_view.h",
     "login/screens/core_oobe_view.h",
     "login/screens/demo_preferences_screen.cc",
     "login/screens/demo_preferences_screen.h",
@@ -1195,10 +1190,6 @@
     "login/screens/hid_detection_screen.cc",
     "login/screens/hid_detection_screen.h",
     "login/screens/hid_detection_view.h",
-    "login/screens/host_pairing_screen.cc",
-    "login/screens/host_pairing_screen.h",
-    "login/screens/host_pairing_screen_view.cc",
-    "login/screens/host_pairing_screen_view.h",
     "login/screens/kiosk_autolaunch_screen.cc",
     "login/screens/kiosk_autolaunch_screen.h",
     "login/screens/kiosk_autolaunch_screen_view.h",
diff --git a/chrome/browser/chromeos/login/bluetooth_host_pairing_browsertest.cc b/chrome/browser/chromeos/login/bluetooth_host_pairing_browsertest.cc
deleted file mode 100644
index 84194db..0000000
--- a/chrome/browser/chromeos/login/bluetooth_host_pairing_browsertest.cc
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/memory/ref_counted.h"
-#include "base/run_loop.h"
-#include "chrome/browser/chromeos/login/test/oobe_base_test.h"
-#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
-#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
-#include "components/pairing/bluetooth_host_pairing_controller.h"
-#include "components/pairing/bluetooth_pairing_constants.h"
-#include "components/pairing/shark_connection_listener.h"
-#include "content/public/browser/browser_thread.h"
-#include "device/bluetooth/bluetooth_device.h"
-#include "device/bluetooth/bluez/bluetooth_device_bluez.h"
-#include "device/bluetooth/dbus/bluez_dbus_manager.h"
-#include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h"
-#include "device/bluetooth/dbus/fake_bluetooth_device_client.h"
-#include "services/device/public/cpp/hid/fake_input_service_linux.h"
-#include "services/device/public/mojom/constants.mojom.h"
-#include "services/device/public/mojom/input_service.mojom.h"
-#include "services/service_manager/public/cpp/service_binding.h"
-
-namespace chromeos {
-
-namespace {
-
-class TestDelegate
-    : public pairing_chromeos::BluetoothHostPairingController::TestDelegate {
- public:
-  TestDelegate() {}
-  ~TestDelegate() override {}
-
-  // pairing_chromeos::BluetoothHostPairingController::Delegate override:
-  void OnAdapterReset() override {
-    finished_ = true;
-    if (run_loop_)
-      run_loop_->Quit();
-  }
-
-  void WaitUntilAdapterReset() {
-    if (finished_)
-      return;
-    run_loop_.reset(new base::RunLoop());
-    run_loop_->Run();
-  }
-
- private:
-  bool finished_ = false;
-  std::unique_ptr<base::RunLoop> run_loop_;
-
-  DISALLOW_COPY_AND_ASSIGN(TestDelegate);
-};
-
-}  // namespace
-
-// This is the class to simulate the OOBE process for devices that don't have
-// sufficient input, i.e., the first screen of OOBE is the HID detection screen.
-// The device will put itself in Bluetooth discoverable mode.
-class BluetoothHostPairingNoInputTest : public OobeBaseTest {
- public:
-  void OnConnectSuccess(base::OnceClosure continuation_callback) {
-    std::move(continuation_callback).Run();
-  }
-  void OnConnectFailed(base::OnceClosure continuation_callback,
-                       device::BluetoothDevice::ConnectErrorCode error) {
-    std::move(continuation_callback).Run();
-  }
-
- protected:
-  using InputDeviceInfoPtr = device::mojom::InputDeviceInfoPtr;
-
-  BluetoothHostPairingNoInputTest() {
-    fake_input_service_manager_ =
-        std::make_unique<device::FakeInputServiceLinux>();
-
-    service_manager::ServiceBinding::OverrideInterfaceBinderForTesting(
-        device::mojom::kServiceName,
-        base::Bind(&device::FakeInputServiceLinux::Bind,
-                   base::Unretained(fake_input_service_manager_.get())));
-
-    // Set up the fake Bluetooth environment.
-    std::unique_ptr<bluez::BluezDBusManagerSetter> bluez_dbus_setter =
-        bluez::BluezDBusManager::GetSetterForTesting();
-    bluez_dbus_setter->SetBluetoothAdapterClient(
-        std::make_unique<bluez::FakeBluetoothAdapterClient>());
-    bluez_dbus_setter->SetBluetoothDeviceClient(
-        std::make_unique<bluez::FakeBluetoothDeviceClient>());
-
-    // Get pointer.
-    fake_bluetooth_device_client_ =
-        static_cast<bluez::FakeBluetoothDeviceClient*>(
-            bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient());
-  }
-
-  ~BluetoothHostPairingNoInputTest() override {
-    service_manager::ServiceBinding::ClearInterfaceBinderOverrideForTesting<
-        device::mojom::InputDeviceManager>(device::mojom::kServiceName);
-  }
-
-  // OobeBaseTest override:
-  void SetUpOnMainThread() override {
-    OobeBaseTest::SetUpOnMainThread();
-    delegate_.reset(new TestDelegate);
-    pairing_chromeos::SharkConnectionListener* shark_listener =
-        WizardController::default_controller()
-            ->GetSharkConnectionListenerForTesting();
-    controller_ =
-        shark_listener ? shark_listener->GetControllerForTesting() : nullptr;
-    if (controller_) {
-      controller_->SetDelegateForTesting(delegate_.get());
-      bluetooth_adapter_ = controller_->GetAdapterForTesting();
-      controller_->SetControllerDeviceAddressForTesting(
-          bluez::FakeBluetoothDeviceClient::kConfirmPasskeyAddress);
-    }
-  }
-
-  pairing_chromeos::BluetoothHostPairingController* controller() {
-    return controller_;
-  }
-
-  device::BluetoothAdapter* bluetooth_adapter() {
-    return bluetooth_adapter_.get();
-  }
-
-  TestDelegate* delegate() { return delegate_.get(); }
-
-  bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client() {
-    return fake_bluetooth_device_client_;
-  }
-
-  void ResetController() {
-    if (controller_)
-      controller_->Reset();
-  }
-
-  void AddUsbMouse() {
-    auto mouse = device::mojom::InputDeviceInfo::New();
-    mouse->id = "usb_mouse";
-    mouse->subsystem = device::mojom::InputDeviceSubsystem::SUBSYSTEM_INPUT;
-    mouse->type = device::mojom::InputDeviceType::TYPE_USB;
-    mouse->is_mouse = true;
-    fake_input_service_manager_->AddDevice(std::move(mouse));
-  }
-
-  void AddUsbKeyboard() {
-    auto keyboard = device::mojom::InputDeviceInfo::New();
-    keyboard->id = "usb_keyboard";
-    keyboard->subsystem = device::mojom::InputDeviceSubsystem::SUBSYSTEM_INPUT;
-    keyboard->type = device::mojom::InputDeviceType::TYPE_USB;
-    keyboard->is_keyboard = true;
-    fake_input_service_manager_->AddDevice(std::move(keyboard));
-  }
-
-  void AddBluetoothMouse() {
-    auto mouse = device::mojom::InputDeviceInfo::New();
-    mouse->id = "bluetooth_mouse";
-    mouse->subsystem = device::mojom::InputDeviceSubsystem::SUBSYSTEM_INPUT;
-    mouse->type = device::mojom::InputDeviceType::TYPE_BLUETOOTH;
-    mouse->is_mouse = true;
-    fake_input_service_manager_->AddDevice(std::move(mouse));
-  }
-
- private:
-  std::unique_ptr<device::FakeInputServiceLinux> fake_input_service_manager_;
-  scoped_refptr<device::BluetoothAdapter> bluetooth_adapter_;
-  std::unique_ptr<TestDelegate> delegate_;
-  pairing_chromeos::BluetoothHostPairingController* controller_ = nullptr;
-
-  bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_ = nullptr;
-
-  DISALLOW_COPY_AND_ASSIGN(BluetoothHostPairingNoInputTest);
-};
-
-// Test that in normal user OOBE login flow for devices lacking input devices,
-// if there is no Bluetooth device connected, the Bluetooth adapter should be
-// disabled when OOBE reaches login screen (which means OOBE has been completed)
-IN_PROC_BROWSER_TEST_F(BluetoothHostPairingNoInputTest,
-                       NoBluetoothDeviceConnected) {
-  OobeScreenWaiter(OobeScreen::SCREEN_OOBE_HID_DETECTION).Wait();
-  EXPECT_EQ(bluetooth_adapter()->IsPowered(), true);
-  WizardController::default_controller()->SkipToLoginForTesting(
-      LoginScreenContext());
-  OobeScreenWaiter(OobeScreen::SCREEN_GAIA_SIGNIN).Wait();
-  delegate()->WaitUntilAdapterReset();
-  EXPECT_EQ(bluetooth_adapter()->IsPowered(), false);
-}
-
-// Test that in normal user OOBE login flow for devices lacking input devices,
-// if there is any Bluetooth device connected, the Bluetooth adapter should not
-// be disabled after OOBE completes.
-IN_PROC_BROWSER_TEST_F(BluetoothHostPairingNoInputTest,
-                       BluetoothDeviceConnected) {
-  OobeScreenWaiter(OobeScreen::SCREEN_OOBE_HID_DETECTION).Wait();
-  AddBluetoothMouse();
-  EXPECT_EQ(bluetooth_adapter()->IsPowered(), true);
-  WizardController::default_controller()->SkipToLoginForTesting(
-      LoginScreenContext());
-  OobeScreenWaiter(OobeScreen::SCREEN_GAIA_SIGNIN).Wait();
-  delegate()->WaitUntilAdapterReset();
-  EXPECT_EQ(bluetooth_adapter()->IsPowered(), true);
-}
-
-// Test that the paired Master Bluetooth device is disconnected after the
-// enrollment is done or failed.
-IN_PROC_BROWSER_TEST_F(BluetoothHostPairingNoInputTest, ForgetDevice) {
-  OobeScreenWaiter(OobeScreen::SCREEN_OOBE_HID_DETECTION).Wait();
-  EXPECT_TRUE(bluetooth_adapter()->IsDiscoverable());
-  EXPECT_TRUE(bluetooth_adapter()->IsPowered());
-
-  fake_bluetooth_device_client()->CreateDevice(
-      dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
-      dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kConfirmPasskeyPath));
-
-  device::BluetoothDevice* device = bluetooth_adapter()->GetDevice(
-      bluez::FakeBluetoothDeviceClient::kConfirmPasskeyAddress);
-  ASSERT_TRUE(device);
-  EXPECT_FALSE(device->IsPaired());
-  EXPECT_EQ(3U, bluetooth_adapter()->GetDevices().size());
-
-  base::RunLoop run_loop;
-  device->Connect(
-      controller(),
-      base::Bind(&BluetoothHostPairingNoInputTest::OnConnectSuccess,
-                 base::Unretained(this), run_loop.QuitWhenIdleClosure()),
-      base::Bind(&BluetoothHostPairingNoInputTest::OnConnectFailed,
-                 base::Unretained(this), run_loop.QuitWhenIdleClosure()));
-  run_loop.Run();
-  EXPECT_TRUE(device->IsPaired());
-
-  ResetController();
-  delegate()->WaitUntilAdapterReset();
-
-  // The device should have been removed now.
-  EXPECT_TRUE(!bluetooth_adapter()->GetDevice(
-      bluez::FakeBluetoothDeviceClient::kConfirmPasskeyAddress));
-  EXPECT_EQ(2U, bluetooth_adapter()->GetDevices().size());
-  EXPECT_FALSE(bluetooth_adapter()->IsDiscoverable());
-  EXPECT_FALSE(bluetooth_adapter()->IsPowered());
-}
-
-// This is the class to simulate the OOBE process for devices that have
-// sufficient input, i.e., the first screen of OOBE is the welcome screen.
-// The device will not put itself in Bluetooth discoverable mode until the user
-// manually trigger it using the proper accelerator.
-class BluetoothHostPairingWithInputTest
-    : public BluetoothHostPairingNoInputTest {
- public:
-  BluetoothHostPairingWithInputTest() {
-    AddUsbMouse();
-    AddUsbKeyboard();
-  }
-  ~BluetoothHostPairingWithInputTest() override {}
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(BluetoothHostPairingWithInputTest);
-};
-
-// Test that in normal user OOBE login flow for devices that have input devices,
-// the Bluetooth is disabled by default.
-IN_PROC_BROWSER_TEST_F(BluetoothHostPairingWithInputTest,
-                       BluetoothDisableByDefault) {
-  OobeScreenWaiter(OobeScreen::SCREEN_OOBE_WELCOME).Wait();
-  EXPECT_FALSE(controller());
-  EXPECT_FALSE(bluetooth_adapter());
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
index 7a38e33..23667ef0 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
@@ -640,8 +640,7 @@
   SetupFailed(DemoSetupError::CreateFromOtherEnrollmentError(error));
 }
 
-void DemoSetupController::OnDeviceEnrolled(
-    const std::string& additional_token) {
+void DemoSetupController::OnDeviceEnrolled() {
   DCHECK_NE(demo_config_, DemoSession::DemoModeConfig::kNone);
 
   // Try to load the policy for the device local account.
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
index 796c8e8..f28687c 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
@@ -198,7 +198,7 @@
   void Enroll(OnSetupSuccess on_setup_success, OnSetupError on_setup_error);
 
   // EnterpriseEnrollmentHelper::EnrollmentStatusConsumer:
-  void OnDeviceEnrolled(const std::string& additional_token) override;
+  void OnDeviceEnrolled() override;
   void OnEnrollmentError(policy::EnrollmentStatus status) override;
   void OnAuthError(const GoogleServiceAuthError& error) override;
   void OnOtherError(EnterpriseEnrollmentHelper::OtherError error) override;
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h b/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h
index 7dea8a2..68304bc 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h
@@ -44,7 +44,7 @@
       .WillRepeatedly(testing::Invoke([mock]() {
         switch (result) {
           case DemoModeSetupResult::SUCCESS:
-            mock->status_consumer()->OnDeviceEnrolled("");
+            mock->status_consumer()->OnDeviceEnrolled();
             break;
           case DemoModeSetupResult::ERROR_POWERWASH_REQUIRED:
             mock->status_consumer()->OnEnrollmentError(
@@ -80,7 +80,7 @@
       .WillRepeatedly(testing::Invoke([mock]() {
         switch (result) {
           case DemoModeSetupResult::SUCCESS:
-            mock->status_consumer()->OnDeviceEnrolled("");
+            mock->status_consumer()->OnDeviceEnrolled();
             break;
           case DemoModeSetupResult::ERROR_POWERWASH_REQUIRED:
             mock->status_consumer()->OnEnrollmentError(
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc
index 1789ade..2763883 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc
@@ -26,11 +26,9 @@
 #include "chromeos/dbus/cryptohome_client.h"
 #include "chromeos/dbus/dbus_method_call_status.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
-#include "components/pairing/controller_pairing_controller.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
 #include "google_apis/gaia/gaia_auth_util.h"
 
-using namespace pairing_chromeos;
 using policy::EnrollmentConfig;
 
 // Do not change the UMA histogram parameters without renaming the histograms!
@@ -116,9 +114,8 @@
          DBusThreadManager::Get()->IsUsingFakes());
 }
 
-void EnrollmentScreen::SetParameters(
-    const policy::EnrollmentConfig& enrollment_config,
-    pairing_chromeos::ControllerPairingController* shark_controller) {
+void EnrollmentScreen::SetEnrollmentConfig(
+    const policy::EnrollmentConfig& enrollment_config) {
   enrollment_config_ = enrollment_config;
   switch (enrollment_config_.auth_mechanism) {
     case EnrollmentConfig::AUTH_MECHANISM_INTERACTIVE:
@@ -139,7 +136,6 @@
       NOTREACHED();
       break;
   }
-  shark_controller_ = shark_controller;
   SetConfig();
 }
 
@@ -157,7 +153,7 @@
                        ? policy::EnrollmentConfig::MODE_ATTESTATION_LOCAL_FORCED
                        : policy::EnrollmentConfig::MODE_ATTESTATION;
   }
-  view_->SetParameters(this, config_);
+  view_->SetEnrollmentConfig(this, config_);
   enrollment_helper_ = nullptr;
 }
 
@@ -256,8 +252,8 @@
 
   view_->ShowEnrollmentSpinnerScreen();
   CreateEnrollmentHelper();
-  enrollment_helper_->EnrollUsingAuthCode(
-      auth_code, shark_controller_ != nullptr /* fetch_additional_token */);
+  enrollment_helper_->EnrollUsingAuthCode(auth_code,
+                                          false /* fetch_additional_token */);
 }
 
 void EnrollmentScreen::OnLicenseTypeSelected(const std::string& license_type) {
@@ -390,11 +386,8 @@
     AutomaticRetry();
 }
 
-void EnrollmentScreen::OnDeviceEnrolled(const std::string& additional_token) {
+void EnrollmentScreen::OnDeviceEnrolled() {
   enrollment_succeeded_ = true;
-  if (!additional_token.empty())
-    SendEnrollmentAuthToken(additional_token);
-
   enrollment_helper_->GetDeviceAttributeUpdatePermission();
 }
 
@@ -498,11 +491,6 @@
   view_->ShowAttributePromptScreen(asset_id, location);
 }
 
-void EnrollmentScreen::SendEnrollmentAuthToken(const std::string& token) {
-  DCHECK(shark_controller_);
-  shark_controller_->OnAuthenticationDone(enrolling_user_domain_, token);
-}
-
 void EnrollmentScreen::ShowEnrollmentStatusOnSuccess() {
   retry_backoff_->InformOfRequest(true);
   if (elapsed_timer_)
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen.h b/chrome/browser/chromeos/login/enrollment/enrollment_screen.h
index b888522..bb17be8b 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen.h
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen.h
@@ -28,10 +28,6 @@
 class ElapsedTimer;
 }
 
-namespace pairing_chromeos {
-class ControllerPairingController;
-}
-
 namespace chromeos {
 
 class BaseScreenDelegate;
@@ -52,11 +48,7 @@
   static EnrollmentScreen* Get(ScreenManager* manager);
 
   // Setup how this screen will handle enrollment.
-  //   |shark_controller| is an interface that is used to communicate with a
-  //     remora device or a slave device for remote enrollment.
-  void SetParameters(
-      const policy::EnrollmentConfig& enrollment_config,
-      pairing_chromeos::ControllerPairingController* shark_controller);
+  void SetEnrollmentConfig(const policy::EnrollmentConfig& enrollment_config);
 
   // BaseScreen implementation:
   void Show() override;
@@ -83,7 +75,7 @@
       const EnrollmentLicenseMap& licenses) override;
   void OnEnrollmentError(policy::EnrollmentStatus status) override;
   void OnOtherError(EnterpriseEnrollmentHelper::OtherError error) override;
-  void OnDeviceEnrolled(const std::string& additional_token) override;
+  void OnDeviceEnrolled() override;
   void OnDeviceAttributeUploadCompleted(bool success) override;
   void OnDeviceAttributeUpdatePermission(bool granted) override;
   void OnRestoreAfterRollbackCompleted() override;
@@ -151,9 +143,6 @@
   // Used as a callback for EnterpriseEnrollmentHelper::ClearAuth.
   virtual void OnAuthCleared(const base::Closure& callback);
 
-  // Sends an enrollment access token to a remote device.
-  void SendEnrollmentAuthToken(const std::string& token);
-
   // Shows successful enrollment status after all enrollment related file
   // operations are completed.
   void ShowEnrollmentStatusOnSuccess();
@@ -199,8 +188,6 @@
                                authpolicy::ErrorType error,
                                const std::string& machine_domain);
 
-  pairing_chromeos::ControllerPairingController* shark_controller_ = nullptr;
-
   EnrollmentScreenView* view_;
   policy::EnrollmentConfig config_;
   policy::EnrollmentConfig enrollment_config_;
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc
index 212581d..3077735 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_browsertest.cc
@@ -92,7 +92,7 @@
   ASSERT_EQ(WizardController::default_controller()->current_screen(),
             enrollment_screen);
 
-  enrollment_screen->OnDeviceEnrolled("");
+  enrollment_screen->OnDeviceEnrolled();
   run_loop.RunUntilIdle();
   EXPECT_TRUE(StartupUtils::IsOobeCompleted());
 
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc
index 5cd10f6..5013dba0 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc
@@ -20,7 +20,6 @@
 #include "chrome/test/base/testing_browser_process.h"
 #include "chromeos/chromeos_switches.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
-#include "components/pairing/fake_controller_pairing_controller.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using testing::_;
@@ -31,13 +30,13 @@
 
 class EnrollmentScreenUnitTest : public testing::Test {
  public:
-  EnrollmentScreenUnitTest() : fake_controller_("") {}
+  EnrollmentScreenUnitTest() = default;
 
   // Creates the EnrollmentScreen and sets required parameters.
   virtual void SetUpEnrollmentScreen() {
     enrollment_screen_.reset(
         new EnrollmentScreen(&mock_delegate_, &mock_view_));
-    enrollment_screen_->SetParameters(enrollment_config_, &fake_controller_);
+    enrollment_screen_->SetEnrollmentConfig(enrollment_config_);
   }
 
   // Fast forwards time by the specified amount.
@@ -72,7 +71,6 @@
   ScopedStubInstallAttributes test_install_attributes_;
 
   // Objects required by the EnrollmentScreen that can be re-used.
-  pairing_chromeos::FakeControllerPairingController fake_controller_;
   MockBaseScreenDelegate mock_delegate_;
   MockEnrollmentScreenView mock_view_;
 
@@ -357,7 +355,7 @@
   EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock(
       &MultiLicenseEnrollmentScreenUnitTest::MockEnrollmentHelperCreator);
 
-  EXPECT_CALL(*GetMockScreenView(), SetParameters(_, _)).Times(1);
+  EXPECT_CALL(*GetMockScreenView(), SetEnrollmentConfig(_, _)).Times(1);
 
   SetUpEnrollmentScreen();
 
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h b/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h
index 4d41a8b4..f527783 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h
@@ -52,8 +52,8 @@
   virtual ~EnrollmentScreenView() {}
 
   // Initializes the view with parameters.
-  virtual void SetParameters(Controller* controller,
-                             const policy::EnrollmentConfig& config) = 0;
+  virtual void SetEnrollmentConfig(Controller* controller,
+                                   const policy::EnrollmentConfig& config) = 0;
 
   // Shows the contents of the screen.
   virtual void Show() = 0;
diff --git a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h
index 8f35055..c6c653d 100644
--- a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h
+++ b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h
@@ -65,11 +65,8 @@
     // Called when some other error happens.
     virtual void OnOtherError(OtherError error) = 0;
 
-    // Called when enrollment finishes successfully. |additional_token| keeps
-    // the additional access token, if it was requested by setting the
-    // |fetch_additional_token| param of EnrollUsingProfile() to true.
-    // Otherwise, |additional_token| is empty.
-    virtual void OnDeviceEnrolled(const std::string& additional_token) = 0;
+    // Called when enrollment finishes successfully.
+    virtual void OnDeviceEnrolled() = 0;
 
     // Called when device attribute update permission granted,
     // |granted| indicates whether permission granted or not.
@@ -111,6 +108,7 @@
   // and passes it to the |status_consumer| on successful enrollment.
   // EnrollUsingAuthCode can be called only once during this object's lifetime,
   // and only if none of the EnrollUsing* methods was called before.
+  // TODO (alemate): Remove unused |fetch_additional_token| parameter.
   virtual void EnrollUsingAuthCode(const std::string& auth_code,
                                    bool fetch_additional_token) = 0;
 
diff --git a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
index a13b38f..9ec7caf 100644
--- a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
+++ b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.cc
@@ -368,7 +368,7 @@
   if (status.status() == policy::EnrollmentStatus::SUCCESS) {
     success_ = true;
     StartupUtils::MarkOobeCompleted();
-    status_consumer()->OnDeviceEnrolled(additional_token_);
+    status_consumer()->OnDeviceEnrolled();
   } else {
     status_consumer()->OnEnrollmentError(status);
   }
diff --git a/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc b/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
index d590894..39ae63e1 100644
--- a/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
+++ b/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
@@ -97,7 +97,7 @@
       EXPECT_CALL(*mock, EnrollUsingAttestation())
           .Times(testing::AnyNumber())
           .WillRepeatedly(testing::Invoke(
-              [mock]() { mock->status_consumer()->OnDeviceEnrolled(""); }));
+              [mock]() { mock->status_consumer()->OnDeviceEnrolled(); }));
       EXPECT_CALL(*mock, GetDeviceAttributeUpdatePermission())
           .Times(testing::AnyNumber())
           .WillRepeatedly(testing::Invoke([mock]() {
diff --git a/chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h b/chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h
index 437ceaa..8b7383c 100644
--- a/chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h
+++ b/chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h
@@ -26,7 +26,7 @@
   MockEnrollmentScreenView();
   virtual ~MockEnrollmentScreenView();
 
-  MOCK_METHOD2(SetParameters,
+  MOCK_METHOD2(SetEnrollmentConfig,
                void(Controller*, const policy::EnrollmentConfig& config));
   MOCK_METHOD0(Show, void());
   MOCK_METHOD0(Hide, void());
diff --git a/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc b/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc
index 535f38e..4c8ac6f 100644
--- a/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc
+++ b/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc
@@ -229,7 +229,7 @@
 
   // Completes the enrollment process.
   void CompleteEnrollment() {
-    enrollment_screen()->OnDeviceEnrolled(std::string());
+    enrollment_screen()->OnDeviceEnrolled();
 
     // Make sure all other pending JS calls have complete.
     ExecutePendingJavaScript();
@@ -687,7 +687,7 @@
                       EnrollUsingEnrollmentToken(
                           "00000000-1111-2222-3333-444444444444"))
               .WillOnce(InvokeWithoutArgs([enrollment_helper]() {
-                enrollment_helper->status_consumer()->OnDeviceEnrolled("");
+                enrollment_helper->status_consumer()->OnDeviceEnrolled();
               }));
         });
   }
diff --git a/chrome/browser/chromeos/login/helper.h b/chrome/browser/chromeos/login/helper.h
index 43e7a11..d54d847 100644
--- a/chrome/browser/chromeos/login/helper.h
+++ b/chrome/browser/chromeos/login/helper.h
@@ -75,9 +75,11 @@
   // mode. Note currently only unsecured Wifi network configuration can be
   // gotten since there is no way to get password for a secured Wifi newwork
   // in Cros for security reasons.
+  // TODO (alemate): Unused, remove.
   virtual void GetConnectedWifiNetwork(std::string* out_onc_spec);
 
   // Add and apply a network configuration. Used in shark/remora mode.
+  // TODO (alemate): Unused, remove.
   virtual void CreateAndConnectNetworkFromOnc(
       const std::string& onc_spec,
       const base::Closure& success_callback,
diff --git a/chrome/browser/chromeos/login/oobe_screen.cc b/chrome/browser/chromeos/login/oobe_screen.cc
index 14c2af9..bc3c33f 100644
--- a/chrome/browser/chromeos/login/oobe_screen.cc
+++ b/chrome/browser/chromeos/login/oobe_screen.cc
@@ -42,8 +42,6 @@
     "arc-kiosk-splash",                // SCREEN_ARC_KIOSK_SPLASH
     "confirm-password",                // SCREEN_CONFIRM_PASSWORD
     "fatal-error",                     // SCREEN_FATAL_ERROR
-    "controller-pairing",              // SCREEN_OOBE_CONTROLLER_PAIRING
-    "host-pairing",                    // SCREEN_OOBE_HOST_PAIRING
     "device-disabled",                 // SCREEN_DEVICE_DISABLED
     "unrecoverable-cryptohome-error",  // SCREEN_UNRECOVERABLE_CRYPTOHOME_ERROR
     "userBoard",                       // SCREEN_USER_SELECTION
diff --git a/chrome/browser/chromeos/login/oobe_screen.h b/chrome/browser/chromeos/login/oobe_screen.h
index 4dfcd12..38ddba4 100644
--- a/chrome/browser/chromeos/login/oobe_screen.h
+++ b/chrome/browser/chromeos/login/oobe_screen.h
@@ -40,8 +40,6 @@
   SCREEN_ARC_KIOSK_SPLASH,
   SCREEN_CONFIRM_PASSWORD,
   SCREEN_FATAL_ERROR,
-  SCREEN_OOBE_CONTROLLER_PAIRING,
-  SCREEN_OOBE_HOST_PAIRING,
   SCREEN_DEVICE_DISABLED,
   SCREEN_UNRECOVERABLE_CRYPTOHOME_ERROR,
   SCREEN_USER_SELECTION,
diff --git a/chrome/browser/chromeos/login/screens/controller_pairing_screen.cc b/chrome/browser/chromeos/login/screens/controller_pairing_screen.cc
deleted file mode 100644
index 4a1bbd5..0000000
--- a/chrome/browser/chromeos/login/screens/controller_pairing_screen.cc
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/login/screens/controller_pairing_screen.h"
-
-#include "base/command_line.h"
-#include "base/stl_util.h"
-#include "base/values.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
-#include "google_apis/gaia/gaia_auth_util.h"
-
-using namespace chromeos::controller_pairing;
-using namespace pairing_chromeos;
-
-namespace chromeos {
-
-ControllerPairingScreen::ControllerPairingScreen(
-    BaseScreenDelegate* base_screen_delegate,
-    Delegate* delegate,
-    ControllerPairingScreenView* view,
-    ControllerPairingController* shark_controller)
-    : BaseScreen(base_screen_delegate,
-                 OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING),
-      delegate_(delegate),
-      view_(view),
-      shark_controller_(shark_controller),
-      current_stage_(ControllerPairingController::STAGE_NONE),
-      device_preselected_(false) {
-  view_->SetDelegate(this);
-  shark_controller_->AddObserver(this);
-}
-
-ControllerPairingScreen::~ControllerPairingScreen() {
-  if (view_)
-    view_->SetDelegate(nullptr);
-  shark_controller_->RemoveObserver(this);
-}
-
-void ControllerPairingScreen::CommitContextChanges() {
-  if (!context_.HasChanges())
-    return;
-  base::DictionaryValue diff;
-  context_.GetChangesAndReset(&diff);
-  if (view_)
-    view_->OnContextChanged(diff);
-}
-
-bool ControllerPairingScreen::ExpectStageIs(Stage stage) const {
-  DCHECK(stage == current_stage_);
-  if (current_stage_ != stage)
-    LOG(ERROR) << "Incorrect stage. Expected: " << stage
-               << ", current stage: " << current_stage_;
-  return stage == current_stage_;
-}
-
-void ControllerPairingScreen::Show() {
-  if (view_)
-    view_->Show();
-  shark_controller_->StartPairing();
-}
-
-void ControllerPairingScreen::Hide() {
-  if (view_)
-    view_->Hide();
-}
-
-void ControllerPairingScreen::PairingStageChanged(Stage new_stage) {
-  DCHECK(new_stage != current_stage_);
-
-  std::string desired_page;
-  switch (new_stage) {
-    case ControllerPairingController::STAGE_DEVICES_DISCOVERY: {
-      desired_page = kPageDevicesDiscovery;
-      context_.SetStringList(kContextKeyDevices, ::login::StringList());
-      context_.SetString(kContextKeySelectedDevice, std::string());
-      device_preselected_ = false;
-      break;
-    }
-    case ControllerPairingController::STAGE_DEVICE_NOT_FOUND: {
-      desired_page = kPageDeviceNotFound;
-      break;
-    }
-    case ControllerPairingController::STAGE_ESTABLISHING_CONNECTION: {
-      desired_page = kPageEstablishingConnection;
-      break;
-    }
-    case ControllerPairingController::STAGE_ESTABLISHING_CONNECTION_ERROR: {
-      desired_page = kPageEstablishingConnectionError;
-      break;
-    }
-    case ControllerPairingController::STAGE_WAITING_FOR_CODE_CONFIRMATION: {
-      desired_page = kPageCodeConfirmation;
-      context_.SetString(kContextKeyConfirmationCode,
-                         shark_controller_->GetConfirmationCode());
-      break;
-    }
-    case ControllerPairingController::STAGE_PAIRING_DONE: {
-      if (delegate_) {
-        delegate_->SetHostConfiguration();
-        delegate_->SetHostNetwork();
-      }
-      break;
-    }
-    case ControllerPairingController::STAGE_HOST_NETWORK_ERROR: {
-      desired_page = kPageHostNetworkError;
-      break;
-    }
-    case ControllerPairingController::STAGE_HOST_UPDATE_IN_PROGRESS: {
-      desired_page = kPageHostUpdate;
-      break;
-    }
-    case ControllerPairingController::STAGE_HOST_CONNECTION_LOST: {
-      desired_page = kPageHostConnectionLost;
-      break;
-    }
-    case ControllerPairingController::STAGE_WAITING_FOR_CREDENTIALS: {
-      shark_controller_->RemoveObserver(this);
-      Finish(ScreenExitCode::CONTROLLER_PAIRING_FINISHED);
-      desired_page = kPageEnrollmentIntroduction;
-      break;
-    }
-    case ControllerPairingController::STAGE_INITIALIZATION_ERROR: {
-      // TODO(achuith, dzhioev, zork): Handle this better.
-      LOG(WARNING) << "Bluetooth initialization error";
-      break;
-    }
-    default:
-      NOTREACHED();
-  }
-  current_stage_ = new_stage;
-  context_.SetString(kContextKeyPage, desired_page);
-  context_.SetBoolean(kContextKeyControlsDisabled, false);
-  CommitContextChanges();
-  VLOG(1) << "PairingStageChanged " << desired_page << ", current stage "
-          << current_stage_;
-}
-
-void ControllerPairingScreen::DiscoveredDevicesListChanged() {
-  if (!ExpectStageIs(ControllerPairingController::STAGE_DEVICES_DISCOVERY))
-    return;
-  ControllerPairingController::DeviceIdList devices =
-      shark_controller_->GetDiscoveredDevices();
-  std::sort(devices.begin(), devices.end());
-  context_.SetStringList(kContextKeyDevices, devices);
-  context_.SetString(kContextKeyPage, devices.empty() ? kPageDevicesDiscovery
-                                                      : kPageDeviceSelect);
-  std::string selected_device = context_.GetString(kContextKeySelectedDevice);
-  if (!base::ContainsValue(devices, selected_device))
-    selected_device.clear();
-  if (devices.empty()) {
-    device_preselected_ = false;
-  } else if (!device_preselected_) {
-    selected_device = devices.front();
-    device_preselected_ = true;
-  }
-  context_.SetString(kContextKeySelectedDevice, selected_device);
-  context_.SetBoolean(kContextKeyControlsDisabled, selected_device.empty());
-  CommitContextChanges();
-}
-
-void ControllerPairingScreen::OnViewDestroyed(
-    ControllerPairingScreenView* view) {
-  if (view_ == view)
-    view_ = nullptr;
-}
-
-// Overridden from ControllerPairingView::Delegate:
-void ControllerPairingScreen::OnUserActed(const std::string& action) {
-  if (context_.GetBoolean(kContextKeyControlsDisabled)) {
-    LOG(WARNING) << "User acted, but controls are disabled. Ignoring.";
-    return;
-  }
-  bool disable_controls = true;
-  if (action == kActionChooseDevice) {
-    std::string selectedDevice = context_.GetString(kContextKeySelectedDevice);
-    if (selectedDevice.empty())
-      LOG(ERROR) << "Device was not selected.";
-    else
-      shark_controller_->ChooseDeviceForPairing(selectedDevice);
-  } else if (action == kActionRepeatDiscovery) {
-    shark_controller_->RepeatDiscovery();
-  } else if (action == kActionAcceptCode) {
-    shark_controller_->SetConfirmationCodeIsCorrect(true);
-  } else if (action == kActionRejectCode) {
-    shark_controller_->SetConfirmationCodeIsCorrect(false);
-  } else if (action == kActionProceedToAuthentication) {
-    context_.SetString(kContextKeyPage, kPageAuthentication);
-    disable_controls = false;
-  } else if (action == kActionEnroll) {
-    const std::string account_id =
-        gaia::SanitizeEmail(context_.GetString(kContextKeyAccountId));
-    const std::string domain(gaia::ExtractDomainName(account_id));
-    context_.SetString(kContextKeyEnrollmentDomain, domain);
-  } else if (action == kActionStartSession) {
-    shark_controller_->StartSession();
-  }
-  context_.SetBoolean(kContextKeyControlsDisabled, disable_controls);
-  CommitContextChanges();
-}
-
-void ControllerPairingScreen::OnScreenContextChanged(
-    const base::DictionaryValue& diff) {
-  std::vector<std::string> changedKeys;
-  context_.ApplyChanges(diff, &changedKeys);
-  for (std::vector<std::string>::const_iterator key = changedKeys.begin();
-       key != changedKeys.end(); ++key) {
-    if (*key == kContextKeySelectedDevice) {
-      context_.SetBoolean(kContextKeyControlsDisabled,
-                          context_.GetString(*key).empty());
-      CommitContextChanges();
-    }
-  }
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/controller_pairing_screen.h b/chrome/browser/chromeos/login/screens/controller_pairing_screen.h
deleted file mode 100644
index 3cd02c7..0000000
--- a/chrome/browser/chromeos/login/screens/controller_pairing_screen.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_
-
-#include "base/macros.h"
-
-#include "chrome/browser/chromeos/login/screens/base_screen.h"
-#include "chrome/browser/chromeos/login/screens/controller_pairing_screen_view.h"
-#include "components/login/screens/screen_context.h"
-#include "components/pairing/controller_pairing_controller.h"
-
-namespace chromeos {
-
-class ControllerPairingScreen
-    : public BaseScreen,
-      public pairing_chromeos::ControllerPairingController::Observer,
-      public ControllerPairingScreenView::Delegate {
- public:
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-
-    // Set remora network from shark.
-    virtual void SetHostNetwork() = 0;
-
-    // Set remora configuration from shark.
-    virtual void SetHostConfiguration() = 0;
-  };
-
-  ControllerPairingScreen(
-      BaseScreenDelegate* base_screen_delegate,
-      Delegate* delegate,
-      ControllerPairingScreenView* view,
-      pairing_chromeos::ControllerPairingController* shark_controller);
-  ~ControllerPairingScreen() override;
-
- private:
-  typedef pairing_chromeos::ControllerPairingController::Stage Stage;
-
-  void CommitContextChanges();
-  bool ExpectStageIs(Stage stage) const;
-
-  // Overridden from BaseScreen:
-  void Show() override;
-  void Hide() override;
-
-  // Overridden from pairing_chromeos::ControllerPairingController::Observer:
-  void PairingStageChanged(Stage new_stage) override;
-  void DiscoveredDevicesListChanged() override;
-
-  // Overridden from ControllerPairingView::Delegate:
-  void OnViewDestroyed(ControllerPairingScreenView* view) override;
-  void OnScreenContextChanged(const base::DictionaryValue& diff) override;
-  void OnUserActed(const std::string& action) override;
-
-  Delegate* delegate_;
-
-  ControllerPairingScreenView* view_;
-
-  // Controller performing pairing. Owned by the wizard controller.
-  pairing_chromeos::ControllerPairingController* shark_controller_;
-
-  // Current stage of pairing process.
-  Stage current_stage_;
-
-  // If this one is |false| first device in device list will be preselected on
-  // next device list update.
-  bool device_preselected_;
-
-  DISALLOW_COPY_AND_ASSIGN(ControllerPairingScreen);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_
diff --git a/chrome/browser/chromeos/login/screens/controller_pairing_screen_view.cc b/chrome/browser/chromeos/login/screens/controller_pairing_screen_view.cc
deleted file mode 100644
index 91cda03..0000000
--- a/chrome/browser/chromeos/login/screens/controller_pairing_screen_view.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/login/screens/controller_pairing_screen_view.h"
-
-namespace chromeos {
-
-namespace controller_pairing {
-
-// Keep these constants synced with corresponding constants defined in
-// oobe_screen_controller_pairing.js.
-const char kContextKeyPage[] = "page";
-const char kContextKeyControlsDisabled[] = "controlsDisabled";
-const char kContextKeyDevices[] = "devices";
-const char kContextKeyConfirmationCode[] = "code";
-const char kContextKeySelectedDevice[] = "selectedDevice";
-const char kContextKeyAccountId[] = "accountId";
-const char kContextKeyEnrollmentDomain[] = "enrollmentDomain";
-
-const char kPageDevicesDiscovery[] = "devices-discovery";
-const char kPageDeviceSelect[] = "device-select";
-const char kPageDeviceNotFound[] = "device-not-found";
-const char kPageEstablishingConnection[] = "establishing-connection";
-const char kPageEstablishingConnectionError[] = "establishing-connection-error";
-const char kPageCodeConfirmation[] = "code-confirmation";
-const char kPageHostNetworkError[] = "host-network-error";
-const char kPageHostUpdate[] = "host-update";
-const char kPageHostConnectionLost[] = "host-connection-lost";
-const char kPageEnrollmentIntroduction[] = "enrollment-introduction";
-const char kPageAuthentication[] = "authentication";
-const char kPageHostEnrollment[] = "host-enrollment";
-const char kPageHostEnrollmentError[] = "host-enrollment-error";
-const char kPagePairingDone[] = "pairing-done";
-
-const char kActionChooseDevice[] = "chooseDevice";
-const char kActionRepeatDiscovery[] = "repeatDiscovery";
-const char kActionAcceptCode[] = "acceptCode";
-const char kActionRejectCode[] = "rejectCode";
-const char kActionProceedToAuthentication[] = "proceedToAuthentication";
-const char kActionEnroll[] = "enroll";
-const char kActionStartSession[] = "startSession";
-
-}  // namespace controller_pairing
-
-ControllerPairingScreenView::ControllerPairingScreenView() {}
-
-ControllerPairingScreenView::~ControllerPairingScreenView() {}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/controller_pairing_screen_view.h b/chrome/browser/chromeos/login/screens/controller_pairing_screen_view.h
deleted file mode 100644
index df482a6..0000000
--- a/chrome/browser/chromeos/login/screens/controller_pairing_screen_view.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_VIEW_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_VIEW_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "chrome/browser/chromeos/login/oobe_screen.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace content {
-class BrowserContext;
-}
-
-namespace chromeos {
-
-namespace controller_pairing {
-
-// Keep these constants synced with corresponding constants defined in
-// oobe_screen_controller_pairing.js.
-// Context keys.
-extern const char kContextKeyPage[];
-extern const char kContextKeyControlsDisabled[];
-extern const char kContextKeyDevices[];
-extern const char kContextKeyConfirmationCode[];
-extern const char kContextKeySelectedDevice[];
-extern const char kContextKeyAccountId[];
-extern const char kContextKeyEnrollmentDomain[];
-
-// Pages names.
-extern const char kPageDevicesDiscovery[];
-extern const char kPageDeviceSelect[];
-extern const char kPageDeviceNotFound[];
-extern const char kPageEstablishingConnection[];
-extern const char kPageEstablishingConnectionError[];
-extern const char kPageCodeConfirmation[];
-extern const char kPageHostNetworkError[];
-extern const char kPageHostUpdate[];
-extern const char kPageHostConnectionLost[];
-extern const char kPageEnrollmentIntroduction[];
-extern const char kPageAuthentication[];
-extern const char kPageHostEnrollment[];
-extern const char kPageHostEnrollmentError[];
-extern const char kPagePairingDone[];
-
-// Actions names.
-extern const char kActionChooseDevice[];
-extern const char kActionRepeatDiscovery[];
-extern const char kActionAcceptCode[];
-extern const char kActionRejectCode[];
-extern const char kActionProceedToAuthentication[];
-extern const char kActionEnroll[];
-extern const char kActionStartSession[];
-
-}  // namespace controller_pairing
-
-class ControllerPairingScreenView {
- public:
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-    virtual void OnViewDestroyed(ControllerPairingScreenView* view) = 0;
-    virtual void OnScreenContextChanged(const base::DictionaryValue& diff) = 0;
-    virtual void OnUserActed(const std::string& action) = 0;
-  };
-
-  constexpr static OobeScreen kScreenId =
-      OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING;
-
-  ControllerPairingScreenView();
-  virtual ~ControllerPairingScreenView();
-
-  virtual void Show() = 0;
-  virtual void Hide() = 0;
-  virtual void SetDelegate(Delegate* delegate) = 0;
-  virtual void OnContextChanged(const base::DictionaryValue& diff) = 0;
-  virtual content::BrowserContext* GetBrowserContext() = 0;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ControllerPairingScreenView);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_VIEW_H_
diff --git a/chrome/browser/chromeos/login/screens/host_pairing_screen.cc b/chrome/browser/chromeos/login/screens/host_pairing_screen.cc
deleted file mode 100644
index 0532393..0000000
--- a/chrome/browser/chromeos/login/screens/host_pairing_screen.cc
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/login/screens/host_pairing_screen.h"
-
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/login/startup_utils.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
-#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
-#include "components/pairing/host_pairing_controller.h"
-#include "google_apis/gaia/google_service_auth_error.h"
-
-namespace chromeos {
-
-namespace {
-
-// Gets the fine-grained enrollment error code. It's calculated by concatenating
-// |main_error_code| and |sub_error_code| strings together. The reason that
-// string concatenation is preferred to arithmetic addition is that the number
-// of sub error states is not necessarily a one-digit number and may have
-// arbitrary digits.
-int GetEnrollmentErrorCode(
-    pairing_chromeos::HostPairingController::ErrorCode main_error_code,
-    int sub_error_code) {
-  return std::stoi(std::to_string(static_cast<int>(main_error_code)) +
-                   std::to_string(sub_error_code));
-}
-
-}  // namespace
-
-using namespace host_pairing;
-using namespace pairing_chromeos;
-
-HostPairingScreen::HostPairingScreen(
-    BaseScreenDelegate* base_screen_delegate,
-    Delegate* delegate,
-    HostPairingScreenView* view,
-    pairing_chromeos::HostPairingController* remora_controller)
-    : BaseScreen(base_screen_delegate, OobeScreen::SCREEN_OOBE_HOST_PAIRING),
-      delegate_(delegate),
-      view_(view),
-      remora_controller_(remora_controller),
-      weak_ptr_factory_(this) {
-  view_->SetDelegate(this);
-  remora_controller_->AddObserver(this);
-}
-
-HostPairingScreen::~HostPairingScreen() {
-  if (view_)
-    view_->SetDelegate(NULL);
-  remora_controller_->RemoveObserver(this);
-}
-
-void HostPairingScreen::CommitContextChanges() {
-  if (!context_.HasChanges())
-    return;
-  base::DictionaryValue diff;
-  context_.GetChangesAndReset(&diff);
-  if (view_)
-    view_->OnContextChanged(diff);
-}
-
-void HostPairingScreen::Show() {
-  if (view_)
-    view_->Show();
-  PairingStageChanged(remora_controller_->GetCurrentStage());
-}
-
-void HostPairingScreen::Hide() {
-  if (view_)
-    view_->Hide();
-}
-
-void HostPairingScreen::PairingStageChanged(Stage new_stage) {
-  std::string desired_page;
-  switch (new_stage) {
-    case HostPairingController::STAGE_INITIALIZATION_ERROR: {
-      desired_page = kPageIntializationError;
-      break;
-    }
-    case HostPairingController::STAGE_WAITING_FOR_CONTROLLER:
-    case HostPairingController::STAGE_WAITING_FOR_CONTROLLER_AFTER_UPDATE: {
-      desired_page = kPageWelcome;
-      break;
-    }
-    case HostPairingController::STAGE_WAITING_FOR_CODE_CONFIRMATION: {
-      desired_page = kPageCodeConfirmation;
-      context_.SetString(kContextKeyConfirmationCode,
-                         remora_controller_->GetConfirmationCode());
-      break;
-    }
-    case HostPairingController::STAGE_CONTROLLER_CONNECTION_ERROR: {
-      desired_page = kPageConnectionError;
-      break;
-    }
-    case HostPairingController::STAGE_SETUP_BASIC_CONFIGURATION: {
-      desired_page = kPageSetupBasicConfiguration;
-      break;
-    }
-    case HostPairingController::STAGE_SETUP_NETWORK_ERROR: {
-      desired_page = kPageSetupNetworkError;
-      break;
-    }
-    case HostPairingController::STAGE_WAITING_FOR_CREDENTIALS: {
-      desired_page = kPageEnrollmentIntroduction;
-      break;
-    }
-    case HostPairingController::STAGE_ENROLLING: {
-      desired_page = kPageEnrollment;
-      context_.SetString(kContextKeyEnrollmentDomain,
-                         remora_controller_->GetEnrollmentDomain());
-      break;
-    }
-    case HostPairingController::STAGE_ENROLLMENT_SUCCESS: {
-      remora_controller_->RemoveObserver(this);
-      Finish(ScreenExitCode::ENTERPRISE_ENROLLMENT_COMPLETED);
-      break;
-    }
-    case HostPairingController::STAGE_ENROLLMENT_ERROR: {
-      // TODO(xdai): Maybe return to the Network Setup page?
-      remora_controller_->RemoveObserver(this);
-      desired_page = kPageEnrollmentError;
-      context_.SetString(kContextKeyEnrollmentError, enrollment_error_string_);
-      break;
-    }
-    default:
-      break;
-  }
-  current_stage_ = new_stage;
-  context_.SetString(kContextKeyDeviceName,
-                     remora_controller_->GetDeviceName());
-  context_.SetString(kContextKeyPage, desired_page);
-  CommitContextChanges();
-}
-
-void HostPairingScreen::ConfigureHostRequested(
-    bool accepted_eula,
-    const std::string& lang,
-    const std::string& timezone,
-    bool send_reports,
-    const std::string& keyboard_layout) {
-  VLOG(1) << "ConfigureHostMessage language=" << lang
-          << ", timezone=" << timezone
-          << ", keyboard_layout=" << keyboard_layout;
-
-  if (delegate_) {
-    delegate_->ConfigureHostRequested(accepted_eula, lang, timezone,
-                                      send_reports, keyboard_layout);
-  }
-}
-
-void HostPairingScreen::AddNetworkRequested(const std::string& onc_spec) {
-  if (delegate_)
-    delegate_->AddNetworkRequested(onc_spec);
-}
-
-void HostPairingScreen::EnrollHostRequested(const std::string& auth_token) {
-  policy::EnrollmentConfig enrollment_config =
-      g_browser_process->platform_part()
-          ->browser_policy_connector_chromeos()
-          ->GetPrescribedEnrollmentConfig();
-  enrollment_helper_ = EnterpriseEnrollmentHelper::Create(
-      this, nullptr, enrollment_config, std::string());
-  enrollment_helper_->EnrollUsingToken(auth_token);
-  remora_controller_->OnEnrollmentStatusChanged(
-      HostPairingController::ENROLLMENT_STATUS_ENROLLING);
-}
-
-void HostPairingScreen::RebootHostRequested() {
-  if (delegate_)
-    delegate_->RebootHostRequested();
-}
-
-void HostPairingScreen::OnViewDestroyed(HostPairingScreenView* view) {
-  if (view_ == view)
-    view_ = NULL;
-}
-
-void HostPairingScreen::OnAuthError(const GoogleServiceAuthError& error) {
-  enrollment_error_string_ = view_->GetErrorStringFromAuthError(error);
-  enrollment_error_code_ =
-      GetEnrollmentErrorCode(HostPairingController::ErrorCode::AUTH_ERROR,
-                             static_cast<int>(error.state()));
-  OnAnyEnrollmentError();
-}
-
-void HostPairingScreen::OnMultipleLicensesAvailable(
-    const EnrollmentLicenseMap& licenses) {
-  LOG(ERROR) << "Host-paired enrollment is not yet compatible "
-             << "with Mixed Licenses Enrollment Flow";
-  enrollment_error_string_ = view_->GetErrorStringFromOtherError(
-      EnterpriseEnrollmentHelper::OTHER_ERROR_FATAL);
-  enrollment_error_code_ = GetEnrollmentErrorCode(
-      HostPairingController::ErrorCode::OTHER_ERROR,
-      static_cast<int>(EnterpriseEnrollmentHelper::OTHER_ERROR_FATAL));
-  OnAnyEnrollmentError();
-}
-
-void HostPairingScreen::OnEnrollmentError(policy::EnrollmentStatus status) {
-  enrollment_error_string_ = view_->GetErrorStringFromEnrollmentError(status);
-  enrollment_error_code_ =
-      GetEnrollmentErrorCode(HostPairingController::ErrorCode::ENROLL_ERROR,
-                             static_cast<int>(status.status()));
-  OnAnyEnrollmentError();
-}
-
-void HostPairingScreen::OnOtherError(
-    EnterpriseEnrollmentHelper::OtherError error) {
-  enrollment_error_string_ = view_->GetErrorStringFromOtherError(error);
-  enrollment_error_code_ = GetEnrollmentErrorCode(
-      HostPairingController::ErrorCode::OTHER_ERROR, static_cast<int>(error));
-  OnAnyEnrollmentError();
-}
-
-void HostPairingScreen::OnDeviceEnrolled(const std::string& additional_token) {
-  StartupUtils::MarkDeviceRegistered(base::DoNothing());
-  enrollment_helper_->ClearAuth(base::Bind(&HostPairingScreen::OnAuthCleared,
-                                           weak_ptr_factory_.GetWeakPtr()));
-
-  policy::BrowserPolicyConnectorChromeOS* connector =
-      g_browser_process->platform_part()->browser_policy_connector_chromeos();
-  const enterprise_management::PolicyData* policy =
-      connector->GetDeviceCloudPolicyManager()->core()->store()->policy();
-
-  remora_controller_->SetPermanentId(policy->directory_api_id());
-  remora_controller_->OnEnrollmentStatusChanged(
-      HostPairingController::ENROLLMENT_STATUS_SUCCESS);
-}
-
-void HostPairingScreen::OnDeviceAttributeUploadCompleted(bool success) {}
-
-void HostPairingScreen::OnDeviceAttributeUpdatePermission(bool granted) {}
-
-void HostPairingScreen::OnRestoreAfterRollbackCompleted() {
-  NOTREACHED();
-}
-
-void HostPairingScreen::OnAuthCleared() {
-  enrollment_helper_.reset();
-}
-
-void HostPairingScreen::OnAnyEnrollmentError() {
-  enrollment_helper_->ClearAuth(base::Bind(&HostPairingScreen::OnAuthCleared,
-                                           weak_ptr_factory_.GetWeakPtr()));
-  remora_controller_->SetErrorCodeAndMessage(enrollment_error_code_,
-                                             enrollment_error_string_);
-  remora_controller_->OnEnrollmentStatusChanged(
-      HostPairingController::ENROLLMENT_STATUS_FAILURE);
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/host_pairing_screen.h b/chrome/browser/chromeos/login/screens/host_pairing_screen.h
deleted file mode 100644
index 2ddffa97..0000000
--- a/chrome/browser/chromeos/login/screens/host_pairing_screen.h
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_H_
-
-#include "base/macros.h"
-#include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h"
-#include "chrome/browser/chromeos/login/screens/base_screen.h"
-#include "chrome/browser/chromeos/login/screens/host_pairing_screen_view.h"
-#include "components/login/screens/screen_context.h"
-#include "components/pairing/host_pairing_controller.h"
-
-namespace chromeos {
-
-class HostPairingScreen
-    : public BaseScreen,
-      public pairing_chromeos::HostPairingController::Observer,
-      public HostPairingScreenView::Delegate,
-      public EnterpriseEnrollmentHelper::EnrollmentStatusConsumer {
- public:
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-
-    // Called when a configuration has been received, and should be applied to
-    // this device.
-    virtual void ConfigureHostRequested(bool accepted_eula,
-                                        const std::string& lang,
-                                        const std::string& timezone,
-                                        bool send_reports,
-                                        const std::string& keyboard_layout) = 0;
-
-    // Called when a network configuration has been received, and should be
-    // used on this device.
-    virtual void AddNetworkRequested(const std::string& onc_spec) = 0;
-
-    // Called when a reboot message has been received, and should reboot this
-    // device.
-    virtual void RebootHostRequested() = 0;
-  };
-
-  HostPairingScreen(BaseScreenDelegate* base_screen_delegate,
-                    Delegate* delegate,
-                    HostPairingScreenView* view,
-                    pairing_chromeos::HostPairingController* remora_controller);
-  ~HostPairingScreen() override;
-
- private:
-  typedef pairing_chromeos::HostPairingController::Stage Stage;
-
-  void CommitContextChanges();
-
-  // Overridden from BaseScreen:
-  void Show() override;
-  void Hide() override;
-
-  // pairing_chromeos::HostPairingController::Observer:
-  void PairingStageChanged(Stage new_stage) override;
-  void ConfigureHostRequested(bool accepted_eula,
-                              const std::string& lang,
-                              const std::string& timezone,
-                              bool send_reports,
-                              const std::string& keyboard_layout) override;
-  void AddNetworkRequested(const std::string& onc_spec) override;
-  void EnrollHostRequested(const std::string& auth_token) override;
-  void RebootHostRequested() override;
-
-  // Overridden from ControllerPairingView::Delegate:
-  void OnViewDestroyed(HostPairingScreenView* view) override;
-
-  // Overridden from EnterpriseEnrollmentHelper::EnrollmentStatusConsumer:
-  void OnAuthError(const GoogleServiceAuthError& error) override;
-  void OnMultipleLicensesAvailable(
-      const EnrollmentLicenseMap& licenses) override;
-  void OnEnrollmentError(policy::EnrollmentStatus status) override;
-  void OnOtherError(EnterpriseEnrollmentHelper::OtherError error) override;
-  void OnDeviceEnrolled(const std::string& additional_token) override;
-  void OnDeviceAttributeUploadCompleted(bool success) override;
-  void OnDeviceAttributeUpdatePermission(bool granted) override;
-  void OnRestoreAfterRollbackCompleted() override;
-
-  // Used as a callback for EnterpriseEnrollmentHelper::ClearAuth.
-  void OnAuthCleared();
-  void OnAnyEnrollmentError();
-
-  Delegate* delegate_ = nullptr;
-
-  HostPairingScreenView* view_ = nullptr;
-
-  // Controller performing pairing. Owned by the wizard controller.
-  pairing_chromeos::HostPairingController* remora_controller_ = nullptr;
-
-  std::unique_ptr<EnterpriseEnrollmentHelper> enrollment_helper_;
-
-  // Describes the error code of an enrollment operation. For the format, see
-  // the definition of |error_code_| in bluetooth_host_pairing_controller.h.
-  int enrollment_error_code_ = 0;
-  std::string enrollment_error_string_;
-
-  // Current stage of pairing process.
-  Stage current_stage_ = pairing_chromeos::HostPairingController::STAGE_NONE;
-
-  base::WeakPtrFactory<HostPairingScreen> weak_ptr_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(HostPairingScreen);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_H_
diff --git a/chrome/browser/chromeos/login/screens/host_pairing_screen_view.cc b/chrome/browser/chromeos/login/screens/host_pairing_screen_view.cc
deleted file mode 100644
index c9e8014..0000000
--- a/chrome/browser/chromeos/login/screens/host_pairing_screen_view.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/login/screens/host_pairing_screen_view.h"
-
-namespace chromeos {
-
-namespace host_pairing {
-
-// Keep these constants synced with corresponding constants defined in
-// host-pairing-screen.js.
-const char kContextKeyPage[] = "page";
-const char kContextKeyDeviceName[] = "deviceName";
-const char kContextKeyConfirmationCode[] = "code";
-const char kContextKeyEnrollmentDomain[] = "enrollmentDomain";
-const char kContextKeyUpdateProgress[] = "updateProgress";
-const char kContextKeyEnrollmentError[] = "enrollmentError";
-
-const char kPageWelcome[] = "welcome";
-const char kPageIntializationError[] = "initialization-error";
-const char kPageCodeConfirmation[] = "code-confirmation";
-const char kPageConnectionError[] = "connection-error";
-const char kPageSetupBasicConfiguration[] = "setup-basic-configuration";
-const char kPageSetupNetworkError[] = "setup-network-error";
-const char kPageUpdate[] = "update";
-const char kPageEnrollmentIntroduction[] = "enrollment-introduction";
-const char kPageEnrollment[] = "enrollment";
-const char kPageEnrollmentError[] = "enrollment-error";
-const char kPagePairingDone[] = "pairing-done";
-
-}  // namespace host_pairing
-
-HostPairingScreenView::HostPairingScreenView() {}
-
-HostPairingScreenView::~HostPairingScreenView() {}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/host_pairing_screen_view.h b/chrome/browser/chromeos/login/screens/host_pairing_screen_view.h
deleted file mode 100644
index 99a4dec..0000000
--- a/chrome/browser/chromeos/login/screens/host_pairing_screen_view.h
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_VIEW_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_VIEW_H_
-
-#include "base/macros.h"
-#include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h"
-#include "chrome/browser/chromeos/login/oobe_screen.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-class GoogleServiceAuthError;
-
-namespace policy {
-class EnrollmentStatus;
-}
-
-namespace chromeos {
-
-namespace host_pairing {
-
-// Keep these constants synced with corresponding constants defined in
-// oobe_screen_host_pairing.js.
-// Conxtext keys.
-extern const char kContextKeyPage[];
-extern const char kContextKeyDeviceName[];
-extern const char kContextKeyConfirmationCode[];
-extern const char kContextKeyEnrollmentDomain[];
-extern const char kContextKeyUpdateProgress[];
-extern const char kContextKeyEnrollmentError[];
-
-// Pages names.
-extern const char kPageWelcome[];
-extern const char kPageIntializationError[];
-extern const char kPageCodeConfirmation[];
-extern const char kPageConnectionError[];
-extern const char kPageSetupBasicConfiguration[];
-extern const char kPageSetupNetworkError[];
-extern const char kPageUpdate[];
-extern const char kPageEnrollmentIntroduction[];
-extern const char kPageEnrollment[];
-extern const char kPageEnrollmentError[];
-extern const char kPagePairingDone[];
-
-}  // namespace host_pairing
-
-class HostPairingScreenView {
- public:
-  class Delegate {
-   public:
-    virtual ~Delegate() {}
-    virtual void OnViewDestroyed(HostPairingScreenView* view) = 0;
-  };
-
-  constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_HOST_PAIRING;
-
-  HostPairingScreenView();
-  virtual ~HostPairingScreenView();
-
-  virtual void Show() = 0;
-  virtual void Hide() = 0;
-  virtual void SetDelegate(Delegate* delegate) = 0;
-  virtual void OnContextChanged(const base::DictionaryValue& diff) = 0;
-
-  virtual std::string GetErrorStringFromAuthError(
-      const GoogleServiceAuthError& error) = 0;
-  virtual std::string GetErrorStringFromEnrollmentError(
-      policy::EnrollmentStatus status) = 0;
-  virtual std::string GetErrorStringFromOtherError(
-      EnterpriseEnrollmentHelper::OtherError error) = 0;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(HostPairingScreenView);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_VIEW_H_
diff --git a/chrome/browser/chromeos/login/screens/mock_update_screen.cc b/chrome/browser/chromeos/login/screens/mock_update_screen.cc
index 15c255f..d2caed8 100644
--- a/chrome/browser/chromeos/login/screens/mock_update_screen.cc
+++ b/chrome/browser/chromeos/login/screens/mock_update_screen.cc
@@ -11,7 +11,7 @@
 
 MockUpdateScreen::MockUpdateScreen(BaseScreenDelegate* base_screen_delegate,
                                    UpdateView* view)
-    : UpdateScreen(base_screen_delegate, view, NULL) {}
+    : UpdateScreen(base_screen_delegate, view) {}
 
 MockUpdateScreen::~MockUpdateScreen() {}
 
diff --git a/chrome/browser/chromeos/login/screens/screen_exit_code.cc b/chrome/browser/chromeos/login/screens/screen_exit_code.cc
index f4b1351..ee983c8 100644
--- a/chrome/browser/chromeos/login/screens/screen_exit_code.cc
+++ b/chrome/browser/chromeos/login/screens/screen_exit_code.cc
@@ -50,8 +50,6 @@
       return "TERMS_OF_SERVICE_ACCEPTED";
     case ScreenExitCode::WRONG_HWID_WARNING_SKIPPED:
       return "WRONG_HWID_WARNING_SKIPPED";
-    case ScreenExitCode::CONTROLLER_PAIRING_FINISHED:
-      return "CONTROLLER_PAIRING_FINISHED";
     case ScreenExitCode::ENABLE_DEBUGGING_FINISHED:
       return "ENABLE_DEBUGGING_FINISHED";
     case ScreenExitCode::ENABLE_DEBUGGING_CANCELED:
diff --git a/chrome/browser/chromeos/login/screens/screen_exit_code.h b/chrome/browser/chromeos/login/screens/screen_exit_code.h
index d81a28c..3aba6b1 100644
--- a/chrome/browser/chromeos/login/screens/screen_exit_code.h
+++ b/chrome/browser/chromeos/login/screens/screen_exit_code.h
@@ -44,7 +44,6 @@
   TERMS_OF_SERVICE_DECLINED = 17,
   TERMS_OF_SERVICE_ACCEPTED = 18,
   WRONG_HWID_WARNING_SKIPPED = 19,
-  CONTROLLER_PAIRING_FINISHED = 20,
   ENABLE_DEBUGGING_FINISHED = 21,
   ENABLE_DEBUGGING_CANCELED = 22,
   ARC_TERMS_OF_SERVICE_SKIPPED = 23,
diff --git a/chrome/browser/chromeos/login/screens/update_screen.cc b/chrome/browser/chromeos/login/screens/update_screen.cc
index a7d66b1..cb0b234 100644
--- a/chrome/browser/chromeos/login/screens/update_screen.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen.cc
@@ -31,7 +31,6 @@
 #include "ui/base/l10n/l10n_util.h"
 
 using content::BrowserThread;
-using pairing_chromeos::HostPairingController;
 
 namespace chromeos {
 
@@ -96,10 +95,6 @@
 // its login page before error message appears.
 const int kDelayErrorMessageSec = 10;
 
-// The delay in milliseconds at which we will send the host status to the Master
-// device periodically during the updating process.
-const int kHostStatusReportDelay = 5 * 60 * 1000;
-
 // Invoked from call to RequestUpdateCheck upon completion of the DBus call.
 void StartUpdateCallback(UpdateScreen* screen,
                          UpdateEngineClient::UpdateCheckResult result) {
@@ -133,12 +128,10 @@
 }
 
 UpdateScreen::UpdateScreen(BaseScreenDelegate* base_screen_delegate,
-                           UpdateView* view,
-                           HostPairingController* remora_controller)
+                           UpdateView* view)
     : BaseScreen(base_screen_delegate, OobeScreen::SCREEN_OOBE_UPDATE),
       reboot_check_delay_(kWaitForRebootTimeSec),
       view_(view),
-      remora_controller_(remora_controller),
       histogram_helper_(new ErrorScreensHistogramHelper("Update")),
       weak_factory_(this) {
   if (view_)
@@ -182,7 +175,6 @@
 void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) {
   DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
   network_portal_detector::GetInstance()->RemoveObserver(this);
-  SetHostPairingControllerStatus(HostPairingController::UPDATE_STATUS_UPDATED);
 
   switch (reason) {
     case REASON_UPDATE_CANCELED:
@@ -247,8 +239,6 @@
     case UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE:
       // Do nothing in these cases, we don't want to notify the user of the
       // check unless there is an update.
-      SetHostPairingControllerStatus(
-          HostPairingController::UPDATE_STATUS_UPDATING);
       break;
     case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
       MakeSureScreenIsShown();
@@ -316,8 +306,6 @@
       if (HasCriticalUpdate()) {
         GetContextEditor().SetBoolean(kContextKeyShowCurtain, false);
         VLOG(1) << "Initiate reboot after update";
-        SetHostPairingControllerStatus(
-            HostPairingController::UPDATE_STATUS_REBOOTING);
         DBusThreadManager::Get()->GetUpdateEngineClient()->RebootAfterUpdate();
         reboot_timer_.Start(FROM_HERE,
                             base::TimeDelta::FromSeconds(reboot_check_delay_),
@@ -562,35 +550,6 @@
     get_base_screen_delegate()->ShowCurrentScreen();
 }
 
-void UpdateScreen::SetHostPairingControllerStatus(
-    HostPairingController::UpdateStatus update_status) {
-  if (!remora_controller_)
-    return;
-
-  static bool is_update_in_progress = true;
-
-  if (update_status > HostPairingController::UPDATE_STATUS_UPDATING) {
-    // Set |is_update_in_progress| to false to prevent sending the scheduled
-    // UPDATE_STATUS_UPDATING message after UPDATE_STATUS_UPDATED or
-    // UPDATE_STATUS_REBOOTING is received.
-    is_update_in_progress = false;
-    remora_controller_->OnUpdateStatusChanged(update_status);
-    return;
-  }
-
-  if (is_update_in_progress) {
-    DCHECK_EQ(update_status, HostPairingController::UPDATE_STATUS_UPDATING);
-    remora_controller_->OnUpdateStatusChanged(update_status);
-
-    // Send UPDATE_STATUS_UPDATING message every |kHostStatusReportDelay|ms.
-    base::SequencedTaskRunnerHandle::Get()->PostNonNestableDelayedTask(
-        FROM_HERE,
-        base::BindOnce(&UpdateScreen::SetHostPairingControllerStatus,
-                       weak_factory_.GetWeakPtr(), update_status),
-        base::TimeDelta::FromMilliseconds(kHostStatusReportDelay));
-  }
-}
-
 ErrorScreen* UpdateScreen::GetErrorScreen() {
   return get_base_screen_delegate()->GetErrorScreen();
 }
diff --git a/chrome/browser/chromeos/login/screens/update_screen.h b/chrome/browser/chromeos/login/screens/update_screen.h
index c1cc59b..639e24c 100644
--- a/chrome/browser/chromeos/login/screens/update_screen.h
+++ b/chrome/browser/chromeos/login/screens/update_screen.h
@@ -18,7 +18,6 @@
 #include "chrome/browser/chromeos/login/screens/error_screen.h"
 #include "chromeos/dbus/update_engine_client.h"
 #include "chromeos/network/portal_detector/network_portal_detector.h"
-#include "components/pairing/host_pairing_controller.h"
 
 namespace chromeos {
 
@@ -39,9 +38,7 @@
   // Returns true if this instance is still active (i.e. has not been deleted).
   static bool HasInstance(UpdateScreen* inst);
 
-  UpdateScreen(BaseScreenDelegate* base_screen_delegate,
-               UpdateView* view,
-               pairing_chromeos::HostPairingController* remora_controller);
+  UpdateScreen(BaseScreenDelegate* base_screen_delegate, UpdateView* view);
   ~UpdateScreen() override;
 
   // Called when the being destroyed. This should call Unbind() on the
@@ -115,10 +112,6 @@
   // Checks that screen is shown, shows if not.
   void MakeSureScreenIsShown();
 
-  // Send update status to host pairing controller.
-  void SetHostPairingControllerStatus(
-      pairing_chromeos::HostPairingController::UpdateStatus update_status);
-
   // Returns an instance of the error screen.
   ErrorScreen* GetErrorScreen();
 
@@ -166,9 +159,6 @@
 
   UpdateView* view_ = nullptr;
 
-  // Used to track updates over Bluetooth.
-  pairing_chromeos::HostPairingController* remora_controller_;
-
   // Time of the first notification from the downloading stage.
   base::Time download_start_time_;
   double download_start_progress_ = 0;
diff --git a/chrome/browser/chromeos/login/screens/update_screen_unittest.cc b/chrome/browser/chromeos/login/screens/update_screen_unittest.cc
index 4c8fc43..aac074e 100644
--- a/chrome/browser/chromeos/login/screens/update_screen_unittest.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen_unittest.cc
@@ -20,7 +20,6 @@
 #include "chromeos/network/network_handler.h"
 #include "chromeos/network/portal_detector/mock_network_portal_detector.h"
 #include "chromeos/network/portal_detector/network_portal_detector.h"
-#include "components/pairing/fake_host_pairing_controller.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -32,9 +31,7 @@
 
 class UpdateScreenUnitTest : public testing::Test {
  public:
-  UpdateScreenUnitTest()
-      : fake_controller_(""),
-        local_state_(TestingBrowserProcess::GetGlobal()) {}
+  UpdateScreenUnitTest() : local_state_(TestingBrowserProcess::GetGlobal()) {}
 
   // Simulates an update being available (or not).
   // The parameter "update_screen" points to the currently active UpdateScreen.
@@ -104,7 +101,6 @@
   MockUpdateView mock_view_;
   MockNetworkErrorView mock_error_view_;
   UpdateEngineClient::Status update_engine_status_;
-  pairing_chromeos::FakeHostPairingController fake_controller_;
   std::unique_ptr<MockErrorScreen> mock_error_screen_;
   MockNetworkPortalDetector* mock_network_portal_detector_;
   FakeUpdateEngineClient* fake_update_engine_client_;
@@ -125,8 +121,8 @@
       .Times(1);
 
   // DUT reaches UpdateScreen.
-  update_screen_.reset(new UpdateScreen(&mock_base_screen_delegate_,
-                                        &mock_view_, &fake_controller_));
+  update_screen_.reset(
+      new UpdateScreen(&mock_base_screen_delegate_, &mock_view_));
   update_screen_->StartNetworkCheck();
 
   // Verify that the DUT checks for an update.
@@ -147,8 +143,8 @@
       .Times(1);
 
   // DUT reaches UpdateScreen.
-  update_screen_.reset(new UpdateScreen(&mock_base_screen_delegate_,
-                                        &mock_view_, &fake_controller_));
+  update_screen_.reset(
+      new UpdateScreen(&mock_base_screen_delegate_, &mock_view_));
   update_screen_->StartNetworkCheck();
 
   // Verify that the DUT checks for an update.
@@ -165,8 +161,8 @@
   EXPECT_CALL(mock_base_screen_delegate_, OnExit(_)).Times(0);
 
   // DUT reaches UpdateScreen.
-  update_screen_.reset(new UpdateScreen(&mock_base_screen_delegate_,
-                                        &mock_view_, &fake_controller_));
+  update_screen_.reset(
+      new UpdateScreen(&mock_base_screen_delegate_, &mock_view_));
   update_screen_->StartNetworkCheck();
 
   // Verify that the DUT checks for an update.
diff --git a/chrome/browser/chromeos/login/startup_utils.cc b/chrome/browser/chromeos/login/startup_utils.cc
index 76da747..d14c730 100644
--- a/chrome/browser/chromeos/login/startup_utils.cc
+++ b/chrome/browser/chromeos/login/startup_utils.cc
@@ -88,8 +88,6 @@
   registry->RegisterIntegerPref(prefs::kDeviceRegistered, -1);
   registry->RegisterBooleanPref(prefs::kEnrollmentRecoveryRequired, false);
   registry->RegisterStringPref(prefs::kInitialLocale, "en-US");
-  registry->RegisterBooleanPref(prefs::kIsBootstrappingSlave, false);
-  registry->RegisterBooleanPref(prefs::kOobeControllerDetected, false);
 }
 
 // static
@@ -115,8 +113,6 @@
   g_browser_process->local_state()->ClearPref(prefs::kOobeScreenPending);
   SaveBoolPreferenceForced(prefs::kOobeComplete, true);
 
-  g_browser_process->local_state()->ClearPref(prefs::kIsBootstrappingSlave);
-
   // Successful enrollment implies that recovery is not required.
   SaveBoolPreferenceForced(prefs::kEnrollmentRecoveryRequired, false);
 }
diff --git a/chrome/browser/chromeos/login/ui/webui_login_view.cc b/chrome/browser/chromeos/login/ui/webui_login_view.cc
index e18d4d599..3abc23d 100644
--- a/chrome/browser/chromeos/login/ui/webui_login_view.cc
+++ b/chrome/browser/chromeos/login/ui/webui_login_view.cc
@@ -77,7 +77,6 @@
 const char kAccelNameReset[] = "reset";
 const char kAccelNameDeviceRequisition[] = "device_requisition";
 const char kAccelNameDeviceRequisitionRemora[] = "device_requisition_remora";
-const char kAccelNameDeviceRequisitionShark[] = "device_requisition_shark";
 const char kAccelNameAppLaunchBailout[] = "app_launch_bailout";
 const char kAccelNameAppLaunchNetworkConfig[] = "app_launch_network_config";
 const char kAccelNameBootstrappingSlave[] = "bootstrapping_slave";
@@ -148,10 +147,6 @@
   accel_map_[
       ui::Accelerator(ui::VKEY_H, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
       kAccelNameDeviceRequisitionRemora;
-  accel_map_[
-      ui::Accelerator(ui::VKEY_H,
-          ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN)] =
-      kAccelNameDeviceRequisitionShark;
 
   accel_map_[ui::Accelerator(ui::VKEY_S,
                              ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc
index 88d5637..7f544f8 100644
--- a/chrome/browser/chromeos/login/wizard_controller.cc
+++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -117,9 +117,6 @@
 #include "components/arc/arc_prefs.h"
 #include "components/arc/arc_util.h"
 #include "components/crash/content/app/breakpad_linux.h"
-#include "components/pairing/bluetooth_controller_pairing_controller.h"
-#include "components/pairing/bluetooth_host_pairing_controller.h"
-#include "components/pairing/shark_connection_listener.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
 #include "components/session_manager/core/session_manager.h"
@@ -227,51 +224,6 @@
   return policy_manager && policy_manager->IsRemoraRequisition();
 }
 
-bool IsSharkRequisition() {
-  policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
-      g_browser_process->platform_part()
-          ->browser_policy_connector_chromeos()
-          ->GetDeviceCloudPolicyManager();
-  return policy_manager && policy_manager->IsSharkRequisition();
-}
-
-// Checks if a controller device ("Master") is detected during the bootstrapping
-// or shark/remora setup process.
-bool IsControllerDetected() {
-  return g_browser_process->local_state()->GetBoolean(
-      prefs::kOobeControllerDetected);
-}
-
-void SetControllerDetectedPref(bool value) {
-  PrefService* prefs = g_browser_process->local_state();
-  prefs->SetBoolean(prefs::kOobeControllerDetected, value);
-  prefs->CommitPendingWrite();
-}
-
-// Checks if the device is a "slave" device in the bootstrapping process.
-bool IsBootstrappingSlave() {
-  return g_browser_process->local_state()->GetBoolean(
-      prefs::kIsBootstrappingSlave);
-}
-
-// Checks if the device is a "Master" device in the bootstrapping process.
-bool IsBootstrappingMaster() {
-  return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      chromeos::switches::kOobeBootstrappingMaster);
-}
-
-bool NetworkAllowUpdate(const chromeos::NetworkState* network) {
-  if (!network || !network->IsConnectedState())
-    return false;
-  if (network->type() == shill::kTypeBluetooth ||
-      (network->type() == shill::kTypeCellular &&
-       !help_utils_chromeos::IsUpdateOverCellularAllowed(
-           false /* interactive */))) {
-    return false;
-  }
-  return true;
-}
-
 // Return false if the logged in user is a managed or child account. Otherwise,
 // return true if the feature flag for recommend app screen is on.
 bool ShouldShowRecommendAppsScreen() {
@@ -344,12 +296,6 @@
 
 WizardController::~WizardController() {
   screen_manager_.reset();
-  // |remora_controller| has to be reset after |screen_manager_| is reset.
-  remora_controller_.reset();
-  if (shark_connection_listener_.get()) {
-    base::ThreadTaskRunnerHandle::Get()->DeleteSoon(
-        FROM_HERE, shark_connection_listener_.release());
-  }
 }
 
 void WizardController::Init(OobeScreen first_screen) {
@@ -387,24 +333,14 @@
     }
   }
 
-  // If the device is a Master device in bootstrapping process (mostly for demo
-  // and test purpose), start the enrollment OOBE flow.
-  if (IsBootstrappingMaster())
-    connector->GetDeviceCloudPolicyManager()->SetDeviceEnrollmentAutoStart();
-
   // Use the saved screen preference from Local State.
   const std::string screen_pref =
       GetLocalState()->GetString(prefs::kOobeScreenPending);
-  if (is_out_of_box_ && !screen_pref.empty() && !IsRemoraPairingOobe() &&
-      !IsControllerDetected() &&
+  if (is_out_of_box_ && !screen_pref.empty() &&
       (first_screen == OobeScreen::SCREEN_UNKNOWN ||
        first_screen == OobeScreen::SCREEN_TEST_NO_WINDOW)) {
     first_screen_ = GetOobeScreenFromName(screen_pref);
   }
-  // We need to reset the kOobeControllerDetected pref to allow the user to have
-  // the choice to setup the device manually. The pref will be set properly if
-  // an eligible controller is detected later.
-  SetControllerDetectedPref(false);
 
   AdvanceToScreen(first_screen_);
   if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() &&
@@ -437,8 +373,7 @@
     return std::make_unique<NetworkScreen>(this,
                                            oobe_ui->GetNetworkScreenView());
   } else if (screen == OobeScreen::SCREEN_OOBE_UPDATE) {
-    return std::make_unique<UpdateScreen>(this, oobe_ui->GetUpdateView(),
-                                          remora_controller_.get());
+    return std::make_unique<UpdateScreen>(this, oobe_ui->GetUpdateView());
   } else if (screen == OobeScreen::SCREEN_USER_IMAGE_PICKER) {
     return std::make_unique<UserImageScreen>(this, oobe_ui->GetUserImageView());
   } else if (screen == OobeScreen::SCREEN_OOBE_EULA) {
@@ -488,28 +423,6 @@
   } else if (screen == OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK) {
     return std::make_unique<AutoEnrollmentCheckScreen>(
         this, oobe_ui->GetAutoEnrollmentCheckScreenView());
-  } else if (screen == OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING) {
-    if (!shark_controller_) {
-      shark_controller_ = std::make_unique<
-          pairing_chromeos::BluetoothControllerPairingController>();
-    }
-    return std::make_unique<ControllerPairingScreen>(
-        this, this, oobe_ui->GetControllerPairingScreenView(),
-        shark_controller_.get());
-  } else if (screen == OobeScreen::SCREEN_OOBE_HOST_PAIRING) {
-    if (!remora_controller_) {
-      DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-      DCHECK(content::ServiceManagerConnection::GetForProcess());
-      service_manager::Connector* connector =
-          content::ServiceManagerConnection::GetForProcess()->GetConnector();
-      remora_controller_ =
-          std::make_unique<pairing_chromeos::BluetoothHostPairingController>(
-              connector);
-      remora_controller_->StartPairing();
-    }
-    return std::make_unique<HostPairingScreen>(
-        this, this, oobe_ui->GetHostPairingScreenView(),
-        remora_controller_.get());
   } else if (screen == OobeScreen::SCREEN_DEVICE_DISABLED) {
     return std::make_unique<DeviceDisabledScreen>(
         this, oobe_ui->GetDeviceDisabledScreenView());
@@ -561,17 +474,6 @@
   VLOG(1) << "Showing welcome screen.";
   UpdateStatusAreaVisibilityForScreen(OobeScreen::SCREEN_OOBE_WELCOME);
   SetCurrentScreen(GetScreen(OobeScreen::SCREEN_OOBE_WELCOME));
-
-  // There are two possible screens where we listen to the incoming Bluetooth
-  // connection request: the first one is the HID detection screen, which will
-  // show up when there is no sufficient input devices. In this case, we just
-  // keep the logic as it is today: always put the Bluetooth is discoverable
-  // mode. The other place is the Network screen (here), which will show up when
-  // there are input devices detected. In this case, we disable the Bluetooth by
-  // default until the user explicitly enable it by pressing a key combo (Ctrl+
-  // Alt+Shift+S).
-  if (IsBootstrappingSlave())
-    MaybeStartListeningForSharkConnection();
 }
 
 void WizardController::ShowNetworkScreen() {
@@ -756,23 +658,6 @@
   VLOG(1) << "Showing HID discovery screen.";
   UpdateStatusAreaVisibilityForScreen(OobeScreen::SCREEN_OOBE_HID_DETECTION);
   SetCurrentScreen(GetScreen(OobeScreen::SCREEN_OOBE_HID_DETECTION));
-  // In HID detection screen, puts the Bluetooth in discoverable mode and waits
-  // for the incoming Bluetooth connection request. See the comments in
-  // WizardController::ShowWelcomeScreen() for more details.
-  MaybeStartListeningForSharkConnection();
-}
-
-void WizardController::ShowControllerPairingScreen() {
-  VLOG(1) << "Showing controller pairing screen.";
-  UpdateStatusAreaVisibilityForScreen(
-      OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING);
-  SetCurrentScreen(GetScreen(OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING));
-}
-
-void WizardController::ShowHostPairingScreen() {
-  VLOG(1) << "Showing host pairing screen.";
-  UpdateStatusAreaVisibilityForScreen(OobeScreen::SCREEN_OOBE_HOST_PAIRING);
-  SetCurrentScreen(GetScreen(OobeScreen::SCREEN_OOBE_HOST_PAIRING));
 }
 
 void WizardController::ShowDeviceDisabledScreen() {
@@ -857,11 +742,6 @@
   InitiateOOBEUpdate();
 }
 
-pairing_chromeos::SharkConnectionListener*
-WizardController::GetSharkConnectionListenerForTesting() {
-  return shark_connection_listener_.get();
-}
-
 void WizardController::SkipUpdateEnrollAfterEula() {
   skip_update_enroll_after_eula_ = true;
 }
@@ -936,13 +816,7 @@
 }
 
 void WizardController::OnUpdateCompleted() {
-  if (IsSharkRequisition() || IsBootstrappingMaster()) {
-    ShowControllerPairingScreen();
-  } else if (IsControllerDetected()) {
-    ShowHostPairingScreen();
-  } else {
-    ShowAutoEnrollmentCheckScreen();
-  }
+  ShowAutoEnrollmentCheckScreen();
 }
 
 void WizardController::OnUpdateOverCellularRejected() {
@@ -1174,10 +1048,6 @@
   OnOobeFlowFinished();
 }
 
-void WizardController::OnControllerPairingFinished() {
-  ShowAutoEnrollmentCheckScreen();
-}
-
 void WizardController::OnAutoEnrollmentCheckCompleted() {
   // Check whether the device is disabled. OnDeviceDisabledChecked() will be
   // invoked when the result of this check is known. Until then, the current
@@ -1350,9 +1220,6 @@
   GetLocalState()->ClearPref(prefs::kTimesHIDDialogShown);
   StartupUtils::MarkOobeCompleted();
   oobe_marked_completed_ = true;
-
-  if (shark_connection_listener_.get())
-    shark_connection_listener_->ResetController();
 }
 
 void WizardController::SetCurrentScreen(BaseScreen* new_current) {
@@ -1423,9 +1290,7 @@
              screen == OobeScreen::SCREEN_OOBE_ENABLE_DEBUGGING ||
              screen == OobeScreen::SCREEN_WRONG_HWID ||
              screen == OobeScreen::SCREEN_SUPERVISION_TRANSITION ||
-             screen == OobeScreen::SCREEN_ARC_KIOSK_SPLASH ||
-             screen == OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING ||
-             screen == OobeScreen::SCREEN_OOBE_HOST_PAIRING) {
+             screen == OobeScreen::SCREEN_ARC_KIOSK_SPLASH) {
     GetLoginDisplayHost()->SetStatusAreaVisible(false);
   } else {
     GetLoginDisplayHost()->SetStatusAreaVisible(true);
@@ -1510,10 +1375,6 @@
     ShowArcKioskSplashScreen();
   } else if (screen == OobeScreen::SCREEN_OOBE_HID_DETECTION) {
     ShowHIDDetectionScreen();
-  } else if (screen == OobeScreen::SCREEN_OOBE_CONTROLLER_PAIRING) {
-    ShowControllerPairingScreen();
-  } else if (screen == OobeScreen::SCREEN_OOBE_HOST_PAIRING) {
-    ShowHostPairingScreen();
   } else if (screen == OobeScreen::SCREEN_DEVICE_DISABLED) {
     ShowDeviceDisabledScreen();
   } else if (screen == OobeScreen::SCREEN_ENCRYPTION_MIGRATION) {
@@ -1539,10 +1400,7 @@
   } else if (screen != OobeScreen::SCREEN_TEST_NO_WINDOW) {
     if (is_out_of_box_) {
       time_oobe_started_ = base::Time::Now();
-
-      if (IsRemoraPairingOobe() || IsControllerDetected()) {
-        ShowHostPairingScreen();
-      } else if (CanShowHIDDetectionScreen()) {
+      if (CanShowHIDDetectionScreen()) {
         hid_screen_ = GetScreen(OobeScreen::SCREEN_OOBE_HID_DETECTION);
         base::Callback<void(bool)> on_check =
             base::Bind(&WizardController::OnHIDScreenNecessityCheck,
@@ -1670,9 +1528,6 @@
     case ScreenExitCode::WRONG_HWID_WARNING_SKIPPED:
       OnWrongHWIDWarningSkipped();
       break;
-    case ScreenExitCode::CONTROLLER_PAIRING_FINISHED:
-      OnControllerPairingFinished();
-      break;
     case ScreenExitCode::VOICE_INTERACTION_VALUE_PROP_SKIPPED:
       OnVoiceInteractionValuePropSkipped();
       break;
@@ -1751,75 +1606,6 @@
   return usage_statistics_reporting_;
 }
 
-void WizardController::SetHostNetwork() {
-  if (!shark_controller_)
-    return;
-  std::string onc_spec;
-  network_state_helper_->GetConnectedWifiNetwork(&onc_spec);
-  if (!onc_spec.empty())
-    shark_controller_->SetHostNetwork(onc_spec);
-}
-
-void WizardController::SetHostConfiguration() {
-  if (!shark_controller_)
-    return;
-  WelcomeScreen* welcome_screen = WelcomeScreen::Get(screen_manager());
-  shark_controller_->SetHostConfiguration(
-      true,  // Eula must be accepted before we get this far.
-      welcome_screen->GetApplicationLocale(), welcome_screen->GetTimezone(),
-      GetUsageStatisticsReporting(), welcome_screen->GetInputMethod());
-}
-
-void WizardController::ConfigureHostRequested(
-    bool accepted_eula,
-    const std::string& lang,
-    const std::string& timezone,
-    bool send_reports,
-    const std::string& keyboard_layout) {
-  VLOG(1) << "ConfigureHost locale=" << lang << ", timezone=" << timezone
-          << ", keyboard_layout=" << keyboard_layout;
-  if (accepted_eula)  // Always true.
-    StartupUtils::MarkEulaAccepted();
-  SetUsageStatisticsReporting(send_reports);
-
-  WelcomeScreen* welcome_screen = WelcomeScreen::Get(screen_manager());
-  welcome_screen->SetApplicationLocaleAndInputMethod(lang, keyboard_layout);
-  welcome_screen->SetTimezone(timezone);
-
-  // Don't block the OOBE update and the following enrollment process if there
-  // is available and valid network already.
-  const chromeos::NetworkState* network_state = chromeos::NetworkHandler::Get()
-                                                    ->network_state_handler()
-                                                    ->DefaultNetwork();
-  if (NetworkAllowUpdate(network_state))
-    InitiateOOBEUpdate();
-}
-
-void WizardController::AddNetworkRequested(const std::string& onc_spec) {
-  remora_controller_->OnNetworkConnectivityChanged(
-      pairing_chromeos::HostPairingController::CONNECTIVITY_CONNECTING);
-
-  const chromeos::NetworkState* network_state = chromeos::NetworkHandler::Get()
-                                                    ->network_state_handler()
-                                                    ->DefaultNetwork();
-  if (NetworkAllowUpdate(network_state)) {
-    network_state_helper_->CreateAndConnectNetworkFromOnc(
-        onc_spec, base::DoNothing(), network_handler::ErrorCallback());
-  } else {
-    network_state_helper_->CreateAndConnectNetworkFromOnc(
-        onc_spec,
-        base::Bind(&WizardController::OnSetHostNetworkSuccessful,
-                   weak_factory_.GetWeakPtr()),
-        base::Bind(&WizardController::OnSetHostNetworkFailed,
-                   weak_factory_.GetWeakPtr()));
-  }
-}
-
-void WizardController::RebootHostRequested() {
-  DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(
-      power_manager::REQUEST_RESTART_OTHER, "login wizard reboot host");
-}
-
 void WizardController::OnEnableDebuggingScreenRequested() {
   if (!login_screen_started())
     AdvanceToScreen(OobeScreen::SCREEN_OOBE_ENABLE_DEBUGGING);
@@ -2037,11 +1823,6 @@
   return true;
 }
 
-bool WizardController::IsRemoraPairingOobe() const {
-  return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      switches::kHostPairingOobe);
-}
-
 bool WizardController::ShouldShowVoiceInteractionValueProp() const {
   // If the OOBE flow was initiated from voice interaction shortcut, we will
   // show Arc terms later.
@@ -2067,57 +1848,6 @@
     service->StartVoiceInteractionSetupWizard();
 }
 
-void WizardController::MaybeStartListeningForSharkConnection() {
-  // We shouldn't be here if we are running pairing OOBE already.
-  if (IsControllerDetected())
-    return;
-
-  if (!shark_connection_listener_) {
-    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-    DCHECK(content::ServiceManagerConnection::GetForProcess());
-    service_manager::Connector* connector =
-        content::ServiceManagerConnection::GetForProcess()->GetConnector();
-    shark_connection_listener_ =
-        std::make_unique<pairing_chromeos::SharkConnectionListener>(
-            connector, base::Bind(&WizardController::OnSharkConnected,
-                                  weak_factory_.GetWeakPtr()));
-  }
-}
-
-void WizardController::OnSharkConnected(
-    std::unique_ptr<pairing_chromeos::HostPairingController>
-        remora_controller) {
-  VLOG(1) << "OnSharkConnected";
-  remora_controller_ = std::move(remora_controller);
-  base::ThreadTaskRunnerHandle::Get()->DeleteSoon(
-      FROM_HERE, shark_connection_listener_.release());
-  SetControllerDetectedPref(true);
-  ShowHostPairingScreen();
-}
-
-void WizardController::OnSetHostNetworkSuccessful() {
-  remora_controller_->OnNetworkConnectivityChanged(
-      pairing_chromeos::HostPairingController::CONNECTIVITY_CONNECTED);
-  InitiateOOBEUpdate();
-}
-
-void WizardController::OnSetHostNetworkFailed(
-    const std::string& error_name,
-    std::unique_ptr<base::DictionaryValue> error_data) {
-  std::string error_message;
-  JSONStringValueSerializer serializer(&error_message);
-  serializer.Serialize(*error_data);
-  error_message = error_name + ": " + error_message;
-
-  remora_controller_->SetErrorCodeAndMessage(
-      static_cast<int>(
-          pairing_chromeos::HostPairingController::ErrorCode::NETWORK_ERROR),
-      error_message);
-
-  remora_controller_->OnNetworkConnectivityChanged(
-      pairing_chromeos::HostPairingController::CONNECTIVITY_NONE);
-}
-
 void WizardController::StartEnrollmentScreen(bool force_interactive) {
   VLOG(1) << "Showing enrollment screen."
           << " Forcing interactive enrollment: " << force_interactive << ".";
@@ -2155,7 +1885,7 @@
   }
 
   EnrollmentScreen* screen = EnrollmentScreen::Get(screen_manager());
-  screen->SetParameters(effective_config, shark_controller_.get());
+  screen->SetEnrollmentConfig(effective_config);
   UpdateStatusAreaVisibilityForScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT);
   SetCurrentScreen(screen);
 }
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h
index 601fba2..93319ac 100644
--- a/chrome/browser/chromeos/login/wizard_controller.h
+++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -22,22 +22,14 @@
 #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
 #include "chrome/browser/chromeos/login/screen_manager.h"
 #include "chrome/browser/chromeos/login/screens/base_screen_delegate.h"
-#include "chrome/browser/chromeos/login/screens/controller_pairing_screen.h"
 #include "chrome/browser/chromeos/login/screens/eula_screen.h"
 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h"
-#include "chrome/browser/chromeos/login/screens/host_pairing_screen.h"
 #include "chrome/browser/chromeos/login/screens/reset_screen.h"
 #include "chrome/browser/chromeos/login/screens/welcome_screen.h"
 #include "chrome/browser/chromeos/policy/enrollment_config.h"
 
 class PrefService;
 
-namespace pairing_chromeos {
-class ControllerPairingController;
-class HostPairingController;
-class SharkConnectionListener;
-}  // namespace pairing_chromeos
-
 namespace chromeos {
 
 namespace login {
@@ -57,8 +49,6 @@
 // interacts with screen controllers to move the user between screens.
 class WizardController : public BaseScreenDelegate,
                          public EulaScreen::Delegate,
-                         public ControllerPairingScreen::Delegate,
-                         public HostPairingScreen::Delegate,
                          public WelcomeScreen::Delegate,
                          public HIDDetectionScreen::Delegate {
  public:
@@ -123,10 +113,6 @@
   void SkipToLoginForTesting(const LoginScreenContext& context);
   void SkipToUpdateForTesting();
 
-  // Should be used for testing only.
-  pairing_chromeos::SharkConnectionListener*
-  GetSharkConnectionListenerForTesting();
-
   // Skip update, go straight to enrollment after EULA is accepted.
   void SkipUpdateEnrollAfterEula();
 
@@ -189,8 +175,6 @@
   void ShowAutoEnrollmentCheckScreen();
   void ShowArcKioskSplashScreen();
   void ShowHIDDetectionScreen();
-  void ShowControllerPairingScreen();
-  void ShowHostPairingScreen();
   void ShowDeviceDisabledScreen();
   void ShowEncryptionMigrationScreen();
   void ShowVoiceInteractionValuePropScreen();
@@ -241,7 +225,6 @@
   void OnAppDownloadingFinished();
   void OnVoiceInteractionValuePropSkipped();
   void OnVoiceInteractionValuePropAccepted();
-  void OnControllerPairingFinished();
   void OnAutoEnrollmentCheckCompleted();
   void OnDemoSetupFinished();
   void OnDemoSetupCanceled();
@@ -286,19 +269,6 @@
   void SetUsageStatisticsReporting(bool val) override;
   bool GetUsageStatisticsReporting() const override;
 
-  // Override from ControllerPairingScreen::Delegate:
-  void SetHostNetwork() override;
-  void SetHostConfiguration() override;
-
-  // Override from HostPairingScreen::Delegate:
-  void ConfigureHostRequested(bool accepted_eula,
-                              const std::string& lang,
-                              const std::string& timezone,
-                              bool send_reports,
-                              const std::string& keyboard_layout) override;
-  void AddNetworkRequested(const std::string& onc_spec) override;
-  void RebootHostRequested() override;
-
   // Override from WelcomeScreen::Delegate:
   void OnEnableDebuggingScreenRequested() override;
 
@@ -353,32 +323,12 @@
   // Returns false if timezone has already been resolved.
   bool SetOnTimeZoneResolvedForTesting(const base::Closure& callback);
 
-  // Returns true if kHostPairingOobe perf has been set. If it's set, launch the
-  // pairing remora OOBE from the beginning no matter an eligible controller is
-  // detected or not.
-  bool IsRemoraPairingOobe() const;
-
   // Returns true if voice interaction value prop should be shown.
   bool ShouldShowVoiceInteractionValueProp() const;
 
   // Start voice interaction setup wizard in container
   void StartVoiceInteractionSetupWizard();
 
-  // Starts listening for an incoming shark controller connection, if we are
-  // running remora OOBE.
-  void MaybeStartListeningForSharkConnection();
-
-  // Called when a connection to controller has been established. Wizard
-  // controller takes the ownership of |pairing_controller| after that call.
-  void OnSharkConnected(std::unique_ptr<pairing_chromeos::HostPairingController>
-                            pairing_controller);
-
-  // Callback functions for AddNetworkRequested().
-  void OnSetHostNetworkSuccessful();
-  void OnSetHostNetworkFailed(
-      const std::string& error_name,
-      std::unique_ptr<base::DictionaryValue> error_data);
-
   // Start the enrollment screen using the config from
   // |prescribed_enrollment_config_|. If |force_interactive| is true,
   // the user will be presented with a manual enrollment screen requiring
@@ -478,13 +428,6 @@
   std::unique_ptr<SimpleGeolocationProvider> geolocation_provider_;
   std::unique_ptr<TimeZoneProvider> timezone_provider_;
 
-  // Pairing controller for shark devices.
-  std::unique_ptr<pairing_chromeos::ControllerPairingController>
-      shark_controller_;
-
-  // Pairing controller for remora devices.
-  std::unique_ptr<pairing_chromeos::HostPairingController> remora_controller_;
-
   // Helper for network realted operations.
   std::unique_ptr<login::NetworkStateHelper> network_state_helper_;
 
@@ -499,12 +442,6 @@
   bool timezone_resolved_ = false;
   base::Closure on_timezone_resolved_for_testing_;
 
-  // Listens for incoming connection from a shark controller if a regular (not
-  // pairing) remora OOBE is active. If connection is established, wizard
-  // conroller swithces to a pairing OOBE.
-  std::unique_ptr<pairing_chromeos::SharkConnectionListener>
-      shark_connection_listener_;
-
   // Configuration (dictionary) for automating OOBE screens.
   base::Value oobe_configuration_;
 
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
index c9d9fcd..ea035df 100644
--- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -910,7 +910,7 @@
   EXPECT_CALL(*mock_update_screen_, Show()).Times(0);
   WizardController::default_controller()->SkipUpdateEnrollAfterEula();
   EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(
+              SetEnrollmentConfig(
                   mock_enrollment_screen_,
                   EnrollmentModeMatches(policy::EnrollmentConfig::MODE_MANUAL)))
       .Times(1);
@@ -957,7 +957,7 @@
   CheckCurrentScreen(OobeScreen::SCREEN_OOBE_WELCOME);
   EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(0);
   EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(
+              SetEnrollmentConfig(
                   mock_enrollment_screen_,
                   EnrollmentModeMatches(policy::EnrollmentConfig::MODE_MANUAL)))
       .Times(1);
@@ -1304,10 +1304,11 @@
   g_browser_process->local_state()->Set(prefs::kServerBackedDeviceState,
                                         device_state);
   EXPECT_CALL(*mock_enrollment_screen_, Show()).Times(1);
-  EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(mock_enrollment_screen_,
-                            EnrollmentModeMatches(
-                                policy::EnrollmentConfig::MODE_SERVER_FORCED)))
+  EXPECT_CALL(
+      *mock_enrollment_screen_->view(),
+      SetEnrollmentConfig(
+          mock_enrollment_screen_,
+          EnrollmentModeMatches(policy::EnrollmentConfig::MODE_SERVER_FORCED)))
       .Times(1);
   OnExit(ScreenExitCode::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
 
@@ -1398,9 +1399,9 @@
     EXPECT_CALL(*mock_enrollment_screen_, Show()).Times(1);
     EXPECT_CALL(
         *mock_enrollment_screen_->view(),
-        SetParameters(mock_enrollment_screen_,
-                      EnrollmentModeMatches(
-                          policy::EnrollmentConfig::MODE_SERVER_FORCED)))
+        SetEnrollmentConfig(mock_enrollment_screen_,
+                            EnrollmentModeMatches(
+                                policy::EnrollmentConfig::MODE_SERVER_FORCED)))
         .Times(1);
     fake_auto_enrollment_client->SetState(
         policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT);
@@ -1533,10 +1534,11 @@
   g_browser_process->local_state()->Set(prefs::kServerBackedDeviceState,
                                         device_state);
   EXPECT_CALL(*mock_enrollment_screen_, Show()).Times(1);
-  EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(mock_enrollment_screen_,
-                            EnrollmentModeMatches(
-                                policy::EnrollmentConfig::MODE_SERVER_FORCED)))
+  EXPECT_CALL(
+      *mock_enrollment_screen_->view(),
+      SetEnrollmentConfig(
+          mock_enrollment_screen_,
+          EnrollmentModeMatches(policy::EnrollmentConfig::MODE_SERVER_FORCED)))
       .Times(1);
   OnExit(ScreenExitCode::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
 
@@ -1624,10 +1626,11 @@
   g_browser_process->local_state()->Set(prefs::kServerBackedDeviceState,
                                         device_state);
   EXPECT_CALL(*mock_enrollment_screen_, Show()).Times(1);
-  EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(mock_enrollment_screen_,
-                            EnrollmentModeMatches(
-                                policy::EnrollmentConfig::MODE_SERVER_FORCED)))
+  EXPECT_CALL(
+      *mock_enrollment_screen_->view(),
+      SetEnrollmentConfig(
+          mock_enrollment_screen_,
+          EnrollmentModeMatches(policy::EnrollmentConfig::MODE_SERVER_FORCED)))
       .Times(1);
   fake_auto_enrollment_client->SetState(
       policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT);
@@ -1864,10 +1867,11 @@
   EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
   EXPECT_CALL(*mock_enrollment_screen_, Show()).Times(1);
 
-  EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(mock_enrollment_screen_,
-                            EnrollmentModeMatches(
-                                policy::EnrollmentConfig::MODE_SERVER_FORCED)))
+  EXPECT_CALL(
+      *mock_enrollment_screen_->view(),
+      SetEnrollmentConfig(
+          mock_enrollment_screen_,
+          EnrollmentModeMatches(policy::EnrollmentConfig::MODE_SERVER_FORCED)))
       .Times(1);
   OnExit(ScreenExitCode::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
   ResetAutoEnrollmentCheckScreen();
@@ -2053,10 +2057,11 @@
 
 IN_PROC_BROWSER_TEST_F(WizardControllerKioskFlowTest,
                        ControlFlowKioskForcedEnrollment) {
-  EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(mock_enrollment_screen_,
-                            EnrollmentModeMatches(
-                                policy::EnrollmentConfig::MODE_LOCAL_FORCED)))
+  EXPECT_CALL(
+      *mock_enrollment_screen_->view(),
+      SetEnrollmentConfig(
+          mock_enrollment_screen_,
+          EnrollmentModeMatches(policy::EnrollmentConfig::MODE_LOCAL_FORCED)))
       .Times(1);
   CheckCurrentScreen(OobeScreen::SCREEN_OOBE_WELCOME);
   EXPECT_CALL(*mock_welcome_screen_, Hide()).Times(1);
@@ -2099,10 +2104,11 @@
 
 IN_PROC_BROWSER_TEST_F(WizardControllerKioskFlowTest,
                        ControlFlowEnrollmentBack) {
-  EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(mock_enrollment_screen_,
-                            EnrollmentModeMatches(
-                                policy::EnrollmentConfig::MODE_LOCAL_FORCED)))
+  EXPECT_CALL(
+      *mock_enrollment_screen_->view(),
+      SetEnrollmentConfig(
+          mock_enrollment_screen_,
+          EnrollmentModeMatches(policy::EnrollmentConfig::MODE_LOCAL_FORCED)))
       .Times(1);
 
   CheckCurrentScreen(OobeScreen::SCREEN_OOBE_WELCOME);
@@ -2639,7 +2645,7 @@
       OobeScreen::SCREEN_OOBE_WELCOME);
   CheckCurrentScreen(OobeScreen::SCREEN_OOBE_WELCOME);
   EXPECT_CALL(*mock_enrollment_screen_->view(),
-              SetParameters(
+              SetEnrollmentConfig(
                   mock_enrollment_screen_,
                   EnrollmentModeMatches(policy::EnrollmentConfig::MODE_MANUAL)))
       .Times(1);
@@ -2740,9 +2746,6 @@
 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when
 // UI and logic is ready. http://crbug.com/127016
 
-// TODO(dzhioev): Add tests for controller/host pairing flow.
-// http://crbug.com/375191
-
 // TODO(khmel): Add tests for ARC OptIn flow.
 // http://crbug.com/651144
 
diff --git a/chrome/browser/resources/chromeos/login/controller-pairing-screen.html b/chrome/browser/resources/chromeos/login/controller-pairing-screen.html
deleted file mode 100644
index f7ceba1..0000000
--- a/chrome/browser/resources/chromeos/login/controller-pairing-screen.html
+++ /dev/null
@@ -1,276 +0,0 @@
-<!-- Copyright 2015 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-iconset-svg/iron-iconset-svg.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-selector/iron-selector.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-in-animation.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-out-animation.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/neon-animatable-behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/neon-animated-pages.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/web-animations.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-icon-item.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-progress/paper-progress.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/shadow.html">
-
-<!--
-List of devices.
-Published properties:
-  * devices - array of strings, the model of the list.
-  * selected - a name of the selected device ('null' if no devices are
-    selected).
-  * connecting - a binary attribute. If set, the list does not respond to the
-    user actions and a spinner is shown near selected device.
--->
-<dom-module id="pairing-device-list">
-  <link rel="stylesheet" href="oobe_flex_layout.css">
-  <link rel="stylesheet" href="pairing_device_list.css">
-
-  <iron-iconset-svg name="pairing-device-list-icons">
-    <svg><defs><g id="circle">
-      <circle cx="12" cy="12" r="12"></circle>
-    </g></defs></svg>
-  </iron-iconset-svg>
-
-  <template>
-    <iron-selector selected="{{selected}}" attr-for-selected="name">
-      <template is="dom-repeat" items="[[devices]]">
-        <paper-icon-item name$="[[item]]" class="relative">
-          <iron-icon icon="pairing-device-list-icons:circle" item-icon
-              style$="[[getStyleForDeviceIcon_(item)]]">
-          </iron-icon>
-          <div><span>[[item]]</span></div>
-          <div class="flex horizontal end-justified layout center">
-            <div class="throbber"></div>
-          </div>
-        </paper-icon-item>
-      </template>
-    </iron-selector>
-  </template>
-</dom-module>
-
-<!--
-Single page of the controller's out-of-box flow.
-The page consists of the top part and the bottom part.
-The top part contains a title of the page. Direct successors of the
-<controller-pairing-page> having 'title' class will be inserted there.
-The bottom part contains controls that are aligned right  (all the successors
-that are <paper-button>s) and a content of the page (all the other successors).
-Special case is a help button (<paper-button> with 'help' class set) which
-is aligned left.
-There are several classes that can be used to change the page appearance:
-  * split - if this class is set, top and bottom parts will have different
-    colors (see stylesheet of controller-pairing-screen).
-  * big-font - if this class is set, slightly bigger font is used on page.
-  * progress - if this class is set and 'split' is not, progress bar is shown
-    instead of top and bottom parts separator.
-
-Also height of the top part can be specified in CSS as follows:
-
-controller-pairing-page::shadow #top {
-  height: 100px;
-}
--->
-<dom-module id="controller-pairing-page">
-  <link rel="stylesheet" href="controller_pairing_page.css">
-
-  <template>
-    <div class="vertical layout fit">
-      <div id="top" class="relative vertical end-justified layout">
-        <div id="title">
-          <slot name="title"></slot>
-        </div>
-        <div id="separator">
-          <paper-progress indeterminate></paper-progress>
-        </div>
-      </div>
-      <div id="bottom" class="flex vertical layout">
-        <div class="flex vertical layout">
-          <slot></slot>
-        </div>
-        <div id="controls" class="horizontal layout center">
-          <div class="flex">
-            <slot name="help"></slot>
-          </div>
-          <slot name="buttons"></slot>
-        </div>
-      </div>
-    </div>
-  </template>
-</dom-module>
-
-<dom-module id="controller-pairing-screen">
-  <link rel="stylesheet" href="oobe_screen_controller_pairing.css">
-
-  <template>
-    <style>
-      div.elevate {
-        @apply(--shadow-elevation-2dp);
-      }
-    </style>
-    <div class="fit elevate">
-      <neon-animated-pages id="pages" selected="{{C.page}}"
-          attr-for-selected="name" class="fit">
-        <controller-pairing-page name="devices-discovery" class="big-font">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenWelcomeTitle">
-          </div>
-          <div i18n-content="loginControllerPairingScreenSearching"></div>
-          <paper-button slot="help" on-tap="helpButtonClicked_"
-              i18n-content="loginControllerPairingScreenHelpBtn">
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="device-select" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenSelectTitle">
-          </div>
-          <pairing-device-list devices="[[C.devices]]"
-              selected="{{selectedDevice}}">
-          </pairing-device-list>
-          <paper-button slot="help" on-tap="helpButtonClicked_"
-              i18n-content="loginControllerPairingScreenHelpBtn">
-          </paper-button>
-          <paper-button slot="buttons" on-tap="userActed" action="chooseDevice"
-              disabled$="[[C.controlsDisabled]]"
-              i18n-content="loginControllerPairingScreenConnectBtn">
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="device-not-found">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenTroubleConnectingTitle">
-          </div>
-          <div i18n-content="loginControllerPairingScreenConnectingAdvice">
-          </div>
-          <paper-button slot="buttons" on-tap="userActed"
-              action="repeatDiscovery"
-              i18n-content="loginControllerPairingScreenAdviceGotItBtn">
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="establishing-connection" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenSelectTitle">
-          </div>
-          <pairing-device-list devices="[[C.devices]]"
-              selected="{{selectedDevice}}" connecting>
-          </pairing-device-list>
-          <paper-button slot="help" on-tap="helpButtonClicked_"
-              i18n-content="loginControllerPairingScreenHelpBtn">
-          </paper-button>
-          <paper-button slot="buttons" disabled
-              i18n-content="loginControllerPairingScreenConnecting">
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="establishing-connection-error">
-          <!-- TODO(dzhioev): Strings TBD. http://crbug.com/423740 -->
-          <div slot="title">
-            Unable to connect to <span>[[selectedDevice]]<span>
-          </div>
-          <paper-button slot="buttons" on-tap="userActed"
-              action="repeatDiscovery">
-            Repeat discovery
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="code-confirmation" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenConfirmationTitle">
-          </div>
-          <div
-              i18n-content="loginControllerPairingScreenConfirmationQuestion">
-          </div>
-          <div id="code"><span>[[C.code]]</span></div>
-          <paper-button slot="buttons" on-tap="userActed" action="rejectCode"
-              disabled$="[[C.controlsDisabled]"
-              i18n-content="loginControllerPairingScreenRejectCodeBtn">
-          </paper-button>
-          <paper-button slot="buttons" on-tap="userActed" action="acceptCode"
-              disabled$="[[C.controlsDisabled]]"
-              i18n-content="loginControllerPairingScreenAcceptCodeBtn">
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="host-network-error" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenHostNetworkErrorTitle">
-          </div>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="host-update" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenUpdateTitle">
-          </div>
-          <div i18n-content="loginControllerPairingScreenUpdateText"></div>
-          <paper-progress indeterminate></paper-progress>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="host-connection-lost" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenConnectionLostTitle">
-          </div>
-          <div i18n-content="loginControllerPairingScreenConnectionLostText">
-          </div>
-          <paper-progress indeterminate></paper-progress>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="enrollment-introduction" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenEnrollTitle">
-          </div>
-          <p i18n-content="loginControllerPairingScreenEnrollText1"></p>
-          <p>
-            <strong i18n-content="loginControllerPairingScreenEnrollText2">
-            </strong>
-          </p>
-          <paper-button slot="buttons" on-tap="userActed"
-              action="proceedToAuthentication"
-              disabled$="[[C.controlsDisabled]]"
-              i18n-content="loginControllerPairingScreenContinueBtn">
-          </paper-button>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="authentication" class="split">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenEnrollTitle">
-          </div>
-          <div>Not implemented.</div>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="host-enrollment" class="progress">
-          <!-- This title contains <strong> tag inside. -->
-          <html-echo slot="title"
-              content="[[getHostEnrollmentStepTitle_(C.enrollmentDomain)]]">
-          </html-echo>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="host-enrollment-error" class="progress">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenEnrollmentErrorTitle">
-          </div>
-          <div
-              i18n-content="loginControllerPairingScreenEnrollmentErrorHostRestarts">
-          </div>
-        </controller-pairing-page>
-
-        <controller-pairing-page name="pairing-done" class="big-font">
-          <div slot="title"
-              i18n-content="loginControllerPairingScreenSuccessTitle">
-          </div>
-          <div><span>[[getSuccessMessage_(selectedDevice)]]</div>
-          <paper-button slot="buttons" on-tap="userActed" action="startSession"
-              disabled$="{{C.controlsDisabled}}"
-              i18n-content="loginControllerPairingScreenContinueToHangoutsBtn">
-          </paper-button>
-        </controller-pairing-page>
-      </neon-animated-pages>
-    </div>
-  </template>
-</dom-module>
diff --git a/chrome/browser/resources/chromeos/login/controller-pairing-screen.js b/chrome/browser/resources/chromeos/login/controller-pairing-screen.js
deleted file mode 100644
index f3808be..0000000
--- a/chrome/browser/resources/chromeos/login/controller-pairing-screen.js
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2014 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.
-
-Polymer((function() {
-  /** @const */ var ICON_COLORS = [
-    '#F0B9CB', '#F0ACC3', '#F098B6', '#F084A9', '#F06D99', '#F05287', '#F0467F',
-    '#F03473', '#F01E65', '#F00051'
-  ];
-  return {
-    is: 'pairing-device-list',
-
-    properties: {
-      devices: Array,
-
-      selected: {type: String, notify: true},
-
-      connecting: {type: Boolean, reflectToAttribute: true}
-    },
-
-    getStyleForDeviceIcon_: function(deviceName) {
-      return 'color: ' + this.colorByName_(deviceName);
-    },
-
-    /* Returns pseudo-random color depending of hash of the |name|. */
-    colorByName_: function(name) {
-      var hash = 0;
-      for (var i = 0; i < name.length; ++i)
-        hash = (name.charCodeAt(i) + 31 * hash) | 0;
-      return ICON_COLORS[hash % ICON_COLORS.length];
-    }
-  };
-})());
-
-Polymer({
-  is: 'controller-pairing-page',
-
-  behaviors: [Polymer.NeonAnimatableBehavior],
-
-  properties: {
-    animationConfig: {
-      value: function() {
-        return {
-          'entry': [{name: 'fade-in-animation', node: this}],
-
-          'exit': [{name: 'fade-out-animation', node: this}]
-        };
-      }
-    }
-  }
-});
-
-Polymer((function() {
-  'use strict';
-
-  // Keep these constants synced with corresponding constants defined in
-  // controller_pairing_screen_actor.{h,cc}.
-  /** @const */ var CONTEXT_KEY_CONTROLS_DISABLED = 'controlsDisabled';
-  /** @const */ var CONTEXT_KEY_SELECTED_DEVICE = 'selectedDevice';
-  /** @const */ var CONTEXT_KEY_ACCOUNT_ID = 'accountId';
-
-  /** @const */ var ACTION_ENROLL = 'enroll';
-
-  /** @const */ var PAGE_AUTHENTICATION = 'authentication';
-
-  return {
-    is: 'controller-pairing-screen',
-
-    behaviors: [login.OobeScreenBehavior],
-
-    properties:
-        {selectedDevice: {type: String, observer: 'selectedDeviceChanged_'}},
-
-    observers: ['deviceListChanged_(C.devices)'],
-
-    ready: function() {
-      /**
-       * Workaround for
-       * https://github.com/PolymerElements/neon-animation/issues/32
-       * TODO(dzhioev): Remove when fixed in Polymer.
-       */
-      var pages = this.$.pages;
-      delete pages._squelchNextFinishEvent;
-      Object.defineProperty(pages, '_squelchNextFinishEvent', {
-        get: function() {
-          return false;
-        }
-      });
-    },
-
-    /** @override */
-    initialize: function() {
-      ['code', 'controlsDisabled', 'devices', 'enrollmentDomain', 'page']
-          .forEach(this.registerBoundContextField, this);
-      this.context.set(CONTEXT_KEY_CONTROLS_DISABLED, true);
-      this.commitContextChanges();
-    },
-
-    i18n: function(args) {
-      return loadTimeData.getStringF.apply(loadTimeData, args);
-    },
-
-    deviceListChanged_: function() {
-      this.selectedDevice = this.context.get(CONTEXT_KEY_SELECTED_DEVICE, null);
-    },
-
-    selectedDeviceChanged_: function(selectedDevice) {
-      this.context.set(
-          CONTEXT_KEY_SELECTED_DEVICE, selectedDevice ? selectedDevice : '');
-      this.commitContextChanges();
-    },
-
-    helpButtonClicked_: function() {
-      console.error('Help is not implemented yet.');
-    },
-
-    getHostEnrollmentStepTitle_: function(domain) {
-      return this.i18n(
-          ['loginControllerPairingScreenEnrollmentInProgress', domain]);
-    },
-
-    getSuccessMessage_: function(selectedDevice) {
-      return this.i18n(
-          ['loginControllerPairingScreenSuccessText', selectedDevice]);
-    }
-  };
-})());
diff --git a/chrome/browser/resources/chromeos/login/controller_pairing_page.css b/chrome/browser/resources/chromeos/login/controller_pairing_page.css
deleted file mode 100644
index c2e61b5..0000000
--- a/chrome/browser/resources/chromeos/login/controller_pairing_page.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Copyright 2014 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. */
-
-:host {
-  background-color: var(--google-green-500);
-  color: white;
-}
-
-/* Top part of a page. */
-
-#top {
-  box-sizing: border-box;
-  font-size: 23px;
-  height: 266px;
-  padding: 34px 48px 22px;
-}
-
-:host(.split) #top {
-  padding-bottom: 33px;
-}
-
-:host(.big-font) #top {
-  font-size: 33px;
-}
-
-/* Separator. */
-
-#separator {
-  background-color: var(--google-green-100);
-  bottom: 0;
-  display: block;
-  height: 1px;
-  left: 48px;
-  position: absolute;
-  right: 0;
-}
-
-:host(.split) #separator {
-  display: none;
-}
-
-#separator paper-progress {
-  --paper-progress-active-color: white;
-  --paper-progress-container-color: var(--google-green-100);
-  display: none;
-  width: 100%;
-}
-
-:host(.progress) #separator paper-progress {
-  display: block;
-}
-
-:host(.progress) #separator {
-  bottom: -2px;
-  height: 4px;
-}
-
-/* Bottom part of a page. */
-
-#bottom {
-  font-size: 16px;
-  padding: 20px 48px 34px;
-}
-
-:host(.split) #bottom {
-  background: white;
-  color: black;
-  padding-top: 35px;
-}
-
-:host(.big-font) #bottom {
-  font-size: 24px;
-}
-
-/* Controls. */
-
-#controls {
-  font-size: 14px;
-  font-weight: 500;
-  margin-bottom: calc(-0.5em - 6px);
-}
-
-#controls :first-child {
-  margin-left: -0.5em;
-}
diff --git a/chrome/browser/resources/chromeos/login/custom_elements_oobe.html b/chrome/browser/resources/chromeos/login/custom_elements_oobe.html
index ccf1175..32f671d 100644
--- a/chrome/browser/resources/chromeos/login/custom_elements_oobe.html
+++ b/chrome/browser/resources/chromeos/login/custom_elements_oobe.html
@@ -1,4 +1,3 @@
-<include src="controller-pairing-screen.html">
 <include src="gaia_buttons.html">
 <include src="gaia_card.html">
 <include src="gaia_header.html">
@@ -6,7 +5,6 @@
 <include src="gaia_input.html">
 <include src="gaia_password_changed.html">
 <include src="hd-iron-icon.html">
-<include src="host-pairing-screen.html">
 <include src="html-echo.html">
 <include src="network_select_login.html">
 <include src="notification_card.html">
diff --git a/chrome/browser/resources/chromeos/login/custom_elements_oobe.js b/chrome/browser/resources/chromeos/login/custom_elements_oobe.js
index b75bf6b..e826983 100644
--- a/chrome/browser/resources/chromeos/login/custom_elements_oobe.js
+++ b/chrome/browser/resources/chromeos/login/custom_elements_oobe.js
@@ -10,7 +10,6 @@
 // <include src="oobe-screen.js">
 
 // <include src="oobe_dialog_host_behavior.js">
-// <include src="controller-pairing-screen.js">
 // <include src="gaia_buttons.js">
 // <include src="gaia_card.js">
 // <include src="gaia_header.js">
@@ -18,7 +17,6 @@
 // <include src="gaia_input.js">
 // <include src="gaia_password_changed.js">
 // <include src="hd-iron-icon.js">
-// <include src="host-pairing-screen.js">
 // <include src="html-echo.js">
 // <include src="network_select_login.js">
 // <include src="notification_card.js">
diff --git a/chrome/browser/resources/chromeos/login/host-pairing-screen.html b/chrome/browser/resources/chromeos/login/host-pairing-screen.html
deleted file mode 100644
index 2aa1a28..0000000
--- a/chrome/browser/resources/chromeos/login/host-pairing-screen.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!-- Copyright 2015 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-in-animation.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/animations/fade-out-animation.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/neon-animatable-behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/neon-animated-pages.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/neon-animation/web-animations.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-icon-item.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html">
-
-<dom-module id="host-pairing-page">
-
-  <link rel="stylesheet" href="oobe_screen_host_pairing_page.css">
-
-  <template>
-    <div id="title">
-      <slot name="title"></slot>
-    </div>
-    <div id="content">
-      <slot></slot>
-    </div>
-  </template>
-</dom-module>
-
-<dom-module id="host-pairing-screen">
-  <link rel="stylesheet" href="oobe_screen_host_pairing.css">
-
-  <template>
-    <neon-animated-pages attr-for-selected="name" selected="[[C.page]]"
-        entry-animation="fade-in-animation" exit-animation="fade-out-animation">
-      <host-pairing-page name="welcome">
-        <div slot="title" i18n-content="loginHostPairingScreenWelcomeTitle">
-        </div>
-        <div i18n-content="loginHostPairingScreenWelcomeText"></div>
-      </host-pairing-page>
-      <host-pairing-page name="initialization-error">
-        <div slot="title"
-            i18n-content="loginHostPairingScreenInitializationErrorTitle">
-        </div>
-        <div i18n-content="loginHostPairingScreenErrorNeedRestartText"></div>
-      </host-pairing-page>
-      <host-pairing-page name="code-confirmation">
-        <div slot="title"
-            i18n-content="loginHostPairingScreenConfirmationTitle">
-        </div>
-        <div id="code">{{C.code}}</div>
-      </host-pairing-page>
-      <host-pairing-page name="connection-error">
-        <div slot="title"
-            i18n-content="loginHostPairingScreenConnectionErrorTitle">
-        </div>
-        <div i18n-content="loginHostPairingScreenErrorNeedRestartText"></div>
-      </host-pairing-page>
-      <host-pairing-page name="setup-basic-configuration">
-        <div slot="title"
-            i18n-content="loginHostPairingScreenSetupBasicConfigTitle">
-        </div>
-      </host-pairing-page>
-      <host-pairing-page name="setup-network-error">
-        <div slot="title"
-            i18n-content="loginHostPairingScreenSetupNetworkErrorTitle">
-        </div>
-        <div i18n-content="loginHostPairingScreenErrorNeedRestartText"></div>
-      </host-pairing-page>
-      <host-pairing-page name="update">
-        <div slot="title" i18n-content="loginHostPairingScreenUpdatingTitle">
-        </div>
-      </host-pairing-page>
-      <host-pairing-page name="enrollment-introduction">
-        <div slot="title" i18n-content="loginHostPairingScreenEnrollTitle">
-        </div>
-      </host-pairing-page>
-      <host-pairing-page name="enrollment">
-        <div slot="title">
-          <!-- 'enrollmentTitle' contains <strong> tag. We need to wrap it in
-               'html-echo' to prevent HTML escaping. -->
-          <html-echo content="[[getEnrollmentStepTitle_(C.enrollmentDomain)]]">
-          </html-echo>
-        </div>
-      </host-pairing-page>
-      <host-pairing-page name="enrollment-error">
-        <div slot="title"
-            i18n-content="loginHostPairingScreenEnrollmentErrorTitle">
-        </div>
-        <div>[[C.enrollmentError]]</div>
-        <div i18n-content="loginHostPairingScreenErrorNeedRestartText"></div>
-      </host-pairing-page>
-      <host-pairing-page name="pairing-done">
-        <div slot="title" i18n-content="loginHostPairingScreenDoneTitle">
-        </div>
-        <div i18n-content="loginHostPairingScreenDoneText"></div>
-      </host-pairing-page>
-    </neon-animated-pages>
-    <paper-icon-item id="device-indicator">
-      <iron-icon icon="cr:bluetooth"></iron-icon>
-      <div id="device-label">{{C.deviceName}}</div>
-    </paper-icon-item>
-    <div id="illustration"></div>
-  </template>
-</dom-module>
diff --git a/chrome/browser/resources/chromeos/login/host-pairing-screen.js b/chrome/browser/resources/chromeos/login/host-pairing-screen.js
deleted file mode 100644
index e186606..0000000
--- a/chrome/browser/resources/chromeos/login/host-pairing-screen.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2014 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.
-
-Polymer({
-  is: 'host-pairing-page',
-
-  behaviors: [Polymer.NeonAnimatableBehavior]
-});
-
-Polymer((function() {
-  'use strict';
-
-  /** @const */ var CALLBACK_CONTEXT_READY = 'contextReady';
-
-  return {
-    is: 'host-pairing-screen',
-
-    behaviors: [login.OobeScreenBehavior],
-
-    onBeforeShow: function() {
-      Oobe.getInstance().headerHidden = true;
-    },
-
-    /** @override */
-    initialize: function() {
-      ['code', 'deviceName', 'enrollmentDomain', 'page', 'enrollmentError']
-          .forEach(this.registerBoundContextField, this);
-      this.send(CALLBACK_CONTEXT_READY);
-    },
-
-    i18n: function(args) {
-      return loadTimeData.getStringF.apply(loadTimeData, args);
-    },
-
-    getEnrollmentStepTitle_: function(enrollmentDomain) {
-      return this.i18n(
-          ['loginHostPairingScreenEnrollingTitle', enrollmentDomain]);
-    }
-  };
-})());
diff --git a/chrome/browser/resources/chromeos/login/oobe.js b/chrome/browser/resources/chromeos/login/oobe.js
index 65296c9..fa2fa3c 100644
--- a/chrome/browser/resources/chromeos/login/oobe.js
+++ b/chrome/browser/resources/chromeos/login/oobe.js
@@ -10,13 +10,11 @@
 // <include src="md_login_shared.js">
 // <include src="login_non_lock_shared.js">
 // <include src="oobe_screen_auto_enrollment_check.js">
-// <include src="oobe_screen_controller_pairing.js">
 // <include src="oobe_screen_demo_setup.js">
 // <include src="oobe_screen_demo_preferences.js">
 // <include src="oobe_screen_enable_debugging.js">
 // <include src="oobe_screen_eula.js">
 // <include src="oobe_screen_hid_detection.js">
-// <include src="oobe_screen_host_pairing.js">
 // <include src="oobe_screen_network.js">
 // <include src="oobe_screen_update.js">
 // <include src="oobe_screen_welcome.js">
@@ -60,8 +58,6 @@
       login.ArcKioskSplashScreen.register();
       login.ConfirmPasswordScreen.register();
       login.FatalErrorScreen.register();
-      login.ControllerPairingScreen.register();
-      login.HostPairingScreen.register();
       login.DeviceDisabledScreen.register();
       login.ActiveDirectoryPasswordChangeScreen.register(/* lazyInit= */ true);
       login.VoiceInteractionValuePropScreen.register();
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.css b/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.css
deleted file mode 100644
index 27e35c7..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.css
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2014 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. */
-
-/* TODO(dzhioev): support RTL. http://crbug.com/423354 */
-/* TODO(xdai): Remove the hard-coded font-family for 'Roboto'. */
-
-:host {
-  background: white;
-  display: block;
-  font-family: 'Roboto';
-  height: 600px;
-  position: relative;
-  user-select: none;
-  width: 720px;
-}
-
-controller-pairing-page[name='device-select']::shadow #top,
-controller-pairing-page[name='establishing-connection']::shadow #top {
-  height: 200px;
-}
-
-controller-pairing-page[name='code-confirmation']::shadow #top,
-controller-pairing-page[name='host-update']::shadow #top,
-controller-pairing-page[name='host-connection-lost']::shadow #top,
-controller-pairing-page[name='enrollment-introduction']::shadow #top {
-  height: 300px;
-}
-
-controller-pairing-page[name='authentication']::shadow #top {
-  height: 100px;
-}
-
-paper-progress {
-  --paper-progress-active-color: var(--google-green-500);
-  --paper-progress-container-color: var(--google-green-100);
-  margin-bottom: 28px;
-  margin-top: 28px;
-  width: 100%;
-}
-
-#code {
-  color: #757575;
-  font-size: 55px;
-  font-weight: 300;
-}
-
-pairing-device-list {
-  height: 252px;
-}
-
-strong {
-  font-weight: 500;
-}
-
-controller-pairing-page [slot='buttons'] :last-child,
-controller-pairing-page [slot='help'] :last-child {
-  margin-right: -0.5em;
-}
-
-controller-pairing-page [slot='buttons'] :not(:last-child),
-controller-pairing-page [slot='help'] :not(:last-child) {
-  margin-right: 1em;
-}
-
-controller-pairing-page.split [slot='buttons'] :last-child,
-controller-pairing-page.split [slot='help'] :last-child {
-  color: var(--google-green-500);
-}
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.html b/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.html
deleted file mode 100644
index 4f02eb8..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<div class="step hidden no-logo" id="controller-pairing" hidden>
-  <controller-pairing-screen name="ControllerPairingScreen">
-  </controller-pairing-screen>
-</div>
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.js b/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.js
deleted file mode 100644
index cc50c3c..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_controller_pairing.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2014 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.
-
-/**
- * @fileoverview controller pairing screen implementation.
- */
-
-login.createScreen('ControllerPairingScreen', 'controller-pairing', function() {
-  return {
-    decorate: function() {
-      this.children[0].decorate(this);
-    }
-  };
-});
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.css b/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.css
deleted file mode 100644
index 86bde11..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.css
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2014 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. */
-
-/* TODO(dzhioev): support RTL. http://crbug.com/423354 */
-
-:host {
-  background-color: var(--google-yellow-500);
-  color: white;
-  display: block;
-  font-family: 'Roboto';
-  font-weight: 300;
-  height: 100%;
-  user-select: none;
-}
-
-neon-animated-pages {
-  left: 114px;
-  position: absolute;
-  right: 0;
-  top: 100px;
-}
-
-#illustration {
-  background-image: url(chrome://theme/IDR_BUILDINGS_ILLUSTRATION);
-  bottom: 95px;
-  height: 368px;
-  position: absolute;
-  right: 95px;
-  width: 503px;
-}
-
-#device-indicator {
-  bottom: 74px;
-  font-size: 33px;
-  font-weight: bolder;
-  left: 50px;
-  position: absolute;
-}
-
-#device-label {
-  margin-left: 0.4em;
-}
-
-#code {
-  font-family: 'Roboto';
-  font-size: 120px;
-  font-weight: lighter;
-}
-
-iron-icon {
-  height: 48px;
-  width: 48px;
-}
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.html b/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.html
deleted file mode 100644
index 0bee2ba7..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="step hidden no-logo fullscreen" id="host-pairing" hidden>
-  <host-pairing-screen name="HostPairingScreen"></host-pairing-screen>
-</div>
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.js b/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.js
deleted file mode 100644
index 9b62a88..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2014 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.
-
-/**
- * @fileoverview host pairing screen implementation.
- */
-
-login.createScreen('HostPairingScreen', 'host-pairing', function() {
-  /**
-   * We can't pass Polymer screen directly to login.createScreen, because it
-   * changes object's prototype chain.
-   */
-  return {
-    polymerScreen_: null,
-
-    decorate: function() {
-      polymerScreen_ = this.children[0];
-      polymerScreen_.decorate(this);
-    },
-
-    onBeforeShow: function() {
-      polymerScreen_.onBeforeShow();
-    }
-  };
-});
diff --git a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing_page.css b/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing_page.css
deleted file mode 100644
index b0b2270..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_screen_host_pairing_page.css
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2014 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. */
-
-:host {
-  display: block;
-}
-
-#title {
-  border-bottom: 2px solid rgba(255, 255, 255, 0.2);
-  font-size: 45px;
-  padding-bottom: 18px;
-}
-
-#content {
-  font-size: 32px;
-  padding-top: 25px;
-}
-
diff --git a/chrome/browser/resources/chromeos/login/oobe_screens.html b/chrome/browser/resources/chromeos/login/oobe_screens.html
index 0a22569..d54e4a0 100644
--- a/chrome/browser/resources/chromeos/login/oobe_screens.html
+++ b/chrome/browser/resources/chromeos/login/oobe_screens.html
@@ -7,8 +7,6 @@
 <include src="oobe_screen_enable_kiosk.html">
 <include src="oobe_screen_terms_of_service.html">
 <include src="oobe_screen_update.html">
-<include src="oobe_screen_controller_pairing.html">
-<include src="oobe_screen_host_pairing.html">
 <include src="oobe_screen_auto_enrollment_check.html">
 <include src="oobe_screen_user_image.html">
 <include src="oobe_screen_hid_detection.html">
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome.html b/chrome/browser/resources/chromeos/login/oobe_welcome.html
index eef5672..6c65e6b 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome.html
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome.html
@@ -266,17 +266,6 @@
       <div slot="footer" class="layout vertical">
         <div class="flex layout vertical center-justified
             advanced-options-entry">
-          <button on-tap="onEEBootstrappingClicked_" class="focus-on-show">
-            <div class="advanced-option-title">
-              [[i18nDynamic(locale, 'advancedOptionsEEBootstrappingTitle')]]
-            </div>
-            <div class="advanced-option-subtitle">
-              [[i18nDynamic(locale, 'advancedOptionsEEBootstrappingSubtitle')]]
-            </div>
-          </button>
-        </div>
-        <div class="flex layout vertical center-justified
-            advanced-options-entry">
           <button on-tap="onCFMBootstrappingClicked_">
             <div class="advanced-option-title">
               [[i18nDynamic(locale, 'advancedOptionsCFMSetupTitle')]]
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome.js b/chrome/browser/resources/chromeos/login/oobe_welcome.js
index 9a7caaf..8304980 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome.js
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome.js
@@ -417,15 +417,6 @@
   },
 
   /**
-   * Handle click on "Enable remote enrollment" option.
-   *
-   * @private
-   */
-  onEEBootstrappingClicked_: function() {
-    cr.ui.Oobe.handleAccelerator(ACCELERATOR_BOOTSTRAPPING_SLAVE);
-  },
-
-  /**
    * Handle click on "Set up as CFM device" option.
    *
    * @private
diff --git a/chrome/browser/resources/chromeos/login/pairing_device_list.css b/chrome/browser/resources/chromeos/login/pairing_device_list.css
deleted file mode 100644
index 16088ec..0000000
--- a/chrome/browser/resources/chromeos/login/pairing_device_list.css
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright 2014 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. */
-
-/* TODO(dzhioev): support RTL. http://crbug.com/423354 */
-
-:host {
-  display: block;
-  overflow: auto;
-}
-
-core-selector {
-  display: block;
-}
-
-:host([connecting]) {
-  pointer-events: none;
-}
-
-paper-icon-item {
-  padding-bottom: 18px;
-  padding-top: 18px;
-}
-
-/* Items separator. */
-paper-icon-item:not(:last-of-type)::after {
-  background-color: rgba(0, 0, 0, 0.1);
-  bottom: 0;
-  content: '';
-  display: block;
-  height: 1px;
-  left: calc(40px + 1em);
-  position: absolute;
-  right: 0;
-}
-
-iron-icon {
-  height: 40px;
-  margin-right: 1em;
-  width: 40px;
-}
-
-.throbber {
-  display: none;
-}
-
-.iron-selected {
-  font-weight: bold;
-}
-
-:host([connecting]) .iron-selected .throbber {
-  background: url(chrome://resources/images/throbber_small.svg) no-repeat;
-  background-size: cover;
-  display: inline-block;
-  height: 25px;
-  margin-right: 10px;
-  width: 25px;
-}
-
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 133ed9e..f4bd3af 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1535,8 +1535,6 @@
       "webui/chromeos/login/base_screen_handler.h",
       "webui/chromeos/login/base_webui_handler.cc",
       "webui/chromeos/login/base_webui_handler.h",
-      "webui/chromeos/login/controller_pairing_screen_handler.cc",
-      "webui/chromeos/login/controller_pairing_screen_handler.h",
       "webui/chromeos/login/core_oobe_handler.cc",
       "webui/chromeos/login/core_oobe_handler.h",
       "webui/chromeos/login/demo_preferences_screen_handler.cc",
@@ -1582,8 +1580,6 @@
       "webui/chromeos/login/gaia_screen_handler.h",
       "webui/chromeos/login/hid_detection_screen_handler.cc",
       "webui/chromeos/login/hid_detection_screen_handler.h",
-      "webui/chromeos/login/host_pairing_screen_handler.cc",
-      "webui/chromeos/login/host_pairing_screen_handler.h",
       "webui/chromeos/login/kiosk_app_menu_handler.cc",
       "webui/chromeos/login/kiosk_app_menu_handler.h",
       "webui/chromeos/login/kiosk_autolaunch_screen_handler.cc",
diff --git a/chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.cc
deleted file mode 100644
index 25e7e0c..0000000
--- a/chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.cc
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h"
-
-#include "base/command_line.h"
-#include "base/strings/string_util.h"
-#include "chrome/browser/chromeos/login/oobe_screen.h"
-#include "chrome/grit/generated_resources.h"
-#include "chromeos/chromeos_switches.h"
-#include "components/login/localized_values_builder.h"
-#include "content/public/browser/web_contents.h"
-
-namespace chromeos {
-
-namespace {
-
-const char kJsScreenPath[] = "login.ControllerPairingScreen";
-
-const char kMethodContextChanged[] = "contextChanged";
-
-const char kCallbackUserActed[] = "userActed";
-const char kCallbackContextChanged[] = "contextChanged";
-
-bool IsBootstrappingMaster() {
-  return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      chromeos::switches::kOobeBootstrappingMaster);
-}
-
-}  // namespace
-
-ControllerPairingScreenHandler::ControllerPairingScreenHandler()
-    : BaseScreenHandler(kScreenId) {
-  set_call_js_prefix(kJsScreenPath);
-}
-
-ControllerPairingScreenHandler::~ControllerPairingScreenHandler() {
-  if (delegate_)
-    delegate_->OnViewDestroyed(this);
-}
-
-void ControllerPairingScreenHandler::HandleUserActed(
-    const std::string& action) {
-  if (!delegate_)
-    return;
-  delegate_->OnUserActed(action);
-}
-
-void ControllerPairingScreenHandler::HandleContextChanged(
-    const base::DictionaryValue* diff) {
-  if (!delegate_)
-    return;
-  delegate_->OnScreenContextChanged(*diff);
-}
-
-void ControllerPairingScreenHandler::Initialize() {
-  if (!page_is_ready() || !delegate_)
-    return;
-
-  if (show_on_init_) {
-    Show();
-    show_on_init_ = false;
-  }
-}
-
-void ControllerPairingScreenHandler::DeclareLocalizedValues(
-    ::login::LocalizedValuesBuilder* builder) {
-  // TODO(dzhioev): Move the prefix logic to the base screen handler after
-  // migration.
-  std::string prefix;
-  base::RemoveChars(kJsScreenPath, ".", &prefix);
-
-  // TODO(xdai): Remove unnecessary strings.
-  builder->Add(prefix + "WelcomeTitle", IDS_PAIRING_CONTROLLER_WELCOME);
-  builder->Add(prefix + "Searching", IDS_PAIRING_CONTROLLER_SEARCHING);
-  builder->Add(prefix + "HelpBtn", IDS_PAIRING_NEED_HELP);
-  builder->Add(prefix + "TroubleConnectingTitle",
-               IDS_PAIRING_CONTROLLER_TROUBLE_CONNECTING);
-  builder->Add(prefix + "ConnectingAdvice",
-               IDS_PAIRING_CONTROLLER_CONNECTING_ADVICE);
-  builder->Add(prefix + "AdviceGotItBtn", IDS_PAIRING_CONTROLLER_ADVICE_GOT_IT);
-  builder->Add(prefix + "SelectTitle", IDS_PAIRING_CONTROLLER_SELECT_TITLE);
-  builder->Add(prefix + "ConnectBtn", IDS_PAIRING_CONTROLLER_CONNECT);
-  builder->Add(prefix + "Connecting", IDS_PAIRING_CONTROLLER_CONNECTING);
-  builder->Add(prefix + "ConfirmationTitle",
-               IDS_PAIRING_CONTROLLER_CONFIRMATION_TITLE);
-  builder->Add(prefix + "ConfirmationQuestion",
-               IDS_PAIRING_CONTROLLER_CONFIRMATION_QUESTION);
-  builder->Add(prefix + "RejectCodeBtn", IDS_PAIRING_CONTROLLER_REJECT_CODE);
-  builder->Add(prefix + "AcceptCodeBtn", IDS_PAIRING_CONTROLLER_ACCEPT_CODE);
-  builder->Add(prefix + "UpdateTitle", IDS_PAIRING_CONTROLLER_UPDATE_TITLE);
-  builder->Add(prefix + "UpdateText", IDS_PAIRING_CONTROLLER_UPDATE_TEXT);
-  builder->Add(prefix + "ConnectionLostTitle",
-               IDS_PAIRING_CONTROLLER_CONNECTION_LOST_TITLE);
-  builder->Add(prefix + "ConnectionLostText",
-               IDS_PAIRING_CONTROLLER_CONNECTION_LOST_TEXT);
-  builder->Add(prefix + "HostNetworkErrorTitle",
-               IDS_PAIRING_CONTROLLER_HOST_NETWORK_ERROR_TITLE);
-  builder->Add(prefix + "EnrollTitle", IDS_PAIRING_CONTROLLER_ENROLL_TITLE);
-  builder->Add(prefix + "EnrollText1", IDS_PAIRING_CONTROLLER_ENROLL_TEXT_1);
-  builder->Add(prefix + "EnrollText2", IDS_PAIRING_CONTROLLER_ENROLL_TEXT_2);
-  builder->Add(prefix + "ContinueBtn", IDS_PAIRING_CONTROLLER_CONTINUE);
-  builder->Add(prefix + "EnrollmentInProgress",
-               IDS_PAIRING_CONTROLLER_ENROLLMENT_IN_PROGRESS);
-  builder->Add(prefix + "EnrollmentErrorTitle",
-               IDS_PAIRING_ENROLLMENT_ERROR_TITLE);
-  builder->Add(prefix + "EnrollmentErrorHostRestarts",
-               IDS_PAIRING_CONTROLLER_ENROLLMENT_ERROR_HOST_RESTARTS);
-  builder->Add(prefix + "SuccessTitle", IDS_PAIRING_CONTROLLER_SUCCESS_TITLE);
-  builder->Add(prefix + "SuccessText", IDS_PAIRING_CONTROLLER_SUCCESS_TEXT);
-  builder->Add(prefix + "ContinueToHangoutsBtn",
-               IDS_PAIRING_CONTROLLER_CONTINUE_TO_HANGOUTS);
-
-  if (IsBootstrappingMaster()) {
-    // These strings are only for testing/demo purpose, so they are not put into
-    // grd file for translation.
-    builder->Add(prefix + "WelcomeTitle",
-                 "Welcome to the bootstrapping process");
-    builder->Add(prefix + "Searching",
-                 "Searching for nearby Chrome OS devices...");
-    builder->Add(prefix + "ConnectingAdvice",
-                 "Please make sure that your Chrome OS device is turned on.");
-    builder->Add(prefix + "SelectTitle", "Select a Chrome OS device to set up");
-    builder->Add(prefix + "ConfirmationTitle", "Initialize the connection");
-    builder->Add(prefix + "ConfirmationQuestion",
-                 "Does this code appear on your Chrome OS device\'s screen?");
-    builder->Add(prefix + "UpdateTitle", "Updating...");
-    builder->Add(prefix + "UpdateText",
-                 "In order to bring you the latest features, your Chrome OS "
-                 "device needs to update.");
-    builder->Add(prefix + "ConnectionLostTitle",
-                 "Connection to Chrome OS device lost");
-    builder->Add(prefix + "ConnectionLostText",
-                 " Lost connection to your Chrome OS device. Please move "
-                 "closer, or check your device and try again.");
-    builder->Add(prefix + "HostNetworkErrorTitle",
-                 "Failed to set up your Chrome OS device\'s network");
-  }
-}
-
-void ControllerPairingScreenHandler::RegisterMessages() {
-  AddPrefixedCallback(kCallbackUserActed,
-                      &ControllerPairingScreenHandler::HandleUserActed);
-  AddPrefixedCallback(kCallbackContextChanged,
-                      &ControllerPairingScreenHandler::HandleContextChanged);
-}
-
-void ControllerPairingScreenHandler::Show() {
-  if (!page_is_ready()) {
-    show_on_init_ = true;
-    return;
-  }
-  ShowScreen(kScreenId);
-}
-
-void ControllerPairingScreenHandler::Hide() {
-}
-
-void ControllerPairingScreenHandler::SetDelegate(Delegate* delegate) {
-  delegate_ = delegate;
-  if (page_is_ready())
-    Initialize();
-}
-
-void ControllerPairingScreenHandler::OnContextChanged(
-    const base::DictionaryValue& diff) {
-  CallJSWithPrefix(kMethodContextChanged, diff);
-}
-
-content::BrowserContext* ControllerPairingScreenHandler::GetBrowserContext() {
-  return web_ui()->GetWebContents()->GetBrowserContext();
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h
deleted file mode 100644
index fd0c90d..0000000
--- a/chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_CONTROLLER_PAIRING_SCREEN_HANDLER_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_CONTROLLER_PAIRING_SCREEN_HANDLER_H_
-
-#include "base/macros.h"
-#include "chrome/browser/chromeos/login/screens/controller_pairing_screen_view.h"
-#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
-
-namespace chromeos {
-
-class ControllerPairingScreenHandler : public ControllerPairingScreenView,
-                                       public BaseScreenHandler {
- public:
-  ControllerPairingScreenHandler();
-  ~ControllerPairingScreenHandler() override;
-
- private:
-  void HandleUserActed(const std::string& action);
-  void HandleContextChanged(const base::DictionaryValue* diff);
-
-  // Overridden from BaseScreenHandler:
-  void Initialize() override;
-  void DeclareLocalizedValues(
-      ::login::LocalizedValuesBuilder* builder) override;
-
-  // Overridden from content::WebUIMessageHandler:
-  void RegisterMessages() override;
-
-  // Overridden from ControllerPairingScreenActor:
-  void Show() override;
-  void Hide() override;
-  void SetDelegate(Delegate* delegate) override;
-  void OnContextChanged(const base::DictionaryValue& diff) override;
-  content::BrowserContext* GetBrowserContext() override;
-
-  ControllerPairingScreenView::Delegate* delegate_ = nullptr;
-  bool show_on_init_ = false;
-
-  DISALLOW_COPY_AND_ASSIGN(ControllerPairingScreenHandler);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_CONTROLLER_PAIRING_SCREEN_HANDLER_H_
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
index e212d0c..c5c7e2e 100644
--- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -219,8 +219,6 @@
               &CoreOobeHandler::HandleEnableDebuggingScreen);
   AddCallback("headerBarVisible", &CoreOobeHandler::HandleHeaderBarVisible);
   AddCallback("raiseTabKeyEvent", &CoreOobeHandler::HandleRaiseTabKeyEvent);
-  AddCallback("setOobeBootstrappingSlave",
-              &CoreOobeHandler::HandleSetOobeBootstrappingSlave);
   // Note: Used by enterprise_RemoraRequisitionDisplayUsage.py:
   // TODO(felixe): Use chrome.system.display or cros_display_config.mojom,
   // https://crbug.com/858958.
@@ -643,16 +641,6 @@
   SendEventToSink(&event);
 }
 
-void CoreOobeHandler::HandleSetOobeBootstrappingSlave() {
-  const bool is_slave = g_browser_process->local_state()->GetBoolean(
-      prefs::kIsBootstrappingSlave);
-  if (is_slave)
-    return;
-  g_browser_process->local_state()->SetBoolean(prefs::kIsBootstrappingSlave,
-                                               true);
-  chrome::AttemptRestart();
-}
-
 void CoreOobeHandler::HandleGetPrimaryDisplayNameForTesting(
     const base::ListValue* args) {
   CHECK_EQ(1U, args->GetSize());
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
index 6d42c86..980d633 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -219,7 +219,7 @@
 // EnrollmentScreenHandler
 //      EnrollmentScreenActor implementation -----------------------------------
 
-void EnrollmentScreenHandler::SetParameters(
+void EnrollmentScreenHandler::SetEnrollmentConfig(
     Controller* controller,
     const policy::EnrollmentConfig& config) {
   CHECK(config.should_enroll());
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
index 72b47a2..63f9ccf 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
@@ -66,8 +66,8 @@
   void RegisterMessages() override;
 
   // Implements EnrollmentScreenView:
-  void SetParameters(Controller* controller,
-                     const policy::EnrollmentConfig& config) override;
+  void SetEnrollmentConfig(Controller* controller,
+                           const policy::EnrollmentConfig& config) override;
   void Show() override;
   void Hide() override;
   void ShowSigninScreen() override;
diff --git a/chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.cc
deleted file mode 100644
index 5fa2cbb..0000000
--- a/chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.cc
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h"
-
-#include "base/command_line.h"
-#include "base/strings/string_util.h"
-#include "chrome/browser/chromeos/login/oobe_screen.h"
-#include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
-#include "chrome/grit/generated_resources.h"
-#include "chromeos/chromeos_switches.h"
-#include "components/login/localized_values_builder.h"
-#include "components/policy/core/browser/cloud/message_util.h"
-#include "google_apis/gaia/google_service_auth_error.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace chromeos {
-
-namespace {
-
-const char kJsScreenPath[] = "login.HostPairingScreen";
-
-const char kMethodContextChanged[] = "contextChanged";
-
-// Sent from JS when screen is ready to receive context updates.
-// TODO(dzhioev): Move 'contextReady' logic to the base screen handler when
-// all screens migrate to context-based communications.
-const char kCallbackContextReady[] = "contextReady";
-
-}  // namespace
-
-HostPairingScreenHandler::HostPairingScreenHandler()
-    : BaseScreenHandler(kScreenId) {
-  set_call_js_prefix(kJsScreenPath);
-}
-
-HostPairingScreenHandler::~HostPairingScreenHandler() {
-  if (delegate_)
-    delegate_->OnViewDestroyed(this);
-}
-
-void HostPairingScreenHandler::HandleContextReady() {
-  js_context_ready_ = true;
-  OnContextChanged(context_cache_.storage());
-}
-
-void HostPairingScreenHandler::Initialize() {
-  if (!page_is_ready() || !delegate_)
-    return;
-
-  if (show_on_init_) {
-    Show();
-    show_on_init_ = false;
-  }
-}
-
-void HostPairingScreenHandler::DeclareLocalizedValues(
-    ::login::LocalizedValuesBuilder* builder) {
-  // TODO(dzhioev): Move the prefix logic to the base screen handler after
-  // migration.
-  std::string prefix;
-  base::RemoveChars(kJsScreenPath, ".", &prefix);
-
-  // TODO(xdai): Clean up all unrelated strings and rename others if necessary.
-  builder->Add(prefix + "WelcomeTitle", IDS_PAIRING_HOST_WELCOME_TITLE);
-  builder->Add(prefix + "WelcomeText", IDS_PAIRING_HOST_WELCOME_TEXT);
-  builder->Add(prefix + "ConfirmationTitle", IDS_SLAVE_CONFIRMATION_TITLE);
-  builder->Add(prefix + "UpdatingTitle", IDS_PAIRING_HOST_UPDATING_TITLE);
-  builder->Add(prefix + "UpdatingText", IDS_PAIRING_HOST_UPDATING_TEXT);
-  builder->Add(prefix + "EnrollTitle", IDS_SLAVE_ENROLL_TITLE);
-  builder->Add(prefix + "EnrollingTitle", IDS_SLAVE_ENROLLMENT_IN_PROGRESS);
-  builder->Add(prefix + "DoneTitle", IDS_PAIRING_HOST_DONE_TITLE);
-  builder->Add(prefix + "DoneText", IDS_PAIRING_HOST_DONE_TEXT);
-  builder->Add(prefix + "EnrollmentErrorTitle",
-               IDS_SLAVE_ENROLLMENT_ERROR_TITLE);
-  builder->Add(prefix + "ErrorNeedsRestart",
-               IDS_PAIRING_HOST_ERROR_NEED_RESTART_TEXT);
-  builder->Add(prefix + "SetupBasicConfigTitle",
-               IDS_HOST_SETUP_BASIC_CONFIGURATION_TITLE);
-  builder->Add(prefix + "SetupNetworkErrorTitle",
-               IDS_HOST_SETUP_NETWORK_ERROR_TITLE);
-  builder->Add(prefix + "InitializationErrorTitle",
-               IDS_PAIRING_HOST_INITIALIZATION_ERROR_TITLE);
-  builder->Add(prefix + "ConnectionErrorTitle",
-               IDS_PAIRING_HOST_CONNECTION_ERROR_TITLE);
-  builder->Add(prefix + "ErrorNeedRestartText",
-               IDS_PAIRING_HOST_ERROR_NEED_RESTART_TEXT);
-  builder->Add(prefix + "ErrorNeedsRestart",
-               IDS_PAIRING_HOST_ERROR_NEED_RESTART_TEXT);
-}
-
-void HostPairingScreenHandler::RegisterMessages() {
-  AddPrefixedCallback(kCallbackContextReady,
-                      &HostPairingScreenHandler::HandleContextReady);
-}
-
-void HostPairingScreenHandler::Show() {
-  if (!page_is_ready()) {
-    show_on_init_ = true;
-    return;
-  }
-  ShowScreen(kScreenId);
-}
-
-void HostPairingScreenHandler::Hide() {
-}
-
-void HostPairingScreenHandler::SetDelegate(Delegate* delegate) {
-  delegate_ = delegate;
-  if (page_is_ready())
-    Initialize();
-}
-
-void HostPairingScreenHandler::OnContextChanged(
-    const base::DictionaryValue& diff) {
-  if (!js_context_ready_) {
-    context_cache_.ApplyChanges(diff, NULL);
-    return;
-  }
-  CallJSWithPrefix(kMethodContextChanged, diff);
-}
-
-std::string HostPairingScreenHandler::GetErrorStringFromAuthError(
-    const GoogleServiceAuthError& error) {
-  switch (error.state()) {
-    case GoogleServiceAuthError::NONE:
-    case GoogleServiceAuthError::CAPTCHA_REQUIRED:
-    case GoogleServiceAuthError::TWO_FACTOR:
-    case GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS:
-    case GoogleServiceAuthError::REQUEST_CANCELED:
-    case GoogleServiceAuthError::UNEXPECTED_SERVICE_RESPONSE:
-    case GoogleServiceAuthError::SERVICE_ERROR:
-    case GoogleServiceAuthError::WEB_LOGIN_REQUIRED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_AUTH_FATAL_ERROR);
-    case GoogleServiceAuthError::USER_NOT_SIGNED_UP:
-    case GoogleServiceAuthError::ACCOUNT_DELETED:
-    case GoogleServiceAuthError::ACCOUNT_DISABLED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_AUTH_ACCOUNT_ERROR);
-    case GoogleServiceAuthError::CONNECTION_FAILED:
-    case GoogleServiceAuthError::SERVICE_UNAVAILABLE:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_AUTH_NETWORK_ERROR);
-    default:
-      return std::string();
-  }
-}
-
-std::string HostPairingScreenHandler::GetErrorStringFromEnrollmentError(
-    policy::EnrollmentStatus status) {
-  switch (status.status()) {
-    case policy::EnrollmentStatus::NO_STATE_KEYS:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_NO_STATE_KEYS);
-    case policy::EnrollmentStatus::REGISTRATION_FAILED:
-      switch (status.client_status()) {
-        case policy::DM_STATUS_SERVICE_MANAGEMENT_NOT_SUPPORTED:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_ACCOUNT_ERROR);
-        case policy::DM_STATUS_SERVICE_MISSING_LICENSES:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_MISSING_LICENSES_ERROR);
-        case policy::DM_STATUS_SERVICE_DEPROVISIONED:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_DEPROVISIONED_ERROR);
-        case policy::DM_STATUS_SERVICE_DOMAIN_MISMATCH:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_DOMAIN_MISMATCH_ERROR);
-        case policy::DM_STATUS_SERVICE_CONSUMER_ACCOUNT_WITH_PACKAGED_LICENSE:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_CONSUMER_ACCOUNT_WITH_PACKAGED_LICENSE);
-        default:
-          return l10n_util::GetStringFUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_STATUS_REGISTRATION_FAILED,
-              policy::FormatDeviceManagementStatus(status.client_status()));
-      }
-    case policy::EnrollmentStatus::ROBOT_AUTH_FETCH_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_ROBOT_AUTH_FETCH_FAILED);
-    case policy::EnrollmentStatus::ROBOT_REFRESH_FETCH_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_ROBOT_REFRESH_FETCH_FAILED);
-    case policy::EnrollmentStatus::ROBOT_REFRESH_STORE_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_ROBOT_REFRESH_STORE_FAILED);
-    case policy::EnrollmentStatus::REGISTRATION_BAD_MODE:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_REGISTRATION_BAD_MODE);
-    case policy::EnrollmentStatus::REGISTRATION_CERT_FETCH_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_REGISTRATION_CERT_FETCH_FAILED);
-    case policy::EnrollmentStatus::POLICY_FETCH_FAILED:
-      return l10n_util::GetStringFUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_POLICY_FETCH_FAILED,
-          policy::FormatDeviceManagementStatus(status.client_status()));
-    case policy::EnrollmentStatus::VALIDATION_FAILED:
-      return l10n_util::GetStringFUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_VALIDATION_FAILED,
-          policy::FormatValidationStatus(status.validation_status()));
-    case policy::EnrollmentStatus::LOCK_ERROR:
-      switch (status.lock_status()) {
-        case InstallAttributes::LOCK_TIMEOUT:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_STATUS_LOCK_TIMEOUT);
-        case InstallAttributes::LOCK_BACKEND_INVALID:
-        case InstallAttributes::LOCK_ALREADY_LOCKED:
-        case InstallAttributes::LOCK_SET_ERROR:
-        case InstallAttributes::LOCK_FINALIZE_ERROR:
-        case InstallAttributes::LOCK_READBACK_ERROR:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_STATUS_LOCK_ERROR);
-        case InstallAttributes::LOCK_WRONG_DOMAIN:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_STATUS_LOCK_WRONG_USER);
-        case InstallAttributes::LOCK_WRONG_MODE:
-          return l10n_util::GetStringUTF8(
-              IDS_ENTERPRISE_ENROLLMENT_STATUS_LOCK_WRONG_MODE);
-        default:
-          return std::string();
-      }
-    case policy::EnrollmentStatus::STORE_ERROR:
-      return l10n_util::GetStringFUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_STORE_ERROR,
-          policy::FormatStoreStatus(status.store_status(),
-                                    status.validation_status()));
-    case policy::EnrollmentStatus::ATTRIBUTE_UPDATE_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_ATTRIBUTE_ERROR);
-    case policy::EnrollmentStatus::NO_MACHINE_IDENTIFICATION:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_NO_MACHINE_IDENTIFICATION);
-    case policy::EnrollmentStatus::ACTIVE_DIRECTORY_POLICY_FETCH_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_ERROR_ACTIVE_DIRECTORY_POLICY_FETCH);
-    case policy::EnrollmentStatus::DM_TOKEN_STORE_FAILED:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_ERROR_SAVE_DEVICE_CONFIGURATION);
-    default:
-      return std::string();
-  }
-}
-
-std::string HostPairingScreenHandler::GetErrorStringFromOtherError(
-    EnterpriseEnrollmentHelper::OtherError error) {
-  switch (error) {
-    case EnterpriseEnrollmentHelper::OTHER_ERROR_DOMAIN_MISMATCH:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_STATUS_LOCK_WRONG_USER);
-    case EnterpriseEnrollmentHelper::OTHER_ERROR_FATAL:
-      return l10n_util::GetStringUTF8(
-          IDS_ENTERPRISE_ENROLLMENT_FATAL_ENROLLMENT_ERROR);
-    default:
-      return std::string();
-  }
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h
deleted file mode 100644
index 9064f8d..0000000
--- a/chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_HOST_PAIRING_SCREEN_HANDLER_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_HOST_PAIRING_SCREEN_HANDLER_H_
-
-#include "base/macros.h"
-#include "chrome/browser/chromeos/login/screens/host_pairing_screen_view.h"
-#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
-#include "components/login/screens/screen_context.h"
-
-namespace chromeos {
-
-class HostPairingScreenHandler : public HostPairingScreenView,
-                                 public BaseScreenHandler {
- public:
-  HostPairingScreenHandler();
-  ~HostPairingScreenHandler() override;
-
- private:
-  void HandleContextReady();
-
-  // Overridden from BaseScreenHandler:
-  void Initialize() override;
-  void DeclareLocalizedValues(
-      ::login::LocalizedValuesBuilder* builder) override;
-
-  // Overridden from content::WebUIMessageHandler:
-  void RegisterMessages() override;
-
-  // Overridden from HostPairingScreenActor:
-  void Show() override;
-  void Hide() override;
-  void SetDelegate(Delegate* delegate) override;
-  void OnContextChanged(const base::DictionaryValue& diff) override;
-  std::string GetErrorStringFromAuthError(
-      const GoogleServiceAuthError& error) override;
-  std::string GetErrorStringFromEnrollmentError(
-      policy::EnrollmentStatus status) override;
-  std::string GetErrorStringFromOtherError(
-      EnterpriseEnrollmentHelper::OtherError error) override;
-
-  HostPairingScreenView::Delegate* delegate_ = nullptr;
-  bool show_on_init_ = false;
-  bool js_context_ready_ = false;
-
-  // Caches context changes while JS part is not ready to receive messages.
-  ::login::ScreenContext context_cache_;
-
-  DISALLOW_COPY_AND_ASSIGN(HostPairingScreenHandler);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_HOST_PAIRING_SCREEN_HANDLER_H_
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index 37dafd4..7ab9bd5 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -44,7 +44,6 @@
 #include "chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/auto_enrollment_check_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
-#include "chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.h"
@@ -57,7 +56,6 @@
 #include "chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h"
-#include "chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h"
@@ -414,12 +412,6 @@
 
   AddScreenHandler(std::make_unique<ArcKioskSplashScreenHandler>());
 
-  if (display_type_ == kOobeDisplay) {
-    AddScreenHandler(std::make_unique<ControllerPairingScreenHandler>());
-
-    AddScreenHandler(std::make_unique<HostPairingScreenHandler>());
-  }
-
   AddScreenHandler(std::make_unique<DeviceDisabledScreenHandler>());
 
   AddScreenHandler(std::make_unique<EncryptionMigrationScreenHandler>());
@@ -606,14 +598,6 @@
   return GetView<HIDDetectionScreenHandler>();
 }
 
-ControllerPairingScreenView* OobeUI::GetControllerPairingScreenView() {
-  return GetView<ControllerPairingScreenHandler>();
-}
-
-HostPairingScreenView* OobeUI::GetHostPairingScreenView() {
-  return GetView<HostPairingScreenHandler>();
-}
-
 DeviceDisabledScreenView* OobeUI::GetDeviceDisabledScreenView() {
   return GetView<DeviceDisabledScreenHandler>();
 }
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
index 75f91a5..3bc54541 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
@@ -37,7 +37,6 @@
 class AssistantOptInFlowScreenView;
 class AutoEnrollmentCheckScreenView;
 class BaseScreenHandler;
-class ControllerPairingScreenView;
 class CoreOobeView;
 class DemoPreferencesScreenView;
 class DemoSetupScreenView;
@@ -51,7 +50,6 @@
 class FingerprintSetupScreenView;
 class GaiaView;
 class HIDDetectionView;
-class HostPairingScreenView;
 class KioskAppMenuHandler;
 class KioskAutolaunchScreenView;
 class KioskEnableScreenView;
@@ -136,8 +134,6 @@
   AppLaunchSplashScreenView* GetAppLaunchSplashScreenView();
   ArcKioskSplashScreenView* GetArcKioskSplashScreenView();
   HIDDetectionView* GetHIDDetectionView();
-  ControllerPairingScreenView* GetControllerPairingScreenView();
-  HostPairingScreenView* GetHostPairingScreenView();
   DeviceDisabledScreenView* GetDeviceDisabledScreenView();
   EncryptionMigrationScreenView* GetEncryptionMigrationScreenView();
   VoiceInteractionValuePropScreenView* GetVoiceInteractionValuePropScreenView();
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
index 98e0177..860e7e4 100644
--- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
@@ -129,10 +129,6 @@
   builder->Add("timezoneSectionTitle", IDS_TIMEZONE_SECTION_TITLE);
   builder->Add("advancedOptionsSectionTitle",
                IDS_OOBE_ADVANCED_OPTIONS_SCREEN_TITLE);
-  builder->Add("advancedOptionsEEBootstrappingTitle",
-               IDS_OOBE_ADVANCED_OPTIONS_EE_BOOTSTRAPPING_TITLE);
-  builder->Add("advancedOptionsEEBootstrappingSubtitle",
-               IDS_OOBE_ADVANCED_OPTIONS_EE_BOOTSTRAPPING_SUBTITLE);
   builder->Add("advancedOptionsCFMSetupTitle",
                IDS_OOBE_ADVANCED_OPTIONS_CFM_SETUP_TITLE);
   builder->Add("advancedOptionsCFMSetupSubtitle",
@@ -181,7 +177,7 @@
     language_list = GetMinimalUILanguageList();
 
   // GetAdditionalParameters() is called when OOBE language is updated.
-  // This happens in three different cases:
+  // This happens in two different cases:
   //
   // 1) User selects new locale on OOBE screen. We need to sync active input
   // methods with locale, so EnableLoginLayouts() is needed.
@@ -199,16 +195,8 @@
   //
   // So we need to disable activation of login layouts if we are already in
   // active user session.
-  //
-  // 3) This is the bootstrapping process for a "Slave" device. The locale &
-  // input of the "Slave" device is set up by a "Master" device. In this case we
-  // don't want EnableLoginLayout() to reset the input method to the hardware
-  // default method.
-  const bool is_slave = g_browser_process->local_state()->GetBoolean(
-      prefs::kOobeControllerDetected);
-
   const bool enable_layouts =
-      !user_manager::UserManager::Get()->IsUserLoggedIn() && !is_slave;
+      !user_manager::UserManager::Get()->IsUserLoggedIn();
 
   dict->Set("languageList", std::move(language_list));
   dict->Set("inputMethodsList",
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index e68ca34..ab606ed 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -1844,11 +1844,6 @@
 // The name of the screen that has to be shown if OOBE has been interrupted.
 const char kOobeScreenPending[] = "OobeScreenPending";
 
-// A boolean pref to indicate if an eligible controller (either a Chrome OS
-// device, or an Android device) is detected during bootstrapping or
-// shark/remora setup process. A controller can help the device go through OOBE
-// and get enrolled into a domain automatically.
-const char kOobeControllerDetected[] = "OobeControllerDetected";
 
 // A boolean pref to indicate if the marketing opt-in screen in OOBE is finished
 // for the user.
@@ -1885,10 +1880,6 @@
 // This is saved to file and cleared after chrome process starts.
 const char kLogoutStartedLast[] = "chromeos.logout-started";
 
-// The role of the device in the OOBE bootstrapping process. If it's a "slave"
-// device, then it's eligible to be enrolled by a "master" device (which could
-// be an Android app).
-const char kIsBootstrappingSlave[] = "is_oobe_bootstrapping_slave";
 
 // A boolean preference controlling Android status reporting.
 const char kReportArcStatusEnabled[] = "arc.status_reporting_enabled";
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 15110bb..2d0de49 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -620,7 +620,6 @@
 extern const char kInitialLocale[];
 extern const char kOobeComplete[];
 extern const char kOobeScreenPending[];
-extern const char kOobeControllerDetected[];
 extern const char kOobeMarketingOptInScreenFinished[];
 extern const char kCanShowOobeGoodiesPage[];
 extern const char kDeviceRegistered[];
@@ -630,7 +629,6 @@
 extern const char kCustomizationDefaultWallpaperURL[];
 extern const char kLogoutStartedLast[];
 extern const char kConsumerManagementStage[];
-extern const char kIsBootstrappingSlave[];
 extern const char kReportArcStatusEnabled[];
 extern const char kNetworkThrottlingEnabled[];
 extern const char kPowerMetricsDailySample[];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 6eda112..0e20d64 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1699,7 +1699,6 @@
         "../browser/chromeos/login/active_directory_test_helper.cc",
         "../browser/chromeos/login/active_directory_test_helper.h",
         "../browser/chromeos/login/auto_launched_kiosk_browsertest.cc",
-        "../browser/chromeos/login/bluetooth_host_pairing_browsertest.cc",
         "../browser/chromeos/login/crash_restore_browsertest.cc",
         "../browser/chromeos/login/demo_mode/demo_app_launcher_browsertest.cc",
         "../browser/chromeos/login/demo_mode/demo_session_browsertest.cc",
diff --git a/chromeos/chromeos_switches.cc b/chromeos/chromeos_switches.cc
index 437d6fa..60dbe44 100644
--- a/chromeos/chromeos_switches.cc
+++ b/chromeos/chromeos_switches.cc
@@ -449,9 +449,6 @@
 // Defines user homedir. This defaults to primary user homedir.
 const char kHomedir[] = "homedir";
 
-// With this switch, start remora OOBE with the pairing screen.
-const char kHostPairingOobe[] = "host-pairing-oobe";
-
 // If true, profile selection in UserManager will always return active user's
 // profile.
 // TODO(nkostlyev): http://crbug.com/364604 - Get rid of this switch after we
@@ -490,9 +487,6 @@
 // notes. If unset, a hardcoded list is used instead.
 const char kNoteTakingAppIds[] = "note-taking-app-ids";
 
-// Indicates that if we should start bootstrapping Master OOBE.
-const char kOobeBootstrappingMaster[] = "oobe-bootstrapping-master";
-
 // Forces OOBE/login to force show a comma-separated list of screens from
 // chromeos::kScreenNames in oobe_screen.cc. Supported screens are:
 //   user-image
diff --git a/chromeos/chromeos_switches.h b/chromeos/chromeos_switches.h
index 48ea0b7..c443439 100644
--- a/chromeos/chromeos_switches.h
+++ b/chromeos/chromeos_switches.h
@@ -126,7 +126,6 @@
 CHROMEOS_EXPORT extern const char kHideActiveAppsFromShelf[];
 CHROMEOS_EXPORT extern const char kHideAndroidFilesInFilesApp[];
 CHROMEOS_EXPORT extern const char kHomedir[];
-CHROMEOS_EXPORT extern const char kHostPairingOobe[];
 CHROMEOS_EXPORT extern const char kIgnoreUserProfileMappingForTests[];
 CHROMEOS_EXPORT extern const char kLoginManager[];
 CHROMEOS_EXPORT extern const char kLoginProfile[];
@@ -135,7 +134,6 @@
 CHROMEOS_EXPORT extern const char kNaturalScrollDefault[];
 CHROMEOS_EXPORT extern const char kNeedArcMigrationPolicyCheck[];
 CHROMEOS_EXPORT extern const char kNoteTakingAppIds[];
-CHROMEOS_EXPORT extern const char kOobeBootstrappingMaster[];
 CHROMEOS_EXPORT extern const char kOobeForceShowScreen[];
 CHROMEOS_EXPORT extern const char kOobeGuestSession[];
 CHROMEOS_EXPORT extern const char kOobeSkipPostLogin[];
diff --git a/ui/login/display_manager.js b/ui/login/display_manager.js
index 3b7e5f1..364798f 100644
--- a/ui/login/display_manager.js
+++ b/ui/login/display_manager.js
@@ -56,12 +56,9 @@
 /** @const */ var ACCELERATOR_DEVICE_REQUISITION = 'device_requisition';
 /** @const */ var ACCELERATOR_DEVICE_REQUISITION_REMORA =
     'device_requisition_remora';
-/** @const */ var ACCELERATOR_DEVICE_REQUISITION_SHARK =
-    'device_requisition_shark';
 /** @const */ var ACCELERATOR_APP_LAUNCH_BAILOUT = 'app_launch_bailout';
 /** @const */ var ACCELERATOR_APP_LAUNCH_NETWORK_CONFIG =
     'app_launch_network_config';
-/** @const */ var ACCELERATOR_BOOTSTRAPPING_SLAVE = "bootstrapping_slave";
 /** @const */ var ACCELERATOR_DEMO_MODE = "demo_mode";
 /** @const */ var ACCELERATOR_SEND_FEEDBACK = "send_feedback";
 
@@ -492,10 +489,6 @@
         if (this.isOobeUI())
           this.showDeviceRequisitionRemoraPrompt_(
               'deviceRequisitionRemoraPromptText', 'remora');
-      } else if (name == ACCELERATOR_DEVICE_REQUISITION_SHARK) {
-        if (this.isOobeUI())
-          this.showDeviceRequisitionRemoraPrompt_(
-              'deviceRequisitionSharkPromptText', 'shark');
       } else if (name == ACCELERATOR_APP_LAUNCH_BAILOUT) {
         if (currentStepId == SCREEN_APP_LAUNCH_SPLASH)
           chrome.send('cancelAppLaunch');
@@ -504,8 +497,6 @@
       } else if (name == ACCELERATOR_APP_LAUNCH_NETWORK_CONFIG) {
         if (currentStepId == SCREEN_APP_LAUNCH_SPLASH)
           chrome.send('networkConfigRequest');
-      } else if (name == ACCELERATOR_BOOTSTRAPPING_SLAVE) {
-        chrome.send('setOobeBootstrappingSlave');
       } else if (name == ACCELERATOR_DEMO_MODE) {
         this.startDemoModeFlow();
       } else if (name == ACCELERATOR_SEND_FEEDBACK) {
diff --git a/ui/login/md_screen_container.css b/ui/login/md_screen_container.css
index 532f4b7..7b00e05 100644
--- a/ui/login/md_screen_container.css
+++ b/ui/login/md_screen_container.css
@@ -116,14 +116,12 @@
 #auto-enrollment-check-dot,
 #autolaunch-dot,
 #confirm-password-dot,
-#controller-pairing-dot,
 #debugging-dot,
 #device-disabled-dot,
 #enrollment-dot,
 #error-message-dot,
 #fatal-error-dot,
 #hid-detection-dot,
-#host-pairing-dot,
 #kiosk-enable-dot,
 #oauth-enrollment-dot,
 #password-changed-dot,
diff --git a/ui/login/screen_container.css b/ui/login/screen_container.css
index b607291..472b902 100644
--- a/ui/login/screen_container.css
+++ b/ui/login/screen_container.css
@@ -118,14 +118,12 @@
 #auto-enrollment-check-dot,
 #autolaunch-dot,
 #confirm-password-dot,
-#controller-pairing-dot,
 #debugging-dot,
 #device-disabled-dot,
 #enrollment-dot,
 #error-message-dot,
 #fatal-error-dot,
 #hid-detection-dot,
-#host-pairing-dot,
 #kiosk-enable-dot,
 #oauth-enrollment-dot,
 #password-changed-dot,