[go: nahoru, domu]

ash: Rename SessionController to SessionControllerImpl

No functionality change. Just renaming so that SessionContrller/Client
could be used to replace mojom::SessionContrller/Client.

Bug: 958214
Change-Id: I7fb597f955073564fb85c8a55e1c3aacc8cc4fe4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1597201
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#657021}
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 5ef91507..3cbb8959 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -53,7 +53,7 @@
     "public/cpp/multi_user_window_manager_observer.h",
     "root_window_controller.h",
     "screenshot_delegate.h",
-    "session/session_controller.h",
+    "session/session_controller_impl.h",
     "shelf/shelf.h",
     "shelf/shelf_widget.h",
     "shell.h",
@@ -526,7 +526,7 @@
     "session/session_aborted_dialog.h",
     "session/session_activation_observer_holder.cc",
     "session/session_activation_observer_holder.h",
-    "session/session_controller.cc",
+    "session/session_controller_impl.cc",
     "session/session_observer.cc",
     "session/session_observer.h",
     "session/teleport_warning_dialog.cc",
@@ -1738,7 +1738,7 @@
     "rotator/screen_rotation_animation_unittest.cc",
     "rotator/screen_rotation_animator_unittest.cc",
     "screen_util_unittest.cc",
-    "session/session_controller_unittest.cc",
+    "session/session_controller_impl_unittest.cc",
     "shelf/app_list_button_unittest.cc",
     "shelf/back_button_unittest.cc",
     "shelf/login_shelf_view_unittest.cc",
