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..81184b1a 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"