diff --git a/ash/accelerators/accelerator_confirmation_dialog.cc b/ash/accelerators/accelerator_confirmation_dialog.cc
index 9e63cc7..65616d9 100644
--- a/ash/accelerators/accelerator_confirmation_dialog.cc
+++ b/ash/accelerators/accelerator_confirmation_dialog.cc
@@ -8,7 +8,7 @@
 #include <utility>
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "base/bind.h"
@@ -39,7 +39,8 @@
   // Parent the dialog widget to the LockSystemModalContainer, or
   // OverlayContainer to ensure that it will get displayed on respective
   // lock/signin or OOBE screen.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   int container_id = kShellWindowId_SystemModalContainer;
   if (session_controller->GetSessionState() ==
       session_manager::SessionState::OOBE) {
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index c36336c..b7e040e3 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -37,7 +37,7 @@
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/root_window_controller.h"
 #include "ash/rotator/window_rotation.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/home_button_delegate.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_widget.h"
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index 9c4abf2..366de3c6 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -24,7 +24,7 @@
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/interfaces/ime_info.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/shell_test_api.h"
diff --git a/ash/accelerators/accelerator_filter_unittest.cc b/ash/accelerators/accelerator_filter_unittest.cc
index 722e02e..37edce0 100644
--- a/ash/accelerators/accelerator_filter_unittest.cc
+++ b/ash/accelerators/accelerator_filter_unittest.cc
@@ -9,7 +9,7 @@
 #include "ash/accelerators/accelerator_controller.h"
 #include "ash/accelerators/pre_target_accelerator_handler.h"
 #include "ash/app_list/test/app_list_test_helper.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test_screenshot_delegate.h"
@@ -133,7 +133,7 @@
 }
 
 TEST_F(AcceleratorFilterTest, SearchKeyShortcutsAreAlwaysHandled) {
-  SessionController* const session_controller =
+  SessionControllerImpl* const session_controller =
       Shell::Get()->session_controller();
   EXPECT_FALSE(session_controller->IsScreenLocked());
 
diff --git a/ash/accelerators/exit_warning_handler.cc b/ash/accelerators/exit_warning_handler.cc
index b8499e3d..a274a69 100644
--- a/ash/accelerators/exit_warning_handler.cc
+++ b/ash/accelerators/exit_warning_handler.cc
@@ -7,7 +7,7 @@
 #include <memory>
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "base/metrics/user_metrics.h"
diff --git a/ash/accessibility/accessibility_controller.cc b/ash/accessibility/accessibility_controller.cc
index 6ac8a42..4e17bee 100644
--- a/ash/accessibility/accessibility_controller.cc
+++ b/ash/accessibility/accessibility_controller.cc
@@ -21,7 +21,7 @@
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/session_observer.h"
 #include "ash/shell.h"
 #include "ash/sticky_keys/sticky_keys_controller.h"
diff --git a/ash/accessibility/accessibility_controller_unittest.cc b/ash/accessibility/accessibility_controller_unittest.cc
index 59210e2..6d1e0bf 100644
--- a/ash/accessibility/accessibility_controller_unittest.cc
+++ b/ash/accessibility/accessibility_controller_unittest.cc
@@ -11,7 +11,7 @@
 #include "ash/magnifier/docked_magnifier_controller.h"
 #include "ash/public/cpp/ash_constants.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/sticky_keys/sticky_keys_controller.h"
 #include "ash/test/ash_test_base.h"
@@ -485,7 +485,7 @@
   DockedMagnifierController* docked_magnifier =
       Shell::Get()->docked_magnifier_controller();
 
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   EXPECT_EQ(session_manager::SessionState::LOGIN_PRIMARY,
             session->GetSessionState());
   EXPECT_FALSE(accessibility->large_cursor_enabled());
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc
index 4e2f0d1..24853dd 100644
--- a/ash/app_list/app_list_controller_impl.cc
+++ b/ash/app_list/app_list_controller_impl.cc
@@ -30,7 +30,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/interfaces/app_list_view.mojom.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shell.h"
 #include "ash/voice_interaction/voice_interaction_controller.h"
@@ -124,7 +124,8 @@
       presenter_(std::make_unique<AppListPresenterDelegateImpl>(this)) {
   model_->AddObserver(this);
 
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   session_controller->AddObserver(this);
 
   // In case of crash-and-restart case where session state starts with ACTIVE
diff --git a/ash/assistant/assistant_controller.cc b/ash/assistant/assistant_controller.cc
index 7369361..8013dec 100644
--- a/ash/assistant/assistant_controller.cc
+++ b/ash/assistant/assistant_controller.cc
@@ -11,7 +11,7 @@
 #include "ash/assistant/util/deep_link_util.h"
 #include "ash/new_window_controller.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/utility/screenshot_controller.h"
 #include "ash/voice_interaction/voice_interaction_controller.h"
diff --git a/ash/assistant/assistant_interaction_controller.cc b/ash/assistant/assistant_interaction_controller.cc
index 698def1..57c2ba4 100644
--- a/ash/assistant/assistant_interaction_controller.cc
+++ b/ash/assistant/assistant_interaction_controller.cc
@@ -22,7 +22,7 @@
 #include "ash/public/cpp/app_list/app_list_features.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/interfaces/voice_interaction_controller.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/voice_interaction/voice_interaction_controller.h"
diff --git a/ash/assistant/assistant_ui_controller.cc b/ash/assistant/assistant_ui_controller.cc
index 4757f4f..c726018 100644
--- a/ash/assistant/assistant_ui_controller.cc
+++ b/ash/assistant/assistant_ui_controller.cc
@@ -14,7 +14,7 @@
 #include "ash/assistant/util/histogram_util.h"
 #include "ash/multi_user/multi_user_window_manager_impl.h"
 #include "ash/public/cpp/app_list/app_list_features.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/toast/toast_data.h"
diff --git a/ash/detachable_base/detachable_base_notification_controller.cc b/ash/detachable_base/detachable_base_notification_controller.cc
index 067341d..36830b6 100644
--- a/ash/detachable_base/detachable_base_notification_controller.cc
+++ b/ash/detachable_base/detachable_base_notification_controller.cc
@@ -11,7 +11,7 @@
 #include "ash/detachable_base/detachable_base_pairing_status.h"
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/public/cpp/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "base/strings/string16.h"
diff --git a/ash/detachable_base/detachable_base_notification_controller_unittest.cc b/ash/detachable_base/detachable_base_notification_controller_unittest.cc
index 805646f..386be76 100644
--- a/ash/detachable_base/detachable_base_notification_controller_unittest.cc
+++ b/ash/detachable_base/detachable_base_notification_controller_unittest.cc
@@ -8,7 +8,7 @@
 
 #include "ash/detachable_base/detachable_base_handler.h"
 #include "ash/public/interfaces/user_info.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
@@ -65,7 +65,7 @@
     return Shell::Get()->detachable_base_handler();
   }
 
-  SessionController* session_controller() {
+  SessionControllerImpl* session_controller() {
     return Shell::Get()->session_controller();
   }
 
diff --git a/ash/display/cursor_window_controller.cc b/ash/display/cursor_window_controller.cc
index a8e65c5..9e3efea 100644
--- a/ash/display/cursor_window_controller.cc
+++ b/ash/display/cursor_window_controller.cc
@@ -14,7 +14,7 @@
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/window_factory.h"
 #include "base/command_line.h"
diff --git a/ash/display/cursor_window_controller_unittest.cc b/ash/display/cursor_window_controller_unittest.cc
index 56cfd4b..beb6ff3 100644
--- a/ash/display/cursor_window_controller_unittest.cc
+++ b/ash/display/cursor_window_controller_unittest.cc
@@ -8,7 +8,7 @@
 #include "ash/display/display_util.h"
 #include "ash/display/window_tree_host_manager.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "base/command_line.h"
diff --git a/ash/display/display_prefs.cc b/ash/display/display_prefs.cc
index 768fae6..ac630e2 100644
--- a/ash/display/display_prefs.cc
+++ b/ash/display/display_prefs.cc
@@ -7,7 +7,7 @@
 #include <stddef.h>
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/command_line.h"
 #include "base/stl_util.h"
@@ -207,7 +207,7 @@
 // Returns true id the current user can write display preferences to
 // Local State.
 bool UserCanSaveDisplayPreference() {
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   auto user_type = controller->GetUserType();
   if (!user_type)
     return false;
diff --git a/ash/display/persistent_window_controller.cc b/ash/display/persistent_window_controller.cc
index 9451f83..c859ad4 100644
--- a/ash/display/persistent_window_controller.cc
+++ b/ash/display/persistent_window_controller.cc
@@ -5,7 +5,7 @@
 #include "ash/display/persistent_window_controller.h"
 
 #include "ash/display/persistent_window_info.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/mru_window_tracker.h"
 #include "ash/wm/window_state.h"
diff --git a/ash/display/resolution_notification_controller.cc b/ash/display/resolution_notification_controller.cc
index 1b9c08d..874b3ff 100644
--- a/ash/display/resolution_notification_controller.cc
+++ b/ash/display/resolution_notification_controller.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/screen_layout_observer.h"
diff --git a/ash/display/resolution_notification_controller_unittest.cc b/ash/display/resolution_notification_controller_unittest.cc
index c8dad741..27f4eb5 100644
--- a/ash/display/resolution_notification_controller_unittest.cc
+++ b/ash/display/resolution_notification_controller_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/interfaces/session_controller.mojom.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/screen_layout_observer.h"
diff --git a/ash/events/keyboard_driven_event_rewriter.cc b/ash/events/keyboard_driven_event_rewriter.cc
index ab92662..c9000c4b8 100644
--- a/ash/events/keyboard_driven_event_rewriter.cc
+++ b/ash/events/keyboard_driven_event_rewriter.cc
@@ -5,7 +5,7 @@
 #include "ash/events/keyboard_driven_event_rewriter.h"
 
 #include "ash/keyboard/keyboard_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ui/chromeos/events/event_rewriter_chromeos.h"
 #include "ui/events/event.h"
diff --git a/ash/first_run/first_run_helper.cc b/ash/first_run/first_run_helper.cc
index 3f0c9f8..ac62094 100644
--- a/ash/first_run/first_run_helper.cc
+++ b/ash/first_run/first_run_helper.cc
@@ -10,7 +10,7 @@
 #include "ash/app_list/views/app_list_view.h"
 #include "ash/first_run/desktop_cleaner.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/app_list_button.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_widget.h"
diff --git a/ash/first_run/first_run_helper_unittest.cc b/ash/first_run/first_run_helper_unittest.cc
index 04b5489..b2f14e1 100644
--- a/ash/first_run/first_run_helper_unittest.cc
+++ b/ash/first_run/first_run_helper_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/first_run/desktop_cleaner.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 
diff --git a/ash/home_screen/home_screen_controller.cc b/ash/home_screen/home_screen_controller.cc
index 384470ef..ffab9931 100644
--- a/ash/home_screen/home_screen_controller.cc
+++ b/ash/home_screen/home_screen_controller.cc
@@ -7,7 +7,7 @@
 #include "ash/home_screen/home_launcher_gesture_handler.h"
 #include "ash/home_screen/home_screen_delegate.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/wallpaper/wallpaper_controller.h"
diff --git a/ash/keyboard/ash_keyboard_controller.cc b/ash/keyboard/ash_keyboard_controller.cc
index 0fcc82a..5058b4b4 100644
--- a/ash/keyboard/ash_keyboard_controller.cc
+++ b/ash/keyboard/ash_keyboard_controller.cc
@@ -7,7 +7,7 @@
 #include "ash/keyboard/ash_keyboard_ui.h"
 #include "ash/keyboard/virtual_keyboard_controller.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "base/command_line.h"
@@ -44,7 +44,7 @@
 }  // namespace
 
 AshKeyboardController::AshKeyboardController(
-    SessionController* session_controller)
+    SessionControllerImpl* session_controller)
     : session_controller_(session_controller),
       keyboard_controller_(std::make_unique<keyboard::KeyboardController>()) {
   if (session_controller_)  // May be null in tests.
diff --git a/ash/keyboard/ash_keyboard_controller.h b/ash/keyboard/ash_keyboard_controller.h
index f7d5302c..87f2e9f 100644
--- a/ash/keyboard/ash_keyboard_controller.h
+++ b/ash/keyboard/ash_keyboard_controller.h
@@ -26,7 +26,7 @@
 
 namespace ash {
 
-class SessionController;
+class SessionControllerImpl;
 class VirtualKeyboardController;
 
 // Contains and observes a keyboard::KeyboardController instance. Ash specific
@@ -39,7 +39,7 @@
       public SessionObserver {
  public:
   // |session_controller| is expected to outlive AshKeyboardController.
-  explicit AshKeyboardController(SessionController* session_controller);
+  explicit AshKeyboardController(SessionControllerImpl* session_controller);
   ~AshKeyboardController() override;
 
   // Called from RegisterInterfaces to bind this to the Ash service.
@@ -110,7 +110,7 @@
       override;
   void OnKeyboardEnabledChanged(bool is_enabled) override;
 
-  SessionController* session_controller_;  // unowned
+  SessionControllerImpl* session_controller_;  // unowned
   std::unique_ptr<keyboard::KeyboardController> keyboard_controller_;
   std::unique_ptr<VirtualKeyboardController> virtual_keyboard_controller_;
   mojo::BindingSet<mojom::KeyboardController> bindings_;
diff --git a/ash/keyboard/virtual_keyboard_controller.cc b/ash/keyboard/virtual_keyboard_controller.cc
index af0cfcf..6b997ab 100644
--- a/ash/keyboard/virtual_keyboard_controller.cc
+++ b/ash/keyboard/virtual_keyboard_controller.cc
@@ -11,7 +11,7 @@
 #include "ash/keyboard/ash_keyboard_controller.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/tray/system_tray_notifier.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
diff --git a/ash/kiosk_next/kiosk_next_shell_controller.cc b/ash/kiosk_next/kiosk_next_shell_controller.cc
index 279be8a..51616d1 100644
--- a/ash/kiosk_next/kiosk_next_shell_controller.cc
+++ b/ash/kiosk_next/kiosk_next_shell_controller.cc
@@ -12,7 +12,7 @@
 #include "ash/kiosk_next/kiosk_next_shell_observer.h"
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "components/account_id/account_id.h"
 #include "components/prefs/pref_registry_simple.h"
diff --git a/ash/kiosk_next/kiosk_next_shell_test_util.cc b/ash/kiosk_next/kiosk_next_shell_test_util.cc
index fe5fe6f..eacbae8 100644
--- a/ash/kiosk_next/kiosk_next_shell_test_util.cc
+++ b/ash/kiosk_next/kiosk_next_shell_test_util.cc
@@ -5,7 +5,7 @@
 #include "ash/kiosk_next/kiosk_next_shell_test_util.h"
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "components/prefs/pref_service.h"
diff --git a/ash/login/login_screen_controller.cc b/ash/login/login_screen_controller.cc
index 65fd9ff..251acab 100644
--- a/ash/login/login_screen_controller.cc
+++ b/ash/login/login_screen_controller.cc
@@ -11,7 +11,7 @@
 #include "ash/login/ui/login_data_dispatcher.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/login_shelf_view.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_widget.h"
diff --git a/ash/login/login_screen_controller_unittest.cc b/ash/login/login_screen_controller_unittest.cc
index 90c07b0..559f914 100644
--- a/ash/login/login_screen_controller_unittest.cc
+++ b/ash/login/login_screen_controller_unittest.cc
@@ -8,7 +8,7 @@
 #include "ash/login/ui/lock_screen.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/system/status_area_widget.h"
diff --git a/ash/magnifier/docked_magnifier_controller.cc b/ash/magnifier/docked_magnifier_controller.cc
index cb53c9d0..710cf50 100644
--- a/ash/magnifier/docked_magnifier_controller.cc
+++ b/ash/magnifier/docked_magnifier_controller.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/overview/overview_controller.h"
 #include "ash/wm/splitview/split_view_controller.h"
diff --git a/ash/magnifier/docked_magnifier_controller_unittest.cc b/ash/magnifier/docked_magnifier_controller_unittest.cc
index ac2c2e9..95fd05a 100644
--- a/ash/magnifier/docked_magnifier_controller_unittest.cc
+++ b/ash/magnifier/docked_magnifier_controller_unittest.cc
@@ -15,7 +15,7 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/interfaces/docked_magnifier_controller.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
diff --git a/ash/media/media_controller.cc b/ash/media/media_controller.cc
index eb22e42..96f7f1c 100644
--- a/ash/media/media_controller.cc
+++ b/ash/media/media_controller.cc
@@ -4,7 +4,7 @@
 
 #include "ash/media/media_controller.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/bind.h"
 #include "base/feature_list.h"
diff --git a/ash/media/media_controller_unittest.cc b/ash/media/media_controller_unittest.cc
index 1b3ed00..cf40c88 100644
--- a/ash/media/media_controller_unittest.cc
+++ b/ash/media/media_controller_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <memory>
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "base/macros.h"
diff --git a/ash/media/media_notification_controller.cc b/ash/media/media_notification_controller.cc
index da418448..fd9913b 100644
--- a/ash/media/media_notification_controller.cc
+++ b/ash/media/media_notification_controller.cc
@@ -6,7 +6,7 @@
 
 #include "ash/media/media_notification_constants.h"
 #include "ash/media/media_notification_view.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/session_observer.h"
 #include "ash/shell.h"
 #include "base/bind.h"
@@ -40,7 +40,7 @@
                                  public SessionObserver {
  public:
   MediaNotificationBlocker(message_center::MessageCenter* message_center,
-                           SessionController* session_controller)
+                           SessionControllerImpl* session_controller)
       : message_center::NotificationBlocker(message_center),
         locked_(session_controller->IsScreenLocked()),
         session_controller_(session_controller) {
@@ -87,7 +87,7 @@
  private:
   bool locked_;
 
-  SessionController* const session_controller_;
+  SessionControllerImpl* const session_controller_;
 
   DISALLOW_COPY_AND_ASSIGN(MediaNotificationBlocker);
 };
diff --git a/ash/media/media_notification_controller_unittest.cc b/ash/media/media_notification_controller_unittest.cc
index b30915d..f4c29c7 100644
--- a/ash/media/media_notification_controller_unittest.cc
+++ b/ash/media/media_notification_controller_unittest.cc
@@ -10,7 +10,7 @@
 #include "ash/media/media_notification_item.h"
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/notification_utils.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "base/macros.h"
diff --git a/ash/metrics/login_metrics_recorder.cc b/ash/metrics/login_metrics_recorder.cc
index f447943b..257e8aa 100644
--- a/ash/metrics/login_metrics_recorder.cc
+++ b/ash/metrics/login_metrics_recorder.cc
@@ -5,7 +5,7 @@
 #include "ash/metrics/login_metrics_recorder.h"
 
 #include "ash/login/ui/lock_screen.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
diff --git a/ash/metrics/user_metrics_recorder.cc b/ash/metrics/user_metrics_recorder.cc
index 99f1c6a..9dd9ac2 100644
--- a/ash/metrics/user_metrics_recorder.cc
+++ b/ash/metrics/user_metrics_recorder.cc
@@ -16,7 +16,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/interfaces/accessibility_controller.mojom-shared.h"
 #include "ash/public/interfaces/window_state_type.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_view.h"
 #include "ash/shell.h"
@@ -97,7 +97,7 @@
 // Returns true if there is an active user and their session isn't currently
 // locked.
 bool IsUserActive() {
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   return session->IsActiveUserSessionStarted() && !session->IsScreenLocked();
 }
 
diff --git a/ash/metrics/user_metrics_recorder_unittest.cc b/ash/metrics/user_metrics_recorder_unittest.cc
index 608d173..c28467c 100644
--- a/ash/metrics/user_metrics_recorder_unittest.cc
+++ b/ash/metrics/user_metrics_recorder_unittest.cc
@@ -9,7 +9,7 @@
 #include "ash/login_status.h"
 #include "ash/metrics/user_metrics_recorder_test_api.h"
 #include "ash/public/cpp/shelf_model.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
@@ -59,7 +59,7 @@
 // Verifies the return value of IsUserInActiveDesktopEnvironment() for the
 // different login status values.
 TEST_F(UserMetricsRecorderTest, VerifyIsUserInActiveDesktopEnvironmentValues) {
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
 
   // Environment is not active before login.
   ASSERT_FALSE(session->IsActiveUserSessionStarted());
diff --git a/ash/mojo_interface_factory.cc b/ash/mojo_interface_factory.cc
index 1add1f15..893aa825 100644
--- a/ash/mojo_interface_factory.cc
+++ b/ash/mojo_interface_factory.cc
@@ -36,7 +36,7 @@
 #include "ash/note_taking_controller.h"
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf_controller.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
diff --git a/ash/multi_device_setup/multi_device_notification_presenter.cc b/ash/multi_device_setup/multi_device_notification_presenter.cc
index bc470eb..1f60d7d 100644
--- a/ash/multi_device_setup/multi_device_notification_presenter.cc
+++ b/ash/multi_device_setup/multi_device_notification_presenter.cc
@@ -10,7 +10,7 @@
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/public/cpp/vector_icons/vector_icons.h"
 #include "ash/public/interfaces/session_controller.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
@@ -214,7 +214,7 @@
   if (multidevice_setup_ptr_)
     return;
 
-  const SessionController* session_controller =
+  const SessionControllerImpl* session_controller =
       Shell::Get()->session_controller();
 
   // If no active user is logged in, there is nothing to do.
diff --git a/ash/multi_user/multi_user_window_manager_impl.cc b/ash/multi_user/multi_user_window_manager_impl.cc
index 20dfd237..86f4cba8 100644
--- a/ash/multi_user/multi_user_window_manager_impl.cc
+++ b/ash/multi_user/multi_user_window_manager_impl.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/multi_user_window_manager_delegate.h"
 #include "ash/public/cpp/multi_user_window_manager_observer.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "base/auto_reset.h"
@@ -64,7 +64,8 @@
   DCHECK(account_id.is_valid());
   mojom::WallpaperUserInfoPtr wallpaper_user_info =
       mojom::WallpaperUserInfo::New();
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   for (const mojom::UserSessionPtr& user_session :
        session_controller->GetUserSessions()) {
     if (user_session->user_info->account_id == account_id) {
diff --git a/ash/policy/policy_recommendation_restorer.cc b/ash/policy/policy_recommendation_restorer.cc
index 5cc1cbe..475b1581 100644
--- a/ash/policy/policy_recommendation_restorer.cc
+++ b/ash/policy/policy_recommendation_restorer.cc
@@ -4,7 +4,7 @@
 
 #include "ash/policy/policy_recommendation_restorer.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/bind.h"
 #include "base/logging.h"
diff --git a/ash/policy/policy_recommendation_restorer_unittest.cc b/ash/policy/policy_recommendation_restorer_unittest.cc
index 5eab2f5a..000d8f43 100644
--- a/ash/policy/policy_recommendation_restorer_unittest.cc
+++ b/ash/policy/policy_recommendation_restorer_unittest.cc
@@ -5,7 +5,7 @@
 #include "ash/policy/policy_recommendation_restorer.h"
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
@@ -44,7 +44,8 @@
   }
 
   void ConnectToSigninPrefService() {
-    SessionController* session_controller = Shell::Get()->session_controller();
+    SessionControllerImpl* session_controller =
+        Shell::Get()->session_controller();
     session_controller->SetSigninScreenPrefServiceForTest(
         base::WrapUnique(prefs_));
     ASSERT_EQ(session_controller->GetSigninScreenPrefService(), prefs_);
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 5aa017f..9f568c5 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -28,7 +28,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_settings.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_context_menu_model.h"
 #include "ash/shelf/shelf_layout_manager.h"
diff --git a/ash/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc
index 12e6658f..d43ad55 100644
--- a/ash/root_window_controller_unittest.cc
+++ b/ash/root_window_controller_unittest.cc
@@ -7,7 +7,7 @@
 #include <memory>
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
@@ -430,7 +430,8 @@
   UpdateDisplay("600x600");
 
   // Configure login screen environment.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   ClearLogin();
   EXPECT_EQ(0, session_controller->NumberOfLoggedInUsers());
   EXPECT_FALSE(session_controller->IsActiveUserSessionStarted());
diff --git a/ash/session/multiprofiles_intro_dialog.h b/ash/session/multiprofiles_intro_dialog.h
index db71cef..1d1f6035 100644
--- a/ash/session/multiprofiles_intro_dialog.h
+++ b/ash/session/multiprofiles_intro_dialog.h
@@ -18,7 +18,7 @@
 class MultiprofilesIntroDialog : public views::DialogDelegateView {
  public:
   // This callback and its parameters match
-  // SessionController::ShowMultiprofilesIntroDialogCallback.
+  // SessionControllerImpl::ShowMultiprofilesIntroDialogCallback.
   typedef base::OnceCallback<void(bool, bool)> OnAcceptCallback;
 
   static void Show(OnAcceptCallback on_accept);
diff --git a/ash/session/session_aborted_dialog.cc b/ash/session/session_aborted_dialog.cc
index 250c466..1b0a2959 100644
--- a/ash/session/session_aborted_dialog.cc
+++ b/ash/session/session_aborted_dialog.cc
@@ -5,7 +5,7 @@
 #include "ash/session/session_aborted_dialog.h"
 
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
diff --git a/ash/session/session_controller.cc b/ash/session/session_controller_impl.cc
similarity index 79%
rename from ash/session/session_controller.cc
rename to ash/session/session_controller_impl.cc
index 96c9576..ddd2f1dc 100644
--- a/ash/session/session_controller.cc
+++ b/ash/session/session_controller_impl.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 
 #include <algorithm>
 #include <memory>
@@ -64,59 +64,61 @@
 
 }  // namespace
 
-SessionController::SessionController(service_manager::Connector* connector)
+SessionControllerImpl::SessionControllerImpl(
+    service_manager::Connector* connector)
     : state_(GetDefaultSessionState()),
       connector_(connector),
       weak_ptr_factory_(this) {}
 
-SessionController::~SessionController() {
+SessionControllerImpl::~SessionControllerImpl() {
   // Abort pending start lock request.
   if (!start_lock_callback_.is_null())
     std::move(start_lock_callback_).Run(false /* locked */);
 }
 
-void SessionController::BindRequest(mojom::SessionControllerRequest request) {
+void SessionControllerImpl::BindRequest(
+    mojom::SessionControllerRequest request) {
   bindings_.AddBinding(this, std::move(request));
 }
 
-int SessionController::NumberOfLoggedInUsers() const {
+int SessionControllerImpl::NumberOfLoggedInUsers() const {
   return static_cast<int>(user_sessions_.size());
 }
 
-AccountId SessionController::GetActiveAccountId() const {
+AccountId SessionControllerImpl::GetActiveAccountId() const {
   return user_sessions_.empty() ? AccountId()
                                 : user_sessions_[0]->user_info->account_id;
 }
 
-AddUserSessionPolicy SessionController::GetAddUserPolicy() const {
+AddUserSessionPolicy SessionControllerImpl::GetAddUserPolicy() const {
   return add_user_session_policy_;
 }
 
-bool SessionController::IsActiveUserSessionStarted() const {
+bool SessionControllerImpl::IsActiveUserSessionStarted() const {
   return !user_sessions_.empty();
 }
 
-bool SessionController::CanLockScreen() const {
+bool SessionControllerImpl::CanLockScreen() const {
   return IsActiveUserSessionStarted() && can_lock_;
 }
 
-bool SessionController::IsScreenLocked() const {
+bool SessionControllerImpl::IsScreenLocked() const {
   return state_ == SessionState::LOCKED;
 }
 
-bool SessionController::ShouldLockScreenAutomatically() const {
+bool SessionControllerImpl::ShouldLockScreenAutomatically() const {
   return should_lock_screen_automatically_;
 }
 
-bool SessionController::IsRunningInAppMode() const {
+bool SessionControllerImpl::IsRunningInAppMode() const {
   return is_running_in_app_mode_;
 }
 
-bool SessionController::IsDemoSession() const {
+bool SessionControllerImpl::IsDemoSession() const {
   return is_demo_session_;
 }
 
-bool SessionController::IsUserSessionBlocked() const {
+bool SessionControllerImpl::IsUserSessionBlocked() const {
   // User sessions are blocked when session state is not ACTIVE, with two
   // exceptions:
   // - LOGGED_IN_NOT_ACTIVE state. This is needed so that browser windows
@@ -132,15 +134,15 @@
          !(state_ == SessionState::LOCKED && is_unlocking_);
 }
 
-bool SessionController::IsInSecondaryLoginScreen() const {
+bool SessionControllerImpl::IsInSecondaryLoginScreen() const {
   return state_ == SessionState::LOGIN_SECONDARY;
 }
 
-SessionState SessionController::GetSessionState() const {
+SessionState SessionControllerImpl::GetSessionState() const {
   return state_;
 }
 
-bool SessionController::ShouldEnableSettings() const {
+bool SessionControllerImpl::ShouldEnableSettings() const {
   // Settings opens a web UI window, so it is not available at the lock screen.
   if (!IsActiveUserSessionStarted() || IsScreenLocked() ||
       IsInSecondaryLoginScreen()) {
@@ -150,19 +152,19 @@
   return user_sessions_[0]->should_enable_settings;
 }
 
-bool SessionController::ShouldShowNotificationTray() const {
+bool SessionControllerImpl::ShouldShowNotificationTray() const {
   if (!IsActiveUserSessionStarted() || IsInSecondaryLoginScreen())
     return false;
 
   return user_sessions_[0]->should_show_notification_tray;
 }
 
-const std::vector<mojom::UserSessionPtr>& SessionController::GetUserSessions()
-    const {
+const std::vector<mojom::UserSessionPtr>&
+SessionControllerImpl::GetUserSessions() const {
   return user_sessions_;
 }
 
-const mojom::UserSession* SessionController::GetUserSession(
+const mojom::UserSession* SessionControllerImpl::GetUserSession(
     UserIndex index) const {
   if (index < 0 || index >= static_cast<UserIndex>(user_sessions_.size()))
     return nullptr;
@@ -170,7 +172,7 @@
   return user_sessions_[index].get();
 }
 
-const mojom::UserSession* SessionController::GetPrimaryUserSession() const {
+const mojom::UserSession* SessionControllerImpl::GetPrimaryUserSession() const {
   auto it = std::find_if(user_sessions_.begin(), user_sessions_.end(),
                          [this](const mojom::UserSessionPtr& session) {
                            return session->session_id == primary_session_id_;
@@ -181,7 +183,7 @@
   return (*it).get();
 }
 
-bool SessionController::IsUserSupervised() const {
+bool SessionControllerImpl::IsUserSupervised() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
@@ -190,7 +192,7 @@
          active_user_type == user_manager::USER_TYPE_CHILD;
 }
 
-bool SessionController::IsUserLegacySupervised() const {
+bool SessionControllerImpl::IsUserLegacySupervised() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
@@ -198,7 +200,7 @@
   return active_user_type == user_manager::USER_TYPE_SUPERVISED;
 }
 
-bool SessionController::IsUserChild() const {
+bool SessionControllerImpl::IsUserChild() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
@@ -206,7 +208,7 @@
   return active_user_type == user_manager::USER_TYPE_CHILD;
 }
 
-bool SessionController::IsUserPublicAccount() const {
+bool SessionControllerImpl::IsUserPublicAccount() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
@@ -214,69 +216,70 @@
   return active_user_type == user_manager::USER_TYPE_PUBLIC_ACCOUNT;
 }
 
-base::Optional<user_manager::UserType> SessionController::GetUserType() const {
+base::Optional<user_manager::UserType> SessionControllerImpl::GetUserType()
+    const {
   if (!IsActiveUserSessionStarted())
     return base::nullopt;
 
   return base::make_optional(GetUserSession(0)->user_info->type);
 }
 
-bool SessionController::IsUserPrimary() const {
+bool SessionControllerImpl::IsUserPrimary() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
   return GetUserSession(0)->session_id == primary_session_id_;
 }
 
-bool SessionController::IsUserFirstLogin() const {
+bool SessionControllerImpl::IsUserFirstLogin() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
   return GetUserSession(0)->user_info->is_new_profile;
 }
 
-bool SessionController::ShouldDisplayManagedUI() const {
+bool SessionControllerImpl::ShouldDisplayManagedUI() const {
   if (!IsActiveUserSessionStarted())
     return false;
 
   return GetUserSession(0)->user_info->should_display_managed_ui;
 }
 
-void SessionController::LockScreen() {
+void SessionControllerImpl::LockScreen() {
   if (client_)
     client_->RequestLockScreen();
 }
 
-void SessionController::RequestSignOut() {
+void SessionControllerImpl::RequestSignOut() {
   if (client_)
     client_->RequestSignOut();
 }
 
-void SessionController::SwitchActiveUser(const AccountId& account_id) {
+void SessionControllerImpl::SwitchActiveUser(const AccountId& account_id) {
   if (client_)
     client_->SwitchActiveUser(account_id);
 }
 
-void SessionController::CycleActiveUser(CycleUserDirection direction) {
+void SessionControllerImpl::CycleActiveUser(CycleUserDirection direction) {
   if (client_)
     client_->CycleActiveUser(direction);
 }
 
-void SessionController::ShowMultiProfileLogin() {
+void SessionControllerImpl::ShowMultiProfileLogin() {
   if (client_)
     client_->ShowMultiProfileLogin();
 }
 
-void SessionController::EmitAshInitialized() {
+void SessionControllerImpl::EmitAshInitialized() {
   if (client_)
     client_->EmitAshInitialized();
 }
 
-PrefService* SessionController::GetSigninScreenPrefService() const {
+PrefService* SessionControllerImpl::GetSigninScreenPrefService() const {
   return signin_screen_prefs_.get();
 }
 
-PrefService* SessionController::GetUserPrefServiceForUser(
+PrefService* SessionControllerImpl::GetUserPrefServiceForUser(
     const AccountId& account_id) const {
   auto it = per_user_prefs_.find(account_id);
   if (it != per_user_prefs_.end())
@@ -285,17 +288,17 @@
   return nullptr;
 }
 
-PrefService* SessionController::GetPrimaryUserPrefService() const {
+PrefService* SessionControllerImpl::GetPrimaryUserPrefService() const {
   const mojom::UserSession* session = GetPrimaryUserSession();
   return session ? GetUserPrefServiceForUser(session->user_info->account_id)
                  : nullptr;
 }
 
-PrefService* SessionController::GetLastActiveUserPrefService() const {
+PrefService* SessionControllerImpl::GetLastActiveUserPrefService() const {
   return last_active_user_prefs_;
 }
 
-PrefService* SessionController::GetActivePrefService() const {
+PrefService* SessionControllerImpl::GetActivePrefService() const {
   // Use the active user prefs once they become available. Check the PrefService
   // object instead of session state because prefs load is async after login.
   if (last_active_user_prefs_)
@@ -303,19 +306,20 @@
   return signin_screen_prefs_.get();
 }
 
-void SessionController::AddObserver(SessionObserver* observer) {
+void SessionControllerImpl::AddObserver(SessionObserver* observer) {
   observers_.AddObserver(observer);
 }
 
-void SessionController::RemoveObserver(SessionObserver* observer) {
+void SessionControllerImpl::RemoveObserver(SessionObserver* observer) {
   observers_.RemoveObserver(observer);
 }
 
-void SessionController::SetClient(mojom::SessionControllerClientPtr client) {
+void SessionControllerImpl::SetClient(
+    mojom::SessionControllerClientPtr client) {
   client_ = std::move(client);
 }
 
-void SessionController::SetSessionInfo(mojom::SessionInfoPtr info) {
+void SessionControllerImpl::SetSessionInfo(mojom::SessionInfoPtr info) {
   can_lock_ = info->can_lock_screen;
   should_lock_screen_automatically_ = info->should_lock_screen_automatically;
   is_running_in_app_mode_ = info->is_running_in_app_mode;
@@ -325,7 +329,8 @@
   SetSessionState(info->state);
 }
 
-void SessionController::UpdateUserSession(mojom::UserSessionPtr user_session) {
+void SessionControllerImpl::UpdateUserSession(
+    mojom::UserSessionPtr user_session) {
   auto it =
       std::find_if(user_sessions_.begin(), user_sessions_.end(),
                    [&user_session](const mojom::UserSessionPtr& session) {
@@ -343,7 +348,7 @@
   UpdateLoginStatus();
 }
 
-void SessionController::SetUserSessionOrder(
+void SessionControllerImpl::SetUserSessionOrder(
     const std::vector<uint32_t>& user_session_order) {
   DCHECK_EQ(user_sessions_.size(), user_session_order.size());
 
@@ -401,7 +406,7 @@
   }
 }
 
-void SessionController::PrepareForLock(PrepareForLockCallback callback) {
+void SessionControllerImpl::PrepareForLock(PrepareForLockCallback callback) {
   // If the active window is fullscreen, exit fullscreen to avoid the web page
   // or app mimicking the lock screen. Do not exit fullscreen if the shelf is
   // visible while in fullscreen because the shelf makes it harder for a web
@@ -416,7 +421,7 @@
   std::move(callback).Run();
 }
 
-void SessionController::StartLock(StartLockCallback callback) {
+void SessionControllerImpl::StartLock(StartLockCallback callback) {
   DCHECK(start_lock_callback_.is_null());
   start_lock_callback_ = std::move(callback);
 
@@ -424,16 +429,16 @@
       Shell::Get()->lock_state_controller();
 
   lock_state_controller->SetLockScreenDisplayedCallback(
-      base::Bind(&SessionController::OnLockAnimationFinished,
-                 weak_ptr_factory_.GetWeakPtr()));
+      base::BindOnce(&SessionControllerImpl::OnLockAnimationFinished,
+                     weak_ptr_factory_.GetWeakPtr()));
   lock_state_controller->OnStartingLock();
 }
 
-void SessionController::NotifyChromeLockAnimationsComplete() {
+void SessionControllerImpl::NotifyChromeLockAnimationsComplete() {
   Shell::Get()->power_event_observer()->OnLockAnimationsComplete();
 }
 
-void SessionController::RunUnlockAnimation(
+void SessionControllerImpl::RunUnlockAnimation(
     RunUnlockAnimationCallback callback) {
   is_unlocking_ = true;
 
@@ -443,20 +448,20 @@
         std::move(callback));
 }
 
-void SessionController::NotifyChromeTerminating() {
+void SessionControllerImpl::NotifyChromeTerminating() {
   for (auto& observer : observers_)
     observer.OnChromeTerminating();
 }
 
-void SessionController::SetSessionLengthLimit(base::TimeDelta length_limit,
-                                              base::TimeTicks start_time) {
+void SessionControllerImpl::SetSessionLengthLimit(base::TimeDelta length_limit,
+                                                  base::TimeTicks start_time) {
   session_length_limit_ = length_limit;
   session_start_time_ = start_time;
   for (auto& observer : observers_)
     observer.OnSessionLengthLimitChanged();
 }
 
-void SessionController::CanSwitchActiveUser(
+void SessionControllerImpl::CanSwitchActiveUser(
     CanSwitchActiveUserCallback callback) {
   // Cancel overview mode when switching user profiles.
   OverviewController* controller = Shell::Get()->overview_controller();
@@ -468,22 +473,22 @@
       ->CanSwitchAwayFromActiveUser(std::move(callback));
 }
 
-void SessionController::ShowMultiprofilesIntroDialog(
+void SessionControllerImpl::ShowMultiprofilesIntroDialog(
     ShowMultiprofilesIntroDialogCallback callback) {
   MultiprofilesIntroDialog::Show(std::move(callback));
 }
 
-void SessionController::ShowTeleportWarningDialog(
+void SessionControllerImpl::ShowTeleportWarningDialog(
     ShowTeleportWarningDialogCallback callback) {
   TeleportWarningDialog::Show(std::move(callback));
 }
 
-void SessionController::ShowMultiprofilesSessionAbortedDialog(
+void SessionControllerImpl::ShowMultiprofilesSessionAbortedDialog(
     const std::string& user_email) {
   SessionAbortedDialog::Show(user_email);
 }
 
-void SessionController::AddSessionActivationObserverForAccountId(
+void SessionControllerImpl::AddSessionActivationObserverForAccountId(
     const AccountId& account_id,
     mojom::SessionActivationObserverPtr observer) {
   bool locked = state_ == SessionState::LOCKED;
@@ -495,34 +500,34 @@
       account_id, std::move(observer));
 }
 
-void SessionController::ClearUserSessionsForTest() {
+void SessionControllerImpl::ClearUserSessionsForTest() {
   user_sessions_.clear();
   last_active_user_prefs_ = nullptr;
   active_session_id_ = 0u;
   primary_session_id_ = 0u;
 }
 
-void SessionController::FlushMojoForTest() {
+void SessionControllerImpl::FlushMojoForTest() {
   client_.FlushForTesting();
 }
 
-void SessionController::LockScreenAndFlushForTest() {
+void SessionControllerImpl::LockScreenAndFlushForTest() {
   LockScreen();
   FlushMojoForTest();
 }
 
-void SessionController::SetSigninScreenPrefServiceForTest(
+void SessionControllerImpl::SetSigninScreenPrefServiceForTest(
     std::unique_ptr<PrefService> prefs) {
   OnSigninScreenPrefServiceInitialized(std::move(prefs));
 }
 
-void SessionController::ProvideUserPrefServiceForTest(
+void SessionControllerImpl::ProvideUserPrefServiceForTest(
     const AccountId& account_id,
     std::unique_ptr<PrefService> pref_service) {
   OnProfilePrefServiceInitialized(account_id, std::move(pref_service));
 }
 
-void SessionController::SetIsDemoSession() {
+void SessionControllerImpl::SetIsDemoSession() {
   if (is_demo_session_)
     return;
 
@@ -532,7 +537,7 @@
   message_center::MessageCenter::Get()->SetQuietMode(true);
 }
 
-void SessionController::SetSessionState(SessionState state) {
+void SessionControllerImpl::SetSessionState(SessionState state) {
   if (state_ == state)
     return;
 
@@ -565,7 +570,7 @@
     EnsureActiveWindowAfterUnblockingUserSession();
 }
 
-void SessionController::AddUserSession(mojom::UserSessionPtr user_session) {
+void SessionControllerImpl::AddUserSession(mojom::UserSessionPtr user_session) {
   const AccountId account_id(user_session->user_info->account_id);
 
   if (primary_session_id_ == 0u)
@@ -585,7 +590,7 @@
 
     prefs::ConnectToPrefService(
         std::move(pref_connector), std::move(pref_registry),
-        base::Bind(&SessionController::OnProfilePrefServiceInitialized,
+        base::Bind(&SessionControllerImpl::OnProfilePrefServiceInitialized,
                    weak_ptr_factory_.GetWeakPtr(), account_id));
   }
 
@@ -594,7 +599,7 @@
     observer.OnUserSessionAdded(account_id);
 }
 
-LoginStatus SessionController::CalculateLoginStatus() const {
+LoginStatus SessionControllerImpl::CalculateLoginStatus() const {
   // TODO(jamescook|xiyuan): There is not a 1:1 mapping of SessionState to
   // LoginStatus. Fix the cases that don't match. http://crbug.com/701193
   switch (state_) {
@@ -618,7 +623,8 @@
   return LoginStatus::NOT_LOGGED_IN;
 }
 
-LoginStatus SessionController::CalculateLoginStatusForActiveSession() const {
+LoginStatus SessionControllerImpl::CalculateLoginStatusForActiveSession()
+    const {
   DCHECK(state_ == SessionState::ACTIVE);
 
   if (user_sessions_.empty())  // Can be empty in tests.
@@ -652,7 +658,7 @@
   return LoginStatus::USER;
 }
 
-void SessionController::UpdateLoginStatus() {
+void SessionControllerImpl::UpdateLoginStatus() {
   const LoginStatus new_login_status = CalculateLoginStatus();
   if (new_login_status == login_status_)
     return;
@@ -662,12 +668,12 @@
     observer.OnLoginStatusChanged(login_status_);
 }
 
-void SessionController::OnLockAnimationFinished() {
+void SessionControllerImpl::OnLockAnimationFinished() {
   if (!start_lock_callback_.is_null())
     std::move(start_lock_callback_).Run(true /* locked */);
 }
 
-void SessionController::ConnectToSigninScreenPrefService() {
+void SessionControllerImpl::ConnectToSigninScreenPrefService() {
   DCHECK(!signin_screen_prefs_requested_);
 
   // Null in tests.
@@ -685,11 +691,11 @@
       mojo::MakeRequest(&pref_connector));
   prefs::ConnectToPrefService(
       std::move(pref_connector), std::move(pref_registry),
-      base::Bind(&SessionController::OnSigninScreenPrefServiceInitialized,
+      base::Bind(&SessionControllerImpl::OnSigninScreenPrefServiceInitialized,
                  weak_ptr_factory_.GetWeakPtr()));
 }
 
-void SessionController::OnSigninScreenPrefServiceInitialized(
+void SessionControllerImpl::OnSigninScreenPrefServiceInitialized(
     std::unique_ptr<PrefService> pref_service) {
   // |pref_service| can be null when running standalone without chrome.
   if (!pref_service)
@@ -712,7 +718,7 @@
   }
 }
 
-void SessionController::OnProfilePrefServiceInitialized(
+void SessionControllerImpl::OnProfilePrefServiceInitialized(
     const AccountId& account_id,
     std::unique_ptr<PrefService> pref_service) {
   // |pref_service| can be null when running standalone without chrome.
@@ -731,7 +737,7 @@
   }
 }
 
-void SessionController::MaybeNotifyOnActiveUserPrefServiceChanged() {
+void SessionControllerImpl::MaybeNotifyOnActiveUserPrefServiceChanged() {
   DCHECK(last_active_user_prefs_);
 
   if (!signin_screen_prefs_) {
@@ -746,8 +752,8 @@
     observer.OnActiveUserPrefServiceChanged(last_active_user_prefs_);
 }
 
-void SessionController::EnsureActiveWindowAfterUnblockingUserSession() {
-  // This happens only in tests (See SessionControllerTest).
+void SessionControllerImpl::EnsureActiveWindowAfterUnblockingUserSession() {
+  // This happens only in tests (See SessionControllerImplTest).
   if (!Shell::HasInstance())
     return;
 
diff --git a/ash/session/session_controller.h b/ash/session/session_controller_impl.h
similarity index 96%
rename from ash/session/session_controller.h
rename to ash/session/session_controller_impl.h
index 70930111..7e941ad 100644
--- a/ash/session/session_controller.h
+++ b/ash/session/session_controller_impl.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ASH_SESSION_SESSION_CONTROLLER_H_
-#define ASH_SESSION_SESSION_CONTROLLER_H_
+#ifndef ASH_SESSION_SESSION_CONTROLLER_IMPL_H_
+#define ASH_SESSION_SESSION_CONTROLLER_IMPL_H_
 
 #include <stdint.h>
 
@@ -35,14 +35,14 @@
 // Implements mojom::SessionController to cache session related info such as
 // session state, meta data about user sessions to support synchronous
 // queries for ash.
-class ASH_EXPORT SessionController : public mojom::SessionController {
+class ASH_EXPORT SessionControllerImpl : public mojom::SessionController {
  public:
   // |connector| is used to connect to other services for connecting to per-user
   // PrefServices. If |connector| is null, no per-user PrefService instances
   // will be created. In tests, ProvideUserPrefServiceForTest() can be used to
   // inject a PrefService for a user when |connector| is null.
-  explicit SessionController(service_manager::Connector* connector);
-  ~SessionController() override;
+  explicit SessionControllerImpl(service_manager::Connector* connector);
+  ~SessionControllerImpl() override;
 
   base::TimeDelta session_length_limit() const { return session_length_limit_; }
   base::TimeTicks session_start_time() const { return session_start_time_; }
@@ -326,11 +326,11 @@
   std::map<AccountId, std::unique_ptr<PrefService>> per_user_prefs_;
   PrefService* last_active_user_prefs_ = nullptr;
 
-  base::WeakPtrFactory<SessionController> weak_ptr_factory_;
+  base::WeakPtrFactory<SessionControllerImpl> weak_ptr_factory_;
 
-  DISALLOW_COPY_AND_ASSIGN(SessionController);
+  DISALLOW_COPY_AND_ASSIGN(SessionControllerImpl);
 };
 
 }  // namespace ash
 
-#endif  // ASH_SESSION_SESSION_CONTROLLER_H_
+#endif  // ASH_SESSION_SESSION_CONTROLLER_IMPL_H_
diff --git a/ash/session/session_controller_unittest.cc b/ash/session/session_controller_impl_unittest.cc
similarity index 93%
rename from ash/session/session_controller_unittest.cc
rename to ash/session/session_controller_impl_unittest.cc
index 6450d70e..540c38a 100644
--- a/ash/session/session_controller_unittest.cc
+++ b/ash/session/session_controller_impl_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 
 #include <memory>
 #include <string>
@@ -94,14 +94,14 @@
   info->state = SessionState::LOGIN_PRIMARY;
 }
 
-class SessionControllerTest : public testing::Test {
+class SessionControllerImplTest : public testing::Test {
  public:
-  SessionControllerTest() = default;
-  ~SessionControllerTest() override = default;
+  SessionControllerImplTest() = default;
+  ~SessionControllerImplTest() override = default;
 
   // testing::Test:
   void SetUp() override {
-    controller_ = std::make_unique<SessionController>(nullptr);
+    controller_ = std::make_unique<SessionControllerImpl>(nullptr);
     controller_->AddObserver(&observer_);
   }
 
@@ -134,18 +134,18 @@
     return emails;
   }
 
-  SessionController* controller() { return controller_.get(); }
+  SessionControllerImpl* controller() { return controller_.get(); }
   const TestSessionObserver* observer() const { return &observer_; }
 
  private:
-  std::unique_ptr<SessionController> controller_;
+  std::unique_ptr<SessionControllerImpl> controller_;
   TestSessionObserver observer_;
 
-  DISALLOW_COPY_AND_ASSIGN(SessionControllerTest);
+  DISALLOW_COPY_AND_ASSIGN(SessionControllerImplTest);
 };
 
 // Tests that the simple session info is reflected properly.
-TEST_F(SessionControllerTest, SimpleSessionInfo) {
+TEST_F(SessionControllerImplTest, SimpleSessionInfo) {
   mojom::SessionInfo info;
   FillDefaultSessionInfo(&info);
   SetSessionInfo(info);
@@ -174,7 +174,7 @@
   EXPECT_TRUE(controller()->IsRunningInAppMode());
 }
 
-TEST_F(SessionControllerTest, OnFirstSessionStarted) {
+TEST_F(SessionControllerImplTest, OnFirstSessionStarted) {
   // Simulate chrome starting a user session.
   mojom::SessionInfo info;
   FillDefaultSessionInfo(&info);
@@ -187,7 +187,7 @@
 }
 
 // Tests that the CanLockScreen is only true with an active user session.
-TEST_F(SessionControllerTest, CanLockScreen) {
+TEST_F(SessionControllerImplTest, CanLockScreen) {
   mojom::SessionInfo info;
   FillDefaultSessionInfo(&info);
   ASSERT_TRUE(info.can_lock_screen);  // Check can_lock_screen default to true.
@@ -203,7 +203,7 @@
 }
 
 // Tests that AddUserSessionPolicy is set properly.
-TEST_F(SessionControllerTest, AddUserPolicy) {
+TEST_F(SessionControllerImplTest, AddUserPolicy) {
   const AddUserSessionPolicy kTestCases[] = {
       AddUserSessionPolicy::ALLOWED,
       AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER,
@@ -222,7 +222,7 @@
 }
 
 // Tests that session state can be set and reflected properly.
-TEST_F(SessionControllerTest, SessionState) {
+TEST_F(SessionControllerImplTest, SessionState) {
   const struct {
     SessionState state;
     bool expected_is_screen_locked;
@@ -256,7 +256,7 @@
 }
 
 // Tests that LoginStatus is computed correctly for most session states.
-TEST_F(SessionControllerTest, GetLoginStatus) {
+TEST_F(SessionControllerImplTest, GetLoginStatus) {
   const struct {
     SessionState state;
     LoginStatus expected_status;
@@ -280,7 +280,7 @@
 }
 
 // Tests that LoginStatus is computed correctly for active sessions.
-TEST_F(SessionControllerTest, GetLoginStateForActiveSession) {
+TEST_F(SessionControllerImplTest, GetLoginStateForActiveSession) {
   // Simulate an active user session.
   mojom::SessionInfo info;
   FillDefaultSessionInfo(&info);
@@ -316,7 +316,7 @@
   }
 }
 
-TEST_F(SessionControllerTest, GetLoginStateForOwner) {
+TEST_F(SessionControllerImplTest, GetLoginStateForOwner) {
   // Simulate an active user session.
   mojom::SessionInfo info;
   FillDefaultSessionInfo(&info);
@@ -337,7 +337,7 @@
 }
 
 // Tests that user sessions can be set and updated.
-TEST_F(SessionControllerTest, UserSessions) {
+TEST_F(SessionControllerImplTest, UserSessions) {
   EXPECT_FALSE(controller()->IsActiveUserSessionStarted());
 
   UpdateSession(1u, "user1@test.com");
@@ -360,7 +360,7 @@
 }
 
 // Tests that user sessions can be ordered.
-TEST_F(SessionControllerTest, ActiveSession) {
+TEST_F(SessionControllerImplTest, ActiveSession) {
   UpdateSession(1u, "user1@test.com");
   UpdateSession(2u, "user2@test.com");
   EXPECT_EQ("user1@test.com",
@@ -391,7 +391,8 @@
 // Tests that user session is unblocked with a running unlock animation so that
 // focus rules can find a correct activatable window after screen lock is
 // dismissed.
-TEST_F(SessionControllerTest, UserSessionUnblockedWithRunningUnlockAnimation) {
+TEST_F(SessionControllerImplTest,
+       UserSessionUnblockedWithRunningUnlockAnimation) {
   mojom::SessionInfo info;
   FillDefaultSessionInfo(&info);
 
@@ -401,7 +402,7 @@
   EXPECT_TRUE(controller()->IsUserSessionBlocked());
 
   // Mark a running unlock animation unblocks user session.
-  controller()->RunUnlockAnimation(base::Closure());
+  controller()->RunUnlockAnimation(base::OnceClosure());
   EXPECT_FALSE(controller()->IsUserSessionBlocked());
 
   const struct {
@@ -419,7 +420,7 @@
     SetSessionInfo(info);
 
     // Mark a running unlock animation.
-    controller()->RunUnlockAnimation(base::Closure());
+    controller()->RunUnlockAnimation(base::OnceClosure());
 
     EXPECT_EQ(test_case.expected_is_user_session_blocked,
               controller()->IsUserSessionBlocked())
@@ -427,7 +428,7 @@
   }
 }
 
-TEST_F(SessionControllerTest, IsUserSupervised) {
+TEST_F(SessionControllerImplTest, IsUserSupervised) {
   mojom::UserSessionPtr session = mojom::UserSession::New();
   session->session_id = 1u;
   session->user_info = mojom::UserInfo::New();
@@ -437,7 +438,7 @@
   EXPECT_TRUE(controller()->IsUserSupervised());
 }
 
-TEST_F(SessionControllerTest, IsUserChild) {
+TEST_F(SessionControllerImplTest, IsUserChild) {
   mojom::UserSessionPtr session = mojom::UserSession::New();
   session->session_id = 1u;
   session->user_info = mojom::UserInfo::New();
@@ -450,17 +451,17 @@
   EXPECT_TRUE(controller()->IsUserSupervised());
 }
 
-using SessionControllerPrefsTest = NoSessionAshTestBase;
+using SessionControllerImplPrefsTest = NoSessionAshTestBase;
 
 // Verifies that ShellObserver is notified for PrefService changes.
-TEST_F(SessionControllerPrefsTest, Observer) {
+TEST_F(SessionControllerImplPrefsTest, Observer) {
   constexpr char kUser1[] = "user1@test.com";
   constexpr char kUser2[] = "user2@test.com";
   const AccountId kUserAccount1 = AccountId::FromUserEmail(kUser1);
   const AccountId kUserAccount2 = AccountId::FromUserEmail(kUser2);
 
   TestSessionObserver observer;
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   controller->AddObserver(&observer);
 
   // Setup 2 users.
@@ -522,7 +523,7 @@
   controller->RemoveObserver(&observer);
 }
 
-TEST_F(SessionControllerTest, GetUserType) {
+TEST_F(SessionControllerImplTest, GetUserType) {
   // Child accounts
   mojom::UserSessionPtr session = mojom::UserSession::New();
   session->session_id = 1u;
@@ -540,7 +541,7 @@
   EXPECT_EQ(user_manager::USER_TYPE_REGULAR, controller()->GetUserType());
 }
 
-TEST_F(SessionControllerTest, IsUserPrimary) {
+TEST_F(SessionControllerImplTest, IsUserPrimary) {
   controller()->ClearUserSessionsForTest();
 
   // The first added user is a primary user
@@ -562,7 +563,7 @@
   EXPECT_FALSE(controller()->IsUserPrimary());
 }
 
-TEST_F(SessionControllerTest, IsUserFirstLogin) {
+TEST_F(SessionControllerImplTest, IsUserFirstLogin) {
   mojom::UserSessionPtr session = mojom::UserSession::New();
   session->session_id = 1u;
   session->user_info = mojom::UserInfo::New();
@@ -636,8 +637,8 @@
   void SwitchUser(ActionType action) {
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(&CloseMessageBox, action));
-    Shell::Get()->session_controller()->CanSwitchActiveUser(
-        base::Bind(&CanSwitchUserTest::SwitchCallback, base::Unretained(this)));
+    Shell::Get()->session_controller()->CanSwitchActiveUser(base::BindOnce(
+        &CanSwitchUserTest::SwitchCallback, base::Unretained(this)));
     base::RunLoop().RunUntilIdle();
   }
 
@@ -813,18 +814,18 @@
   EXPECT_EQ(1, switch_callback_hit_count());
 }
 
-using SessionControllerUnblockTest = NoSessionAshTestBase;
+using SessionControllerImplUnblockTest = NoSessionAshTestBase;
 
-TEST_F(SessionControllerUnblockTest, ActiveWindowAfterUnblocking) {
+TEST_F(SessionControllerImplUnblockTest, ActiveWindowAfterUnblocking) {
   EXPECT_TRUE(Shell::Get()->session_controller()->IsUserSessionBlocked());
   auto widget = CreateTestWidget();
-  // |widget| should not be active as it is blocked by SessionController.
+  // |widget| should not be active as it is blocked by SessionControllerImpl.
   EXPECT_FALSE(widget->IsActive());
   SimulateUserLogin("user@test.com");
   EXPECT_FALSE(Shell::Get()->session_controller()->IsUserSessionBlocked());
 
-  // |widget| should now be active as SessionController no longer is blocking
-  // windows from becoming active.
+  // |widget| should now be active as SessionControllerImpl no longer is
+  // blocking windows from becoming active.
   EXPECT_TRUE(widget->IsActive());
 }
 
diff --git a/ash/session/session_observer.cc b/ash/session/session_observer.cc
index a020841f..740652bf 100644
--- a/ash/session/session_observer.cc
+++ b/ash/session/session_observer.cc
@@ -4,7 +4,7 @@
 
 #include "ash/session/session_observer.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 
 namespace ash {
diff --git a/ash/session/session_observer.h b/ash/session/session_observer.h
index c676c13d..98e7b4c 100644
--- a/ash/session/session_observer.h
+++ b/ash/session/session_observer.h
@@ -62,8 +62,8 @@
 
 // A class to attach / detach an object as a session state observer.
 //
-// NOTE: Both ash::Shell and ash::SessionController must outlive your object.
-// You may find it clearer to manually add and remove your observer.
+// NOTE: Both ash::Shell and ash::SessionControllerImpl must outlive your
+// object. You may find it clearer to manually add and remove your observer.
 class ASH_EXPORT ScopedSessionObserver {
  public:
   explicit ScopedSessionObserver(SessionObserver* observer);
diff --git a/ash/session/test_session_controller_client.cc b/ash/session/test_session_controller_client.cc
index e45f5e5..d226ee29 100644
--- a/ash/session/test_session_controller_client.cc
+++ b/ash/session/test_session_controller_client.cc
@@ -9,7 +9,7 @@
 
 #include "ash/login_status.h"
 #include "ash/public/cpp/session_types.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/logging.h"
 #include "base/strings/stringprintf.h"
@@ -41,7 +41,7 @@
 }
 
 TestSessionControllerClient::TestSessionControllerClient(
-    SessionController* controller)
+    SessionControllerImpl* controller)
     : controller_(controller), binding_(this) {
   DCHECK(controller_);
   Reset();
diff --git a/ash/session/test_session_controller_client.h b/ash/session/test_session_controller_client.h
index 12e3610..d8202a8 100644
--- a/ash/session/test_session_controller_client.h
+++ b/ash/session/test_session_controller_client.h
@@ -21,7 +21,7 @@
 namespace ash {
 
 enum class AddUserSessionPolicy;
-class SessionController;
+class SessionControllerImpl;
 
 // Implement SessionControllerClient mojo interface to simulate chrome behavior
 // in tests. This breaks the ash/chrome dependency to allow testing ash code in
@@ -32,7 +32,7 @@
 // not run BrowserMain, e.g. testing::Test based test.
 class TestSessionControllerClient : public ash::mojom::SessionControllerClient {
  public:
-  explicit TestSessionControllerClient(SessionController* controller);
+  explicit TestSessionControllerClient(SessionControllerImpl* controller);
   ~TestSessionControllerClient() override;
 
   static void DisableAutomaticallyProvideSigninPref();
@@ -94,7 +94,7 @@
   void EmitAshInitialized() override;
 
  private:
-  SessionController* const controller_;
+  SessionControllerImpl* const controller_;
 
   // Binds to the client interface.
   mojo::Binding<ash::mojom::SessionControllerClient> binding_;
diff --git a/ash/shelf/app_list_button_controller.cc b/ash/shelf/app_list_button_controller.cc
index 5351357..705ea72 100644
--- a/ash/shelf/app_list_button_controller.cc
+++ b/ash/shelf/app_list_button_controller.cc
@@ -7,7 +7,7 @@
 #include "ash/app_list/app_list_controller_impl.h"
 #include "ash/assistant/assistant_controller.h"
 #include "ash/home_screen/home_screen_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/app_list_button.h"
 #include "ash/shelf/assistant_overlay.h"
 #include "ash/shelf/shelf.h"
diff --git a/ash/shelf/app_list_button_unittest.cc b/ash/shelf/app_list_button_unittest.cc
index 2698d5f7..8c5a2506 100644
--- a/ash/shelf/app_list_button_unittest.cc
+++ b/ash/shelf/app_list_button_unittest.cc
@@ -17,7 +17,7 @@
 #include "ash/kiosk_next/mock_kiosk_next_shell_client.h"
 #include "ash/public/cpp/ash_features.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shelf/shelf_view.h"
diff --git a/ash/shelf/login_shelf_view.cc b/ash/shelf/login_shelf_view.cc
index c3332b4..9af5367 100644
--- a/ash/shelf/login_shelf_view.cc
+++ b/ash/shelf/login_shelf_view.cc
@@ -19,7 +19,7 @@
 #include "ash/public/interfaces/kiosk_app_info.mojom.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shelf/shelf_widget.h"
diff --git a/ash/shelf/login_shelf_view_unittest.cc b/ash/shelf/login_shelf_view_unittest.cc
index 15bcf6b..6693a7f8 100644
--- a/ash/shelf/login_shelf_view_unittest.cc
+++ b/ash/shelf/login_shelf_view_unittest.cc
@@ -16,7 +16,7 @@
 #include "ash/login/ui/views_utils.h"
 #include "ash/public/interfaces/kiosk_app_info.mojom.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_widget.h"
diff --git a/ash/shelf/shelf_alignment_menu.cc b/ash/shelf/shelf_alignment_menu.cc
index bc799528..0ad61cae 100644
--- a/ash/shelf/shelf_alignment_menu.cc
+++ b/ash/shelf/shelf_alignment_menu.cc
@@ -8,7 +8,7 @@
 #include "ash/metrics/user_metrics_recorder.h"
 #include "ash/public/cpp/shelf_prefs.h"
 #include "ash/public/cpp/shelf_types.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
diff --git a/ash/shelf/shelf_context_menu_model.cc b/ash/shelf/shelf_context_menu_model.cc
index 28fde93..708f1f83 100644
--- a/ash/shelf/shelf_context_menu_model.cc
+++ b/ash/shelf/shelf_context_menu_model.cc
@@ -19,7 +19,7 @@
 #include "ash/public/cpp/shelf_types.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/wallpaper/wallpaper_controller.h"
diff --git a/ash/shelf/shelf_controller.cc b/ash/shelf/shelf_controller.cc
index a6326d4..1237c0c 100644
--- a/ash/shelf/shelf_controller.cc
+++ b/ash/shelf/shelf_controller.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/shelf_item_delegate.h"
 #include "ash/public/cpp/shelf_prefs.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/home_button_delegate.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
@@ -52,7 +52,8 @@
   // TODO(jamescook): The session state check should not be necessary, but
   // otherwise this wrongly tries to set the alignment on a secondary display
   // during login before the ShelfLockingManager is created.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   PrefService* prefs = session_controller->GetLastActiveUserPrefService();
   if (!prefs || !session_controller->IsActiveUserSessionStarted())
     return;
@@ -73,7 +74,8 @@
   // TODO(jamescook): The session state check should not be necessary, but
   // otherwise this wrongly tries to set the alignment on a secondary display
   // during login before the ShelfLockingManager is created.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   PrefService* prefs = session_controller->GetLastActiveUserPrefService();
   if (!prefs || !session_controller->IsActiveUserSessionStarted())
     return;
diff --git a/ash/shelf/shelf_controller_unittest.cc b/ash/shelf/shelf_controller_unittest.cc
index a732392..fdafdb8 100644
--- a/ash/shelf/shelf_controller_unittest.cc
+++ b/ash/shelf/shelf_controller_unittest.cc
@@ -13,7 +13,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/public/interfaces/shelf.mojom.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 2c9232a3..130e4d3 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -22,7 +22,7 @@
 #include "ash/root_window_controller.h"
 #include "ash/rotator/screen_rotation_animator.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shelf/shelf_layout_manager_observer.h"
@@ -450,7 +450,7 @@
 bool ShelfLayoutManager::ProcessGestureEvent(
     const ui::GestureEvent& event_in_screen) {
   // The gestures are disabled in the lock/login screen.
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   if (!controller->NumberOfLoggedInUsers() || controller->IsScreenLocked())
     return false;
 
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc
index 3aad93f..27ecb7a 100644
--- a/ash/shelf/shelf_layout_manager_unittest.cc
+++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -22,7 +22,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/app_list_button.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
diff --git a/ash/shelf/shelf_locking_manager.cc b/ash/shelf/shelf_locking_manager.cc
index d6e26fdd..dfd961d 100644
--- a/ash/shelf/shelf_locking_manager.cc
+++ b/ash/shelf/shelf_locking_manager.cc
@@ -4,7 +4,7 @@
 
 #include "ash/shelf/shelf_locking_manager.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/wm/lock_state_controller.h"
@@ -17,7 +17,7 @@
       scoped_session_observer_(this) {
   DCHECK(shelf_);
   Shell::Get()->lock_state_controller()->AddObserver(this);
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   session_locked_ =
       controller->GetSessionState() != session_manager::SessionState::ACTIVE;
   screen_locked_ = controller->IsScreenLocked();
diff --git a/ash/shelf/shelf_unittest.cc b/ash/shelf/shelf_unittest.cc
index c775c74..d5b6df62 100644
--- a/ash/shelf/shelf_unittest.cc
+++ b/ash/shelf/shelf_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/shelf_model.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/overflow_button.h"
 #include "ash/shelf/shelf.h"
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 5214fa7..fcc0e76 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -23,7 +23,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/app_list_button.h"
 #include "ash/shelf/back_button.h"
 #include "ash/shelf/overflow_bubble.h"
diff --git a/ash/shelf/shelf_widget.cc b/ash/shelf/shelf_widget.cc
index 8719a8d..f2f3a33 100644
--- a/ash/shelf/shelf_widget.cc
+++ b/ash/shelf/shelf_widget.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/app_list_button.h"
 #include "ash/shelf/login_shelf_view.h"
 #include "ash/shelf/overflow_bubble.h"
diff --git a/ash/shelf/shelf_window_targeter.cc b/ash/shelf/shelf_window_targeter.cc
index b62f7e83..4f0cab39 100644
--- a/ash/shelf/shelf_window_targeter.cc
+++ b/ash/shelf/shelf_window_targeter.cc
@@ -7,7 +7,7 @@
 #include "ash/public/cpp/session_types.h"
 #include "ash/public/cpp/shelf_types.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shelf/shelf_widget.h"
diff --git a/ash/shelf/shelf_window_watcher_unittest.cc b/ash/shelf/shelf_window_watcher_unittest.cc
index f83bc90..0e2b6f6 100644
--- a/ash/shelf/shelf_window_watcher_unittest.cc
+++ b/ash/shelf/shelf_window_watcher_unittest.cc
@@ -11,7 +11,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/window_factory.h"
diff --git a/ash/shell.cc b/ash/shell.cc
index 34bc566..ee3f1de 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -82,7 +82,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
 #include "ash/screenshot_delegate.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_controller.h"
 #include "ash/shelf/shelf_window_watcher.h"
@@ -657,7 +657,7 @@
       locale_update_controller_(std::make_unique<LocaleUpdateController>()),
       media_controller_(std::make_unique<MediaController>(connector)),
       new_window_controller_(std::make_unique<NewWindowController>()),
-      session_controller_(std::make_unique<SessionController>(connector)),
+      session_controller_(std::make_unique<SessionControllerImpl>(connector)),
       note_taking_controller_(std::make_unique<NoteTakingController>()),
       shell_delegate_(std::move(shell_delegate)),
       shell_state_(std::make_unique<ShellState>()),
diff --git a/ash/shell.h b/ash/shell.h
index 653fbb70..147e883 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -178,7 +178,7 @@
 class ScreenPinningController;
 class ScreenPositionController;
 class ScreenSwitchCheckController;
-class SessionController;
+class SessionControllerImpl;
 class ShelfController;
 class ShelfModel;
 class ShelfWindowWatcher;
@@ -509,7 +509,9 @@
   ScreenSwitchCheckController* screen_switch_check_controller() {
     return screen_switch_check_controller_.get();
   }
-  SessionController* session_controller() { return session_controller_.get(); }
+  SessionControllerImpl* session_controller() {
+    return session_controller_.get();
+  }
   ::wm::ShadowController* shadow_controller() {
     return shadow_controller_.get();
   }
@@ -761,7 +763,7 @@
       multidevice_notification_presenter_;
   std::unique_ptr<NewWindowController> new_window_controller_;
   std::unique_ptr<ResizeShadowController> resize_shadow_controller_;
-  std::unique_ptr<SessionController> session_controller_;
+  std::unique_ptr<SessionControllerImpl> session_controller_;
   std::unique_ptr<NightLightController> night_light_controller_;
   std::unique_ptr<NoteTakingController> note_taking_controller_;
   std::unique_ptr<PolicyRecommendationRestorer> policy_recommendation_restorer_;
diff --git a/ash/shell/example_app_list_client.cc b/ash/shell/example_app_list_client.cc
index 771021b..21df496 100644
--- a/ash/shell/example_app_list_client.cc
+++ b/ash/shell/example_app_list_client.cc
@@ -11,7 +11,7 @@
 #include "ash/app_list/model/app_list_item.h"
 #include "ash/app_list/model/search/search_result.h"
 #include "ash/public/interfaces/constants.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell/example_factory.h"
 #include "ash/shell/toplevel_window.h"
diff --git a/ash/shell/example_session_controller_client.cc b/ash/shell/example_session_controller_client.cc
index de224e4..e95b28b 100644
--- a/ash/shell/example_session_controller_client.cc
+++ b/ash/shell/example_session_controller_client.cc
@@ -18,7 +18,7 @@
 }  // namespace
 
 ExampleSessionControllerClient::ExampleSessionControllerClient(
-    SessionController* controller)
+    SessionControllerImpl* controller)
     : TestSessionControllerClient(controller) {
   DCHECK_EQ(instance, nullptr);
   DCHECK(controller);
diff --git a/ash/shell/example_session_controller_client.h b/ash/shell/example_session_controller_client.h
index 8b5a023..44dff64 100644
--- a/ash/shell/example_session_controller_client.h
+++ b/ash/shell/example_session_controller_client.h
@@ -13,13 +13,13 @@
 
 namespace ash {
 
-class SessionController;
+class SessionControllerImpl;
 
 namespace shell {
 
 class ExampleSessionControllerClient : public TestSessionControllerClient {
  public:
-  explicit ExampleSessionControllerClient(SessionController* controller);
+  explicit ExampleSessionControllerClient(SessionControllerImpl* controller);
   ~ExampleSessionControllerClient() override;
 
   static ExampleSessionControllerClient* Get();
diff --git a/ash/shell/lock_view.cc b/ash/shell/lock_view.cc
index c6f06f0..7bb10fa8 100644
--- a/ash/shell/lock_view.cc
+++ b/ash/shell/lock_view.cc
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell/example_factory.h"
 #include "ash/shell/example_session_controller_client.h"
diff --git a/ash/shell/window_type_launcher.cc b/ash/shell/window_type_launcher.cc
index 02fa09a..2380417f 100644
--- a/ash/shell/window_type_launcher.cc
+++ b/ash/shell/window_type_launcher.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell/example_factory.h"
 #include "ash/shell/toplevel_window.h"
diff --git a/ash/shell_unittest.cc b/ash/shell_unittest.cc
index cf3a98a4..46e9e50 100644
--- a/ash/shell_unittest.cc
+++ b/ash/shell_unittest.cc
@@ -16,7 +16,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
 #include "ash/scoped_root_window_for_new_windows.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_layout_manager.h"
@@ -245,7 +245,7 @@
 
     // Simulate real screen locker to change session state to LOCKED
     // when it is shown.
-    SessionController* controller = Shell::Get()->session_controller();
+    SessionControllerImpl* controller = Shell::Get()->session_controller();
     controller->LockScreenAndFlushForTest();
 
     EXPECT_TRUE(controller->IsScreenLocked());
@@ -435,7 +435,7 @@
 }
 
 TEST_F(ShellTest, IsScreenLocked) {
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   controller->LockScreenAndFlushForTest();
   EXPECT_TRUE(controller->IsScreenLocked());
   GetSessionControllerClient()->UnlockScreen();
diff --git a/ash/shutdown_controller.cc b/ash/shutdown_controller.cc
index a06bebd..5aec57e9 100644
--- a/ash/shutdown_controller.cc
+++ b/ash/shutdown_controller.cc
@@ -6,7 +6,7 @@
 
 #include <utility>
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shutdown_reason.h"
 #include "ash/wm/lock_state_controller.h"
diff --git a/ash/system/accessibility/accessibility_feature_pod_controller.cc b/ash/system/accessibility/accessibility_feature_pod_controller.cc
index 0f33f93..251e24e 100644
--- a/ash/system/accessibility/accessibility_feature_pod_controller.cc
+++ b/ash/system/accessibility/accessibility_feature_pod_controller.cc
@@ -7,7 +7,7 @@
 #include "ash/accessibility/accessibility_delegate.h"
 #include "ash/public/cpp/ash_view_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/unified/feature_pod_button.h"
diff --git a/ash/system/accessibility/dictation_button_tray_unittest.cc b/ash/system/accessibility/dictation_button_tray_unittest.cc
index 36a479c..150743a 100644
--- a/ash/system/accessibility/dictation_button_tray_unittest.cc
+++ b/ash/system/accessibility/dictation_button_tray_unittest.cc
@@ -11,7 +11,7 @@
 #include "ash/public/cpp/shelf_types.h"
 #include "ash/root_window_controller.h"
 #include "ash/rotator/screen_rotation_animator.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/status_area_widget.h"
 #include "ash/system/status_area_widget_test_helper.h"
diff --git a/ash/system/accessibility/select_to_speak_tray.cc b/ash/system/accessibility/select_to_speak_tray.cc
index 0a4818f..a5dff64 100644
--- a/ash/system/accessibility/select_to_speak_tray.cc
+++ b/ash/system/accessibility/select_to_speak_tray.cc
@@ -6,7 +6,7 @@
 
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
diff --git a/ash/system/accessibility/tray_accessibility_unittest.cc b/ash/system/accessibility/tray_accessibility_unittest.cc
index d4decd7..3c677a9d 100644
--- a/ash/system/accessibility/tray_accessibility_unittest.cc
+++ b/ash/system/accessibility/tray_accessibility_unittest.cc
@@ -7,7 +7,7 @@
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/tray/detailed_view_delegate.h"
 #include "ash/system/tray/hover_highlight_view.h"
diff --git a/ash/system/bluetooth/bluetooth_feature_pod_controller.cc b/ash/system/bluetooth/bluetooth_feature_pod_controller.cc
index ea07340..ef5f642 100644
--- a/ash/system/bluetooth/bluetooth_feature_pod_controller.cc
+++ b/ash/system/bluetooth/bluetooth_feature_pod_controller.cc
@@ -7,7 +7,7 @@
 #include <utility>
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/bluetooth/tray_bluetooth_helper.h"
@@ -74,7 +74,8 @@
   // * the active user is the primary user, and
   // * the session is not in lock screen
   // The changes will affect the primary user's preferences.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   button_->SetEnabled(!session_controller->IsActiveUserSessionStarted() ||
                       (session_controller->IsUserPrimary() &&
                        !session_controller->IsScreenLocked()));
diff --git a/ash/system/bluetooth/bluetooth_power_controller.cc b/ash/system/bluetooth/bluetooth_power_controller.cc
index a136396..33c11f0 100644
--- a/ash/system/bluetooth/bluetooth_power_controller.cc
+++ b/ash/system/bluetooth/bluetooth_power_controller.cc
@@ -7,7 +7,7 @@
 #include <memory>
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/bind.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/ash/system/bluetooth/bluetooth_power_controller_unittest.cc b/ash/system/bluetooth/bluetooth_power_controller_unittest.cc
index f2254eb..437d0df 100644
--- a/ash/system/bluetooth/bluetooth_power_controller_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_power_controller_unittest.cc
@@ -5,7 +5,7 @@
 #include "ash/system/bluetooth/bluetooth_power_controller.h"
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/ash_test_helper.h"
diff --git a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc b/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc
index a92c17fc..0c3b480 100644
--- a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc
+++ b/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc
@@ -8,7 +8,7 @@
 #include <string>
 #include <utility>
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/bluetooth/bluetooth_detailed_view.h"
 #include "ash/system/bluetooth/tray_bluetooth_helper.h"
diff --git a/ash/system/caps_lock_notification_controller.cc b/ash/system/caps_lock_notification_controller.cc
index 5d749ef..151a5be 100644
--- a/ash/system/caps_lock_notification_controller.cc
+++ b/ash/system/caps_lock_notification_controller.cc
@@ -7,7 +7,7 @@
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "components/prefs/pref_registry_simple.h"
diff --git a/ash/system/ime_menu/ime_menu_tray.cc b/ash/system/ime_menu/ime_menu_tray.cc
index 5ccc86c..e0eebd8 100644
--- a/ash/system/ime_menu/ime_menu_tray.cc
+++ b/ash/system/ime_menu/ime_menu_tray.cc
@@ -11,7 +11,7 @@
 #include "ash/public/cpp/ash_constants.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
diff --git a/ash/system/locale/locale_update_controller.cc b/ash/system/locale/locale_update_controller.cc
index a1b40c0..2d6b0e0c 100644
--- a/ash/system/locale/locale_update_controller.cc
+++ b/ash/system/locale/locale_update_controller.cc
@@ -9,7 +9,7 @@
 
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/public/cpp/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/tray/system_tray_notifier.h"
diff --git a/ash/system/message_center/arc_notification_manager_delegate_impl.cc b/ash/system/message_center/arc_notification_manager_delegate_impl.cc
index b31f6ad..66430f0 100644
--- a/ash/system/message_center/arc_notification_manager_delegate_impl.cc
+++ b/ash/system/message_center/arc_notification_manager_delegate_impl.cc
@@ -6,7 +6,7 @@
 
 #include "ash/login_status.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/message_center/message_center_controller.h"
 #include "ash/system/status_area_widget.h"
diff --git a/ash/system/message_center/ash_message_center_lock_screen_controller.cc b/ash/system/message_center/ash_message_center_lock_screen_controller.cc
index a75e8730..6c76e5d62 100644
--- a/ash/system/message_center/ash_message_center_lock_screen_controller.cc
+++ b/ash/system/message_center/ash_message_center_lock_screen_controller.cc
@@ -7,7 +7,7 @@
 #include "ash/login/ui/lock_screen.h"
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
diff --git a/ash/system/message_center/inactive_user_notification_blocker.cc b/ash/system/message_center/inactive_user_notification_blocker.cc
index 9b432926..22ac51d 100644
--- a/ash/system/message_center/inactive_user_notification_blocker.cc
+++ b/ash/system/message_center/inactive_user_notification_blocker.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/message_center/inactive_user_notification_blocker.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "components/account_id/account_id.h"
 #include "ui/message_center/message_center.h"
diff --git a/ash/system/message_center/message_center_controller.cc b/ash/system/message_center/message_center_controller.cc
index c380a89..7bcd534 100644
--- a/ash/system/message_center/message_center_controller.cc
+++ b/ash/system/message_center/message_center_controller.cc
@@ -9,7 +9,7 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/message_center/arc_notification_manager_delegate_impl.h"
diff --git a/ash/system/message_center/session_state_notification_blocker.cc b/ash/system/message_center/session_state_notification_blocker.cc
index 17638a84..79067da 100644
--- a/ash/system/message_center/session_state_notification_blocker.cc
+++ b/ash/system/message_center/session_state_notification_blocker.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/message_center/session_state_notification_blocker.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/message_center/ash_message_center_lock_screen_controller.h"
 #include "ui/message_center/message_center.h"
@@ -16,14 +16,14 @@
 namespace {
 
 bool CalculateShouldShowNotification() {
-  SessionController* const session_controller =
+  SessionControllerImpl* const session_controller =
       Shell::Get()->session_controller();
 
   return !session_controller->IsRunningInAppMode();
 }
 
 bool CalculateShouldShowPopup() {
-  SessionController* const session_controller =
+  SessionControllerImpl* const session_controller =
       Shell::Get()->session_controller();
 
   if (session_controller->IsRunningInAppMode() ||
@@ -58,7 +58,7 @@
 
 bool SessionStateNotificationBlocker::ShouldShowNotificationAsPopup(
     const message_center::Notification& notification) const {
-  SessionController* const session_controller =
+  SessionControllerImpl* const session_controller =
       Shell::Get()->session_controller();
 
   // Never show notifications in kiosk mode.
diff --git a/ash/system/message_center/unified_message_center_view.cc b/ash/system/message_center/unified_message_center_view.cc
index 351776bd..37e97d9 100644
--- a/ash/system/message_center/unified_message_center_view.cc
+++ b/ash/system/message_center/unified_message_center_view.cc
@@ -8,7 +8,7 @@
 #include <memory>
 
 #include "ash/public/cpp/ash_features.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/message_center/ash_message_center_lock_screen_controller.h"
@@ -426,7 +426,8 @@
 }
 
 void UnifiedMessageCenterView::UpdateVisibility() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   SetVisible(available_height_ >= kUnifiedNotificationMinimumHeight &&
              message_list_view_->GetPreferredSize().height() > 0 &&
              session_controller->ShouldShowNotificationTray() &&
diff --git a/ash/system/message_center/unified_message_center_view_unittest.cc b/ash/system/message_center/unified_message_center_view_unittest.cc
index acf04b8..0e085db3 100644
--- a/ash/system/message_center/unified_message_center_view_unittest.cc
+++ b/ash/system/message_center/unified_message_center_view_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/message_center/ash_message_center_lock_screen_controller.h"
 #include "ash/system/message_center/message_center_scroll_bar.h"
diff --git a/ash/system/model/clock_model.cc b/ash/system/model/clock_model.cc
index bbaa8cd..f8b6a05 100644
--- a/ash/system/model/clock_model.cc
+++ b/ash/system/model/clock_model.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/model/clock_model.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/model/clock_observer.h"
 #include "ash/system/model/system_tray_model.h"
diff --git a/ash/system/model/session_length_limit_model.cc b/ash/system/model/session_length_limit_model.cc
index 17406922..4d7e12a1 100644
--- a/ash/system/model/session_length_limit_model.cc
+++ b/ash/system/model/session_length_limit_model.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/model/session_length_limit_model.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 
 namespace ash {
@@ -51,7 +51,7 @@
   if (!Shell::Get()->session_controller()->IsActiveUserSessionStarted())
     return;
 
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   base::TimeDelta time_limit = session->session_length_limit();
   base::TimeTicks session_start_time = session->session_start_time();
   if (!time_limit.is_zero() && !session_start_time.is_null()) {
diff --git a/ash/system/network/network_feature_pod_controller.cc b/ash/system/network/network_feature_pod_controller.cc
index 646c10f..81184b1 100644
--- a/ash/system/network/network_feature_pod_controller.cc
+++ b/ash/system/network/network_feature_pod_controller.cc
@@ -5,7 +5,7 @@
 #include "ash/system/network/network_feature_pod_controller.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/network/network_feature_pod_button.h"
@@ -89,7 +89,8 @@
 
 void NetworkFeaturePodController::UpdateButton() {
   // Network setting is always immutable in lock screen.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   button_->SetEnabled(!session_controller->IsScreenLocked());
 }
 
diff --git a/ash/system/network/network_list.cc b/ash/system/network/network_list.cc
index c6c49a3..ebd3481 100644
--- a/ash/system/network/network_list.cc
+++ b/ash/system/network/network_list.cc
@@ -9,7 +9,7 @@
 
 #include "ash/public/cpp/ash_view_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/network/network_icon.h"
@@ -49,7 +49,8 @@
 const int kPowerStatusPaddingRight = 10;
 
 bool IsSecondaryUser() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   return session_controller->IsActiveUserSessionStarted() &&
          !session_controller->IsUserPrimary();
 }
diff --git a/ash/system/network/network_section_header_view.cc b/ash/system/network/network_section_header_view.cc
index 4541cd6..8e3e06d 100644
--- a/ash/system/network/network_section_header_view.cc
+++ b/ash/system/network/network_section_header_view.cc
@@ -5,7 +5,7 @@
 #include "ash/system/network/network_section_header_view.h"
 
 #include "ash/metrics/user_metrics_recorder.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/bluetooth/bluetooth_power_controller.h"
@@ -57,7 +57,8 @@
 }
 
 bool IsSecondaryUser() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   return session_controller->IsActiveUserSessionStarted() &&
          !session_controller->IsUserPrimary();
 }
diff --git a/ash/system/network/network_state_list_detailed_view.cc b/ash/system/network/network_state_list_detailed_view.cc
index 7022e61f..9612db2 100644
--- a/ash/system/network/network_state_list_detailed_view.cc
+++ b/ash/system/network/network_state_list_detailed_view.cc
@@ -7,7 +7,7 @@
 #include <algorithm>
 
 #include "ash/metrics/user_metrics_recorder.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
@@ -53,7 +53,8 @@
 constexpr int kBubbleShadowElevation = 2;
 
 bool IsSecondaryUser() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   return session_controller->IsActiveUserSessionStarted() &&
          !session_controller->IsUserPrimary();
 }
diff --git a/ash/system/network/network_tray_icon_strategy.cc b/ash/system/network/network_tray_icon_strategy.cc
index c6f41503..6666627 100644
--- a/ash/system/network/network_tray_icon_strategy.cc
+++ b/ash/system/network/network_tray_icon_strategy.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/network/network_tray_icon_strategy.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/model/system_tray_model.h"
 #include "ash/system/network/active_network_icon.h"
diff --git a/ash/system/network/network_tray_view.cc b/ash/system/network/network_tray_view.cc
index cc446e4e..1e24b22 100644
--- a/ash/system/network/network_tray_view.cc
+++ b/ash/system/network/network_tray_view.cc
@@ -6,7 +6,7 @@
 
 #include <utility>
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/network/network_icon.h"
diff --git a/ash/system/network/unified_network_detailed_view_controller.cc b/ash/system/network/unified_network_detailed_view_controller.cc
index 6b4190de..23dcab9 100644
--- a/ash/system/network/unified_network_detailed_view_controller.cc
+++ b/ash/system/network/unified_network_detailed_view_controller.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/network/unified_network_detailed_view_controller.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/network/network_list.h"
 #include "ash/system/tray/detailed_view_delegate.h"
diff --git a/ash/system/network/unified_vpn_detailed_view_controller.cc b/ash/system/network/unified_vpn_detailed_view_controller.cc
index 5f0e499..06b7dd3 100644
--- a/ash/system/network/unified_vpn_detailed_view_controller.cc
+++ b/ash/system/network/unified_vpn_detailed_view_controller.cc
@@ -4,7 +4,7 @@
 //
 #include "ash/system/network/unified_vpn_detailed_view_controller.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/network/vpn_list_view.h"
 #include "ash/system/tray/detailed_view_delegate.h"
diff --git a/ash/system/network/vpn_feature_pod_controller.cc b/ash/system/network/vpn_feature_pod_controller.cc
index fd44d4f..bee2435 100644
--- a/ash/system/network/vpn_feature_pod_controller.cc
+++ b/ash/system/network/vpn_feature_pod_controller.cc
@@ -5,7 +5,7 @@
 #include "ash/system/network/vpn_feature_pod_controller.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/network/network_icon.h"
diff --git a/ash/system/network/vpn_list_view.cc b/ash/system/network/vpn_list_view.cc
index 855be99..3927687f 100644
--- a/ash/system/network/vpn_list_view.cc
+++ b/ash/system/network/vpn_list_view.cc
@@ -10,7 +10,7 @@
 #include "ash/metrics/user_metrics_recorder.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
@@ -85,7 +85,7 @@
 // controlled by policy. If multiple users are logged in, the more restrictive
 // policy is most likely in the primary user.
 PrefService* GetPrefService() {
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   PrefService* prefs = controller->GetPrimaryUserPrefService();
   return prefs ? prefs : controller->GetActivePrefService();
 }
diff --git a/ash/system/network/vpn_util.cc b/ash/system/network/vpn_util.cc
index 2d80e46..45bb5fb7 100644
--- a/ash/system/network/vpn_util.cc
+++ b/ash/system/network/vpn_util.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/network/vpn_util.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/network/vpn_list.h"
 #include "chromeos/network/network_state.h"
diff --git a/ash/system/night_light/night_light_controller.cc b/ash/system/night_light/night_light_controller.cc
index 77960c5..788ec6c 100644
--- a/ash/system/night_light/night_light_controller.cc
+++ b/ash/system/night_light/night_light_controller.cc
@@ -11,7 +11,7 @@
 #include "ash/display/window_tree_host_manager.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/bind.h"
 #include "base/i18n/time_formatting.h"
@@ -542,7 +542,7 @@
     const mojom::SimpleGeopositionPtr& position) {
   DCHECK(position);
 
-  const SessionController* session_controller =
+  const SessionControllerImpl* session_controller =
       Shell::Get()->session_controller();
   for (const auto& user_session : session_controller->GetUserSessions()) {
     PrefService* pref_service = session_controller->GetUserPrefServiceForUser(
diff --git a/ash/system/night_light/night_light_controller_unittest.cc b/ash/system/night_light/night_light_controller_unittest.cc
index 9b53033..e55e6b2 100644
--- a/ash/system/night_light/night_light_controller_unittest.cc
+++ b/ash/system/night_light/night_light_controller_unittest.cc
@@ -14,7 +14,7 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/session_types.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
diff --git a/ash/system/night_light/night_light_feature_pod_controller.cc b/ash/system/night_light/night_light_feature_pod_controller.cc
index e5c3d3b..63efc2c 100644
--- a/ash/system/night_light/night_light_feature_pod_controller.cc
+++ b/ash/system/night_light/night_light_feature_pod_controller.cc
@@ -5,7 +5,7 @@
 #include "ash/system/night_light/night_light_feature_pod_controller.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
diff --git a/ash/system/overview/overview_button_tray.cc b/ash/system/overview/overview_button_tray.cc
index a0ea35d..6014b96f 100644
--- a/ash/system/overview/overview_button_tray.cc
+++ b/ash/system/overview/overview_button_tray.cc
@@ -6,7 +6,7 @@
 
 #include "ash/metrics/user_metrics_recorder.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
@@ -172,7 +172,8 @@
   // OverviewController::CanSelect. The visibility of the button should
   // not change during transient times in which CanSelect is false. Such as when
   // a modal dialog is present.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   SetVisible(Shell::Get()
                  ->tablet_mode_controller()
                  ->AreInternalInputDeviceEventsBlocked() &&
diff --git a/ash/system/overview/overview_button_tray_unittest.cc b/ash/system/overview/overview_button_tray_unittest.cc
index 17352a7..82a653e 100644
--- a/ash/system/overview/overview_button_tray_unittest.cc
+++ b/ash/system/overview/overview_button_tray_unittest.cc
@@ -9,7 +9,7 @@
 #include "ash/public/cpp/shelf_types.h"
 #include "ash/root_window_controller.h"
 #include "ash/rotator/screen_rotation_animator.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/status_area_widget.h"
 #include "ash/system/status_area_widget_test_helper.h"
diff --git a/ash/system/palette/palette_tray_unittest.cc b/ash/system/palette/palette_tray_unittest.cc
index 7361769..60fa051 100644
--- a/ash/system/palette/palette_tray_unittest.cc
+++ b/ash/system/palette/palette_tray_unittest.cc
@@ -16,7 +16,7 @@
 #include "ash/public/cpp/stylus_utils.h"
 #include "ash/public/interfaces/voice_interaction_controller.mojom.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/shell_test_api.h"
diff --git a/ash/system/palette/palette_utils.cc b/ash/system/palette/palette_utils.cc
index 5377731..aaac479 100644
--- a/ash/system/palette/palette_utils.cc
+++ b/ash/system/palette/palette_utils.cc
@@ -5,7 +5,7 @@
 #include "ash/system/palette/palette_utils.h"
 
 #include "ash/public/cpp/stylus_utils.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/system/palette/palette_tray.h"
@@ -28,7 +28,8 @@
 }
 
 bool IsInUserSession() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   return session_controller->GetSessionState() ==
              session_manager::SessionState::ACTIVE &&
          !session_controller->IsRunningInAppMode();
diff --git a/ash/system/palette/palette_welcome_bubble.cc b/ash/system/palette/palette_welcome_bubble.cc
index ab58ef5..59f4b1c 100644
--- a/ash/system/palette/palette_welcome_bubble.cc
+++ b/ash/system/palette/palette_welcome_bubble.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/palette/palette_tray.h"
diff --git a/ash/system/palette/palette_welcome_bubble_unittest.cc b/ash/system/palette/palette_welcome_bubble_unittest.cc
index 9418297..919c230 100644
--- a/ash/system/palette/palette_welcome_bubble_unittest.cc
+++ b/ash/system/palette/palette_welcome_bubble_unittest.cc
@@ -5,7 +5,7 @@
 #include "ash/system/palette/palette_welcome_bubble.h"
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/system/palette/palette_tray.h"
diff --git a/ash/system/power/power_button_controller.cc b/ash/system/power/power_button_controller.cc
index fa6df80..4b3c026 100644
--- a/ash/system/power/power_button_controller.cc
+++ b/ash/system/power/power_button_controller.cc
@@ -11,7 +11,7 @@
 #include "ash/accelerators/accelerator_controller.h"
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shutdown_reason.h"
 #include "ash/system/power/power_button_display_controller.h"
@@ -273,7 +273,7 @@
   if (power_button_down_)
     return;
 
-  const SessionController* const session_controller =
+  const SessionControllerImpl* const session_controller =
       Shell::Get()->session_controller();
   if (!session_controller->CanLockScreen() ||
       session_controller->IsScreenLocked() ||
@@ -473,7 +473,7 @@
 }
 
 void PowerButtonController::LockScreenIfRequired() {
-  const SessionController* session_controller =
+  const SessionControllerImpl* session_controller =
       Shell::Get()->session_controller();
   if (session_controller->ShouldLockScreenAutomatically() &&
       session_controller->CanLockScreen() &&
diff --git a/ash/system/power/power_button_controller_unittest.cc b/ash/system/power/power_button_controller_unittest.cc
index 1dbf885..159c216 100644
--- a/ash/system/power/power_button_controller_unittest.cc
+++ b/ash/system/power/power_button_controller_unittest.cc
@@ -10,7 +10,7 @@
 #include "ash/display/screen_orientation_controller_test_api.h"
 #include "ash/media/media_controller.h"
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/power/power_button_controller_test_api.h"
 #include "ash/system/power/power_button_menu_item_view.h"
@@ -101,7 +101,7 @@
 
   bool GetLockedState() {
     // LockScreen is an async mojo call.
-    SessionController* const session_controller =
+    SessionControllerImpl* const session_controller =
         Shell::Get()->session_controller();
     session_controller->FlushMojoForTest();
     return session_controller->IsScreenLocked();
diff --git a/ash/system/power/power_button_menu_view.cc b/ash/system/power/power_button_menu_view.cc
index ef8e713..246f530 100644
--- a/ash/system/power/power_button_menu_view.cc
+++ b/ash/system/power/power_button_menu_view.cc
@@ -7,7 +7,7 @@
 #include "ash/display/screen_orientation_controller.h"
 #include "ash/new_window_controller.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/power/power_button_menu_item_view.h"
@@ -151,7 +151,7 @@
         user::GetLocalizedSignOutStringForStatus(login_status, false));
     AddChildView(sign_out_item_);
 
-    const SessionController* const session_controller =
+    const SessionControllerImpl* const session_controller =
         Shell::Get()->session_controller();
     if (session_controller->CanLockScreen() &&
         !session_controller->IsScreenLocked()) {
diff --git a/ash/system/power/power_button_test_base.cc b/ash/system/power/power_button_test_base.cc
index 61fe61c..4f5c2ad 100644
--- a/ash/system/power/power_button_test_base.cc
+++ b/ash/system/power/power_button_test_base.cc
@@ -5,7 +5,7 @@
 #include "ash/system/power/power_button_test_base.h"
 
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/shell_test_api.h"
diff --git a/ash/system/power/power_event_observer.cc b/ash/system/power/power_event_observer.cc
index fc1f4a1..b69c008 100644
--- a/ash/system/power/power_event_observer.cc
+++ b/ash/system/power/power_event_observer.cc
@@ -8,7 +8,7 @@
 #include <utility>
 
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/model/clock_model.h"
 #include "ash/system/model/system_tray_model.h"
@@ -36,7 +36,7 @@
 
 // Returns whether the screen should be locked when device is suspended.
 bool ShouldLockOnSuspend() {
-  SessionController* controller = ash::Shell::Get()->session_controller();
+  SessionControllerImpl* controller = ash::Shell::Get()->session_controller();
 
   return controller->ShouldLockScreenAutomatically() &&
          controller->CanLockScreen();
diff --git a/ash/system/power/power_event_observer_unittest.cc b/ash/system/power/power_event_observer_unittest.cc
index f1a55e9..3decde8 100644
--- a/ash/system/power/power_event_observer_unittest.cc
+++ b/ash/system/power/power_event_observer_unittest.cc
@@ -7,7 +7,7 @@
 #include <memory>
 
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/power/power_event_observer_test_api.h"
 #include "ash/test/ash_test_base.h"
@@ -54,7 +54,7 @@
 
   bool GetLockedState() {
     // LockScreen is an async mojo call.
-    SessionController* const session_controller =
+    SessionControllerImpl* const session_controller =
         Shell::Get()->session_controller();
     session_controller->FlushMojoForTest();
     return session_controller->IsScreenLocked();
diff --git a/ash/system/power/power_prefs.cc b/ash/system/power/power_prefs.cc
index 16592bff..7b49edb 100644
--- a/ash/system/power/power_prefs.cc
+++ b/ash/system/power/power_prefs.cc
@@ -8,7 +8,7 @@
 #include <vector>
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/bind.h"
 #include "base/callback.h"
@@ -63,7 +63,7 @@
 // used: if more-restrictive power-related prefs are set by policy, it's most
 // likely to be on this profile.
 PrefService* GetPrefService() {
-  ash::SessionController* controller = Shell::Get()->session_controller();
+  ash::SessionControllerImpl* controller = Shell::Get()->session_controller();
   PrefService* prefs = controller->GetPrimaryUserPrefService();
   return prefs ? prefs : controller->GetActivePrefService();
 }
diff --git a/ash/system/power/power_prefs_unittest.cc b/ash/system/power/power_prefs_unittest.cc
index 15dbed82..08127ea 100644
--- a/ash/system/power/power_prefs_unittest.cc
+++ b/ash/system/power/power_prefs_unittest.cc
@@ -10,7 +10,7 @@
 #include <vector>
 
 #include "ash/public/cpp/ash_pref_names.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/shell_test_api.h"
diff --git a/ash/system/power/tray_power.cc b/ash/system/power/tray_power.cc
index 0b37a2a..ce909be 100644
--- a/ash/system/power/tray_power.cc
+++ b/ash/system/power/tray_power.cc
@@ -9,7 +9,7 @@
 #include "ash/accessibility/accessibility_delegate.h"
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/power/battery_notification.h"
diff --git a/ash/system/power/video_activity_notifier.cc b/ash/system/power/video_activity_notifier.cc
index ff44b95..7754134 100644
--- a/ash/system/power/video_activity_notifier.cc
+++ b/ash/system/power/video_activity_notifier.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/power/video_activity_notifier.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "chromeos/dbus/power/power_manager_client.h"
 
diff --git a/ash/system/screen_layout_observer.cc b/ash/system/screen_layout_observer.cc
index c428dd79..a22586d4 100644
--- a/ash/system/screen_layout_observer.cc
+++ b/ash/system/screen_layout_observer.cc
@@ -13,7 +13,7 @@
 #include "ash/metrics/user_metrics_recorder.h"
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
diff --git a/ash/system/session/logout_button_tray.cc b/ash/system/session/logout_button_tray.cc
index 288be03..291dc3a 100644
--- a/ash/system/session/logout_button_tray.cc
+++ b/ash/system/session/logout_button_tray.cc
@@ -9,7 +9,7 @@
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/ash_typography.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/system/session/logout_confirmation_controller.h"
diff --git a/ash/system/session/logout_button_tray_unittest.cc b/ash/system/session/logout_button_tray_unittest.cc
index 5387399..9ffd7229 100644
--- a/ash/system/session/logout_button_tray_unittest.cc
+++ b/ash/system/session/logout_button_tray_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/system/session/logout_confirmation_controller.h"
@@ -83,7 +83,7 @@
                                      ->logout_button_tray_for_testing();
   ASSERT_TRUE(tray);
   views::MdTextButton* const button = tray->button_for_test();
-  SessionController* const session_controller =
+  SessionControllerImpl* const session_controller =
       Shell::Get()->session_controller();
   TestSessionControllerClient* const session_client =
       GetSessionControllerClient();
diff --git a/ash/system/session/logout_confirmation_controller.cc b/ash/system/session/logout_confirmation_controller.cc
index cd63a96..a3707df 100644
--- a/ash/system/session/logout_confirmation_controller.cc
+++ b/ash/system/session/logout_confirmation_controller.cc
@@ -10,7 +10,7 @@
 
 #include "ash/login_status.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_observer.h"
 #include "ash/system/session/logout_confirmation_dialog.h"
diff --git a/ash/system/session/session_limit_notification_controller.cc b/ash/system/session/session_limit_notification_controller.cc
index 6f10b467..5c3b833e 100644
--- a/ash/system/session/session_limit_notification_controller.cc
+++ b/ash/system/session/session_limit_notification_controller.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/session_length_limit_model.h"
diff --git a/ash/system/session/session_limit_notification_controller_unittest.cc b/ash/system/session/session_limit_notification_controller_unittest.cc
index 5441f311..c0e6a13 100644
--- a/ash/system/session/session_limit_notification_controller_unittest.cc
+++ b/ash/system/session/session_limit_notification_controller_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/session/session_limit_notification_controller.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ui/message_center/message_center.h"
diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc
index 19923384..32a82403 100644
--- a/ash/system/status_area_widget.cc
+++ b/ash/system/status_area_widget.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/status_area_widget.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/system/accessibility/dictation_button_tray.h"
diff --git a/ash/system/status_area_widget_test_helper.cc b/ash/system/status_area_widget_test_helper.cc
index 60c1e68..fbda12b 100644
--- a/ash/system/status_area_widget_test_helper.cc
+++ b/ash/system/status_area_widget_test_helper.cc
@@ -5,7 +5,7 @@
 #include "ash/system/status_area_widget_test_helper.h"
 
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/status_area_widget.h"
 
diff --git a/ash/system/status_area_widget_unittest.cc b/ash/system/status_area_widget_unittest.cc
index c4af757..e14f970 100644
--- a/ash/system/status_area_widget_unittest.cc
+++ b/ash/system/status_area_widget_unittest.cc
@@ -7,7 +7,7 @@
 #include "ash/focus_cycler.h"
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/system_tray_focus_observer.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/system/ime_menu/ime_menu_tray.h"
@@ -129,7 +129,7 @@
 // TODO(crbug.com/934939): Failing on trybot.
 TEST_F(StatusAreaWidgetFocusTest, DISABLED_FocusOutObserverUnified) {
   // Set session state to LOCKED.
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   ASSERT_TRUE(session->IsActiveUserSessionStarted());
   TestSessionControllerClient* client = GetSessionControllerClient();
   client->SetSessionState(SessionState::LOCKED);
diff --git a/ash/system/supervised/supervised_icon_string.cc b/ash/system/supervised/supervised_icon_string.cc
index 2b86765..6f55e403 100644
--- a/ash/system/supervised/supervised_icon_string.cc
+++ b/ash/system/supervised/supervised_icon_string.cc
@@ -5,7 +5,7 @@
 #include "ash/system/supervised/supervised_icon_string.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "base/strings/utf_string_conversions.h"
@@ -16,7 +16,8 @@
 namespace ash {
 
 const gfx::VectorIcon& GetSupervisedUserIcon() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
 
   if (session_controller->IsUserSupervised() &&
       session_controller->IsUserChild())
@@ -26,7 +27,8 @@
 }
 
 base::string16 GetSupervisedUserMessage() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   DCHECK(session_controller->IsUserSupervised());
   DCHECK(session_controller->IsActiveUserSessionStarted());
 
diff --git a/ash/system/supervised/supervised_notification_controller.cc b/ash/system/supervised/supervised_notification_controller.cc
index eb96062..1b43c1c 100644
--- a/ash/system/supervised/supervised_notification_controller.cc
+++ b/ash/system/supervised/supervised_notification_controller.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/notification_utils.h"
 #include "ash/public/cpp/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/supervised/supervised_icon_string.h"
@@ -43,7 +43,8 @@
 
 void SupervisedNotificationController::OnUserSessionUpdated(
     const AccountId& account_id) {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   if (!session_controller->IsUserSupervised())
     return;
 
diff --git a/ash/system/supervised/supervised_notification_controller_unittest.cc b/ash/system/supervised/supervised_notification_controller_unittest.cc
index 3d7c700..31e8653 100644
--- a/ash/system/supervised/supervised_notification_controller_unittest.cc
+++ b/ash/system/supervised/supervised_notification_controller_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/supervised/supervised_notification_controller.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
@@ -47,7 +47,7 @@
 // Verifies that when a supervised user logs in that a warning notification is
 // shown and ash does not crash.
 TEST_F(SupervisedNotificationControllerTest, SupervisedUserHasNotification) {
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   ASSERT_EQ(LoginStatus::NOT_LOGGED_IN, session->login_status());
   ASSERT_FALSE(session->IsActiveUserSessionStarted());
 
diff --git a/ash/system/time/time_view.cc b/ash/system/time/time_view.cc
index cb64702..cbc5196 100644
--- a/ash/system/time/time_view.cc
+++ b/ash/system/time/time_view.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/time/time_view.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/clock_model.h"
diff --git a/ash/system/toast/toast_manager.cc b/ash/system/toast/toast_manager.cc
index d438a62c..a91bb74 100644
--- a/ash/system/toast/toast_manager.cc
+++ b/ash/system/toast/toast_manager.cc
@@ -6,7 +6,7 @@
 
 #include <algorithm>
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "base/bind.h"
 #include "base/location.h"
diff --git a/ash/system/toast/toast_manager_unittest.cc b/ash/system/toast/toast_manager_unittest.cc
index 34357920..a26173d1 100644
--- a/ash/system/toast/toast_manager_unittest.cc
+++ b/ash/system/toast/toast_manager_unittest.cc
@@ -5,7 +5,7 @@
 #include "ash/system/toast/toast_manager.h"
 
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
diff --git a/ash/system/tray/tray_popup_utils.cc b/ash/system/tray/tray_popup_utils.cc
index f15559cb..e2a0e52 100644
--- a/ash/system/tray/tray_popup_utils.cc
+++ b/ash/system/tray/tray_popup_utils.cc
@@ -11,7 +11,7 @@
 #include "ash/public/cpp/ash_constants.h"
 #include "ash/public/cpp/ash_view_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/tray/hover_highlight_view.h"
 #include "ash/system/tray/size_range_layout.h"
diff --git a/ash/system/unified/current_locale_view.cc b/ash/system/unified/current_locale_view.cc
index 131df697..3c8fc54 100644
--- a/ash/system/unified/current_locale_view.cc
+++ b/ash/system/unified/current_locale_view.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/unified/current_locale_view.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
diff --git a/ash/system/unified/ime_mode_view.cc b/ash/system/unified/ime_mode_view.cc
index d033258..c5b536f 100644
--- a/ash/system/unified/ime_mode_view.cc
+++ b/ash/system/unified/ime_mode_view.cc
@@ -5,7 +5,7 @@
 #include "ash/system/unified/ime_mode_view.h"
 
 #include "ash/ime/ime_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
diff --git a/ash/system/unified/managed_device_view.cc b/ash/system/unified/managed_device_view.cc
index 4fdf44c1..c1f8e2c 100644
--- a/ash/system/unified/managed_device_view.cc
+++ b/ash/system/unified/managed_device_view.cc
@@ -5,7 +5,7 @@
 #include "ash/system/unified/managed_device_view.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/enterprise/enterprise_domain_observer.h"
@@ -42,7 +42,7 @@
 }
 
 void ManagedDeviceView::Update() {
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   if (session->IsUserPublicAccount()) {
     image_view()->SetImage(gfx::CreateVectorIcon(
         kSystemTrayManagedIcon,
diff --git a/ash/system/unified/notification_counter_view.cc b/ash/system/unified/notification_counter_view.cc
index 428f972..bbc4fd6 100644
--- a/ash/system/unified/notification_counter_view.cc
+++ b/ash/system/unified/notification_counter_view.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/message_center/ash_message_center_lock_screen_controller.h"
@@ -103,7 +103,8 @@
 }
 
 void NotificationCounterView::Update() {
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   size_t notification_count =
       message_center::MessageCenter::Get()->NotificationCount();
   if (notification_count == 0 ||
diff --git a/ash/system/unified/quiet_mode_feature_pod_controller.cc b/ash/system/unified/quiet_mode_feature_pod_controller.cc
index 6d43464..4a3d15d9 100644
--- a/ash/system/unified/quiet_mode_feature_pod_controller.cc
+++ b/ash/system/unified/quiet_mode_feature_pod_controller.cc
@@ -5,7 +5,7 @@
 #include "ash/system/unified/quiet_mode_feature_pod_controller.h"
 
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/unified/feature_pod_button.h"
diff --git a/ash/system/unified/sign_out_button.cc b/ash/system/unified/sign_out_button.cc
index 19faf685..be4db383 100644
--- a/ash/system/unified/sign_out_button.cc
+++ b/ash/system/unified/sign_out_button.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/unified/sign_out_button.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/tray/tray_constants.h"
 #include "ash/system/tray/tray_popup_utils.h"
diff --git a/ash/system/unified/top_shortcuts_view.cc b/ash/system/unified/top_shortcuts_view.cc
index a357850..942bea6 100644
--- a/ash/system/unified/top_shortcuts_view.cc
+++ b/ash/system/unified/top_shortcuts_view.cc
@@ -9,7 +9,7 @@
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/public/cpp/ash_view_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shutdown_controller.h"
 #include "ash/strings/grit/ash_strings.h"
diff --git a/ash/system/unified/unified_slider_bubble_controller.cc b/ash/system/unified/unified_slider_bubble_controller.cc
index 716a5a0..dee3470 100644
--- a/ash/system/unified/unified_slider_bubble_controller.cc
+++ b/ash/system/unified/unified_slider_bubble_controller.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/app_list/app_list_features.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/system/brightness/unified_brightness_slider_controller.h"
diff --git a/ash/system/unified/unified_system_info_view.cc b/ash/system/unified/unified_system_info_view.cc
index 4a4e746..c26760ce0 100644
--- a/ash/system/unified/unified_system_info_view.cc
+++ b/ash/system/unified/unified_system_info_view.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/ash_view_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/session_observer.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
@@ -323,7 +323,8 @@
 void EnterpriseManagedView::Update() {
   EnterpriseDomainModel* model =
       Shell::Get()->system_tray_model()->enterprise_domain();
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   SetVisible(session_controller->ShouldDisplayManagedUI() ||
              model->active_directory_managed() ||
              !model->enterprise_display_domain().empty());
diff --git a/ash/system/unified/unified_system_info_view_unittest.cc b/ash/system/unified/unified_system_info_view_unittest.cc
index d85097d..b387651 100644
--- a/ash/system/unified/unified_system_info_view_unittest.cc
+++ b/ash/system/unified/unified_system_info_view_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/unified/unified_system_info_view.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/system/model/enterprise_domain_model.h"
@@ -81,7 +81,7 @@
   std::unique_ptr<UnifiedSystemTrayController> controller_ =
       std::make_unique<UnifiedSystemTrayController>(model_.get());
 
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   ASSERT_FALSE(session->IsActiveUserSessionStarted());
 
   // Before login the supervised user view is invisible.
diff --git a/ash/system/unified/unified_system_tray.cc b/ash/system/unified/unified_system_tray.cc
index 85f5432..a5f4919d 100644
--- a/ash/system/unified/unified_system_tray.cc
+++ b/ash/system/unified/unified_system_tray.cc
@@ -6,7 +6,7 @@
 
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/public/cpp/ash_features.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
diff --git a/ash/system/unified/unified_system_tray_controller.cc b/ash/system/unified/unified_system_tray_controller.cc
index f2e1410..cf7be15 100644
--- a/ash/system/unified/unified_system_tray_controller.cc
+++ b/ash/system/unified/unified_system_tray_controller.cc
@@ -6,7 +6,7 @@
 
 #include "ash/metrics/user_metrics_action.h"
 #include "ash/metrics/user_metrics_recorder.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/accessibility/accessibility_feature_pod_controller.h"
 #include "ash/system/accessibility/unified_accessibility_detailed_view_controller.h"
diff --git a/ash/system/unified/unified_system_tray_controller_unittest.cc b/ash/system/unified/unified_system_tray_controller_unittest.cc
index 91c10a6..c74726e1 100644
--- a/ash/system/unified/unified_system_tray_controller_unittest.cc
+++ b/ash/system/unified/unified_system_tray_controller_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "ash/public/cpp/ash_features.h"
 #include "ash/public/interfaces/session_controller.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/message_center/ash_message_center_lock_screen_controller.h"
 #include "ash/system/unified/notification_hidden_view.h"
@@ -27,7 +27,8 @@
 void SetSessionState(const session_manager::SessionState& state) {
   mojom::SessionInfoPtr info_ptr = mojom::SessionInfo::New();
   info_ptr->state = state;
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   session_controller->SetSessionInfo(std::move(info_ptr));
 }
 
diff --git a/ash/system/unified/unified_system_tray_view.cc b/ash/system/unified/unified_system_tray_view.cc
index 44f0d69f..a5ed7ea 100644
--- a/ash/system/unified/unified_system_tray_view.cc
+++ b/ash/system/unified/unified_system_tray_view.cc
@@ -7,7 +7,7 @@
 #include <numeric>
 
 #include "ash/public/cpp/app_list/app_list_features.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/message_center/ash_message_center_lock_screen_controller.h"
 #include "ash/system/message_center/unified_message_center_view.h"
@@ -239,7 +239,8 @@
   SetPaintToLayer();
   layer()->SetFillsBoundsOpaquely(false);
 
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
 
   AddChildView(message_center_view_);
   layout->SetFlexForView(message_center_view_, 1);
diff --git a/ash/system/unified/user_chooser_detailed_view_controller.cc b/ash/system/unified/user_chooser_detailed_view_controller.cc
index 80d4540..cddc269 100644
--- a/ash/system/unified/user_chooser_detailed_view_controller.cc
+++ b/ash/system/unified/user_chooser_detailed_view_controller.cc
@@ -5,7 +5,7 @@
 #include "ash/system/unified/user_chooser_detailed_view_controller.h"
 
 #include "ash/multi_profile_uma.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/system/unified/unified_system_tray_controller.h"
 #include "ash/system/unified/user_chooser_view.h"
@@ -27,7 +27,7 @@
     return false;
 
   // Don't allow at login, lock or when adding a multi-profile user.
-  SessionController* session = Shell::Get()->session_controller();
+  SessionControllerImpl* session = Shell::Get()->session_controller();
   if (session->IsUserSessionBlocked())
     return false;
 
@@ -44,7 +44,7 @@
 
 void UserChooserDetailedViewController::HandleUserSwitch(int user_index) {
   // Do not switch users when the log screen is presented.
-  SessionController* controller = Shell::Get()->session_controller();
+  SessionControllerImpl* controller = Shell::Get()->session_controller();
   if (controller->IsUserSessionBlocked())
     return;
 
diff --git a/ash/system/unified/user_chooser_view.cc b/ash/system/unified/user_chooser_view.cc
index 695ad23..3d8f881 100644
--- a/ash/system/unified/user_chooser_view.cc
+++ b/ash/system/unified/user_chooser_view.cc
@@ -9,7 +9,7 @@
 
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/enterprise_domain_model.h"
diff --git a/ash/system/user/login_status.cc b/ash/system/user/login_status.cc
index 875c8f9..88c4e68 100644
--- a/ash/system/user/login_status.cc
+++ b/ash/system/user/login_status.cc
@@ -4,7 +4,7 @@
 
 #include "ash/system/user/login_status.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "base/strings/string_util.h"
diff --git a/ash/system/virtual_keyboard/virtual_keyboard_tray.cc b/ash/system/virtual_keyboard/virtual_keyboard_tray.cc
index d05f6c7..3c5902a 100644
--- a/ash/system/virtual_keyboard/virtual_keyboard_tray.cc
+++ b/ash/system/virtual_keyboard/virtual_keyboard_tray.cc
@@ -8,7 +8,7 @@
 
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
 #include "ash/shell.h"
diff --git a/ash/test/ash_test_base.cc b/ash/test/ash_test_base.cc
index 6e93ed4..aecadd9 100644
--- a/ash/test/ash_test_base.cc
+++ b/ash/test/ash_test_base.cc
@@ -20,7 +20,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
diff --git a/ash/touch/touch_devices_controller.cc b/ash/touch/touch_devices_controller.cc
index 26c192cf..161ca3c 100644
--- a/ash/touch/touch_devices_controller.cc
+++ b/ash/touch/touch_devices_controller.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "base/bind.h"
diff --git a/ash/touch/touch_devices_controller_unittest.cc b/ash/touch/touch_devices_controller_unittest.cc
index 8736be7..f57ee61 100644
--- a/ash/touch/touch_devices_controller_unittest.cc
+++ b/ash/touch/touch_devices_controller_unittest.cc
@@ -7,7 +7,7 @@
 #include "ash/accelerators/debug_commands.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
diff --git a/ash/wallpaper/wallpaper_controller.cc b/ash/wallpaper/wallpaper_controller.cc
index 78c692c3..0cc0ef0 100644
--- a/ash/wallpaper/wallpaper_controller.cc
+++ b/ash/wallpaper/wallpaper_controller.cc
@@ -15,7 +15,7 @@
 #include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "ash/wallpaper/wallpaper_controller_observer.h"
diff --git a/ash/wallpaper/wallpaper_controller_unittest.cc b/ash/wallpaper/wallpaper_controller_unittest.cc
index dcfe4f3..9c227ec5 100644
--- a/ash/wallpaper/wallpaper_controller_unittest.cc
+++ b/ash/wallpaper/wallpaper_controller_unittest.cc
@@ -10,7 +10,7 @@
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/shell_test_api.h"
diff --git a/ash/wallpaper/wallpaper_view.cc b/ash/wallpaper/wallpaper_view.cc
index bd31176..ef9d6b6 100644
--- a/ash/wallpaper/wallpaper_view.cc
+++ b/ash/wallpaper/wallpaper_view.cc
@@ -8,7 +8,7 @@
 #include "ash/public/cpp/wallpaper_types.h"
 #include "ash/public/cpp/window_animation_types.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wallpaper/wallpaper_controller.h"
 #include "ash/wallpaper/wallpaper_widget_controller.h"
diff --git a/ash/wm/ash_focus_rules.cc b/ash/wm/ash_focus_rules.cc
index 192e25e1..1ccad67 100644
--- a/ash/wm/ash_focus_rules.cc
+++ b/ash/wm/ash_focus_rules.cc
@@ -5,7 +5,7 @@
 #include "ash/wm/ash_focus_rules.h"
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "ash/wm/container_finder.h"
diff --git a/ash/wm/ash_focus_rules_unittest.cc b/ash/wm/ash_focus_rules_unittest.cc
index 1a2ea81..091eae3 100644
--- a/ash/wm/ash_focus_rules_unittest.cc
+++ b/ash/wm/ash_focus_rules_unittest.cc
@@ -5,7 +5,7 @@
 #include <memory>
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
@@ -32,7 +32,7 @@
 // test lock screen widget.
 class LockScreenSessionControllerClient : public TestSessionControllerClient {
  public:
-  explicit LockScreenSessionControllerClient(SessionController* controller)
+  explicit LockScreenSessionControllerClient(SessionControllerImpl* controller)
       : TestSessionControllerClient(controller) {
     InitializeAndBind();
     CreatePredefinedUserSessions(1);
diff --git a/ash/wm/container_finder.cc b/ash/wm/container_finder.cc
index 4210c4a..18f3dc1 100644
--- a/ash/wm/container_finder.cc
+++ b/ash/wm/container_finder.cc
@@ -7,7 +7,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/always_on_top_controller.h"
 #include "ash/wm/root_window_finder.h"
diff --git a/ash/wm/event_client_impl.cc b/ash/wm/event_client_impl.cc
index 2fa6250a..b62bd868 100644
--- a/ash/wm/event_client_impl.cc
+++ b/ash/wm/event_client_impl.cc
@@ -5,7 +5,7 @@
 #include "ash/wm/event_client_impl.h"
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/tray_action/tray_action.h"
 #include "ui/aura/window.h"
diff --git a/ash/wm/lock_state_controller.cc b/ash/wm/lock_state_controller.cc
index 7120da1..f21237a 100644
--- a/ash/wm/lock_state_controller.cc
+++ b/ash/wm/lock_state_controller.cc
@@ -12,7 +12,7 @@
 #include "ash/cancel_mode.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/interfaces/shutdown.mojom.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "ash/shutdown_controller.h"
diff --git a/ash/wm/lock_state_controller_unittest.cc b/ash/wm/lock_state_controller_unittest.cc
index ae1a946..0f67ec6 100644
--- a/ash/wm/lock_state_controller_unittest.cc
+++ b/ash/wm/lock_state_controller_unittest.cc
@@ -10,7 +10,7 @@
 #include "ash/accessibility/accessibility_controller.h"
 #include "ash/accessibility/test_accessibility_controller_client.h"
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shutdown_controller.h"
 #include "ash/shutdown_reason.h"
diff --git a/ash/wm/mru_window_tracker.cc b/ash/wm/mru_window_tracker.cc
index e350433..fd2e5199 100644
--- a/ash/wm/mru_window_tracker.cc
+++ b/ash/wm/mru_window_tracker.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/ash_focus_rules.h"
 #include "ash/wm/switchable_windows.h"
diff --git a/ash/wm/overview/overview_controller.cc b/ash/wm/overview/overview_controller.cc
index 220da116..cbe42e5 100644
--- a/ash/wm/overview/overview_controller.cc
+++ b/ash/wm/overview/overview_controller.cc
@@ -10,7 +10,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/scoped_animation_disabler.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wallpaper/wallpaper_controller.h"
 #include "ash/wallpaper/wallpaper_view.h"
@@ -286,7 +286,8 @@
   // Don't allow a window overview if the user session is not active (e.g.
   // locked or in user-adding screen) or a modal dialog is open or running in
   // kiosk app session.
-  SessionController* session_controller = Shell::Get()->session_controller();
+  SessionControllerImpl* session_controller =
+      Shell::Get()->session_controller();
   return session_controller->GetSessionState() ==
              session_manager::SessionState::ACTIVE &&
          !Shell::IsSystemModalWindowOpen() &&
diff --git a/ash/wm/splitview/split_view_controller.cc b/ash/wm/splitview/split_view_controller.cc
index ae646c83..0b4e70d 100644
--- a/ash/wm/splitview/split_view_controller.cc
+++ b/ash/wm/splitview/split_view_controller.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/presentation_time_recorder.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/toast/toast_data.h"
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc
index 3f8affa..15a9a9c 100644
--- a/ash/wm/splitview/split_view_controller_unittest.cc
+++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -14,7 +14,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shell.h"
diff --git a/ash/wm/system_modal_container_layout_manager.cc b/ash/wm/system_modal_container_layout_manager.cc
index 104cfdd..103d536 100644
--- a/ash/wm/system_modal_container_layout_manager.cc
+++ b/ash/wm/system_modal_container_layout_manager.cc
@@ -9,7 +9,7 @@
 
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/window_dimmer.h"
 #include "ash/wm/window_util.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_event_handler.cc b/ash/wm/tablet_mode/tablet_mode_event_handler.cc
index 179e289b..6f6aee2 100644
--- a/ash/wm/tablet_mode/tablet_mode_event_handler.cc
+++ b/ash/wm/tablet_mode/tablet_mode_event_handler.cc
@@ -4,7 +4,7 @@
 
 #include "ash/wm/tablet_mode/tablet_mode_event_handler.h"
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/window_state.h"
 #include "ash/wm/window_util.h"
@@ -39,7 +39,7 @@
   if (event.type() != ui::ET_TOUCH_PRESSED)
     return false;
 
-  const SessionController* controller = Shell::Get()->session_controller();
+  const SessionControllerImpl* controller = Shell::Get()->session_controller();
 
   if (controller->IsScreenLocked() ||
       controller->GetSessionState() != session_manager::SessionState::ACTIVE) {
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager.cc b/ash/wm/tablet_mode/tablet_mode_window_manager.cc
index bca3e68..4c2794d 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_manager.cc
+++ b/ash/wm/tablet_mode/tablet_mode_window_manager.cc
@@ -11,7 +11,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/root_window_controller.h"
 #include "ash/scoped_animation_disabler.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/desks/desks_util.h"
 #include "ash/wm/mru_window_tracker.h"
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
index 2c1827a..5e4ec41 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
+++ b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/window_state_type.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
diff --git a/ash/wm/video_detector_unittest.cc b/ash/wm/video_detector_unittest.cc
index 1cc7918c..636957f0 100644
--- a/ash/wm/video_detector_unittest.cc
+++ b/ash/wm/video_detector_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <memory>
 
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/wm/window_state.h"
diff --git a/ash/wm/window_cycle_controller.cc b/ash/wm/window_cycle_controller.cc
index 5fcdddef..d81497d 100644
--- a/ash/wm/window_cycle_controller.cc
+++ b/ash/wm/window_cycle_controller.cc
@@ -8,7 +8,7 @@
 #include "ash/metrics/task_switch_source.h"
 #include "ash/metrics/user_metrics_recorder.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/wm/mru_window_tracker.h"
 #include "ash/wm/screen_pinning_controller.h"
diff --git a/ash/wm/window_cycle_controller_unittest.cc b/ash/wm/window_cycle_controller_unittest.cc
index 1933fa4..6808146 100644
--- a/ash/wm/window_cycle_controller_unittest.cc
+++ b/ash/wm/window_cycle_controller_unittest.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/scoped_root_window_for_new_windows.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_view_test_api.h"
diff --git a/ash/wm/window_util.cc b/ash/wm/window_util.cc
index 89d41e2d..225eb5e 100644
--- a/ash/wm/window_util.cc
+++ b/ash/wm/window_util.cc
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/scoped_animation_disabler.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/wm/splitview/split_view_controller.h"
diff --git a/ash/wm/work_area_insets.cc b/ash/wm/work_area_insets.cc
index a337cca..10e835a 100644
--- a/ash/wm/work_area_insets.cc
+++ b/ash/wm/work_area_insets.cc
@@ -6,7 +6,7 @@
 
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ui/aura/window.h"
diff --git a/ash/wm/workspace/workspace_layout_manager.cc b/ash/wm/workspace/workspace_layout_manager.cc
index d406db8..a0b8392d 100644
--- a/ash/wm/workspace/workspace_layout_manager.cc
+++ b/ash/wm/workspace/workspace_layout_manager.cc
@@ -11,7 +11,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
 #include "ash/wm/always_on_top_controller.h"
diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc
index b71f068..af91700 100644
--- a/ash/wm/workspace/workspace_layout_manager_unittest.cc
+++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -17,7 +17,7 @@
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_constants.h"
diff --git a/ash/wm/workspace_controller_unittest.cc b/ash/wm/workspace_controller_unittest.cc
index 67d62f5..5ffc1e7 100644
--- a/ash/wm/workspace_controller_unittest.cc
+++ b/ash/wm/workspace_controller_unittest.cc
@@ -8,7 +8,7 @@
 
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/screen_util.h"
-#include "ash/session/session_controller.h"
+#include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_widget.h"