0

Deprecate CreateUserSessions

* Replace them with SimulateUserLogin
* I couldn't replace one for start_session in AshTestHelper because
  SimulateUserLogin calls StabilizeUI, which shouldn't be called at
  this point. I'll work on it in a follow up CL.
* Remove unnecessary CreateUserSessions. This was actually causing
  incorrect state transition.
* Created default email constexpr value for eacy transition. I also
  found many SimulateUserLogin usage juset use some random email.
* DetachedableBaseNotificationController was initialised before
  SystemNotificationController even though it has dependency.
  Unit test was testing "locked -> login_primary" transition, but not
  "locked -> active", and it was passing incorrectly.

Bug: 383441831
Test: All tests should still pass.

Change-Id: Iccca14f65ed50a938842ace202f1f263d224c2bd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6089266
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Mitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1396256}
This commit is contained in:
Mitsuru Oshima
2024-12-13 15:56:29 -08:00
committed by Chromium LUCI CQ
parent cf22866740
commit e06dd8a7f4
35 changed files with 234 additions and 201 deletions

@ -2043,7 +2043,7 @@ TEST_F(AmbientControllerForManagedScreensaverLoginScreenTest,
ASSERT_TRUE(GetContainerView()); ASSERT_TRUE(GetContainerView());
// Simulate user session start (e.g. user login) // Simulate user session start (e.g. user login)
CreateUserSessions(/*session_count=*/1); SimulateUserLogin(kDefaultUserEmail);
// Confirm that ambient mode is not shown if disabled. (disabled by default) // Confirm that ambient mode is not shown if disabled. (disabled by default)
FastForwardByLockScreenInactivityTimeout(); FastForwardByLockScreenInactivityTimeout();
@ -2093,7 +2093,7 @@ TEST_F(AmbientControllerForManagedScreensaverLoginScreenTest,
EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi()); EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi());
// Simulate login // Simulate login
CreateUserSessions(/*session_count=*/1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi()); EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi());
SetAmbientModeManagedScreensaverEnabled(true); SetAmbientModeManagedScreensaverEnabled(true);
@ -2126,7 +2126,7 @@ TEST_F(AmbientControllerForManagedScreensaverLoginScreenTest,
EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi()); EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi());
// Simulate login // Simulate login
CreateUserSessions(/*session_count=*/1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi()); EXPECT_FALSE(ambient_controller()->ShouldShowAmbientUi());
SetAmbientModeManagedScreensaverEnabled(true); SetAmbientModeManagedScreensaverEnabled(true);

@ -77,7 +77,7 @@ class DetachableBaseNotificationControllerTest : public NoSessionAshTestBase {
TEST_F(DetachableBaseNotificationControllerTest, TEST_F(DetachableBaseNotificationControllerTest,
ShowPairingNotificationIfSessionNotBlocked) { ShowPairingNotificationIfSessionNotBlocked) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// The first detachable base used by the user - no notification expected. // The first detachable base used by the user - no notification expected.
detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01}); detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01});
@ -98,7 +98,7 @@ TEST_F(DetachableBaseNotificationControllerTest,
TEST_F(DetachableBaseNotificationControllerTest, TEST_F(DetachableBaseNotificationControllerTest,
ShowNotificationOnNonAuthenticatedBases) { ShowNotificationOnNonAuthenticatedBases) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
detachable_base_handler()->PairChallengeFailed(); detachable_base_handler()->PairChallengeFailed();
EXPECT_TRUE(IsBaseChangedNotificationVisible()); EXPECT_TRUE(IsBaseChangedNotificationVisible());
@ -106,7 +106,7 @@ TEST_F(DetachableBaseNotificationControllerTest,
TEST_F(DetachableBaseNotificationControllerTest, TEST_F(DetachableBaseNotificationControllerTest,
UpdateNotificationOnUserSwitch) { UpdateNotificationOnUserSwitch) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// The first detachable base used by the user - no notification expected. // The first detachable base used by the user - no notification expected.
detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01}); detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01});
@ -127,7 +127,7 @@ TEST_F(DetachableBaseNotificationControllerTest,
TEST_F(DetachableBaseNotificationControllerTest, TEST_F(DetachableBaseNotificationControllerTest,
NonAuthenticatedBaseNotificationOnUserSwitch) { NonAuthenticatedBaseNotificationOnUserSwitch) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
detachable_base_handler()->PairChallengeFailed(); detachable_base_handler()->PairChallengeFailed();
EXPECT_TRUE(IsBaseChangedNotificationVisible()); EXPECT_TRUE(IsBaseChangedNotificationVisible());
@ -185,12 +185,12 @@ TEST_F(DetachableBaseNotificationControllerTest,
detachable_base_handler()->PairChallengeFailed(); detachable_base_handler()->PairChallengeFailed();
EXPECT_FALSE(IsBaseChangedNotificationVisible()); EXPECT_FALSE(IsBaseChangedNotificationVisible());
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(IsBaseChangedNotificationVisible()); EXPECT_TRUE(IsBaseChangedNotificationVisible());
} }
TEST_F(DetachableBaseNotificationControllerTest, NoNotificationOnLockScreen) { TEST_F(DetachableBaseNotificationControllerTest, NoNotificationOnLockScreen) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// The first detachable base used by the user - no notification expected. // The first detachable base used by the user - no notification expected.
detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01}); detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01});
@ -205,7 +205,7 @@ TEST_F(DetachableBaseNotificationControllerTest, NoNotificationOnLockScreen) {
TEST_F(DetachableBaseNotificationControllerTest, TEST_F(DetachableBaseNotificationControllerTest,
NoNotificationAfterLockScreenIfSetAsUsed) { NoNotificationAfterLockScreenIfSetAsUsed) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// The first detachable base used by the user - no notification expected. // The first detachable base used by the user - no notification expected.
detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01}); detachable_base_handler()->PairChallengeSucceeded({0x01, 0x01});
BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN); BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN);
@ -225,16 +225,17 @@ TEST_F(DetachableBaseNotificationControllerTest,
// about the base. // about the base.
TEST_F(DetachableBaseNotificationControllerTest, TEST_F(DetachableBaseNotificationControllerTest,
NonAuthenticatedBaseNotificationNotShownOnLock) { NonAuthenticatedBaseNotificationNotShownOnLock) {
BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN); ASSERT_TRUE(IsInSessionState(session_manager::SessionState::LOGIN_PRIMARY));
detachable_base_handler()->PairChallengeFailed(); detachable_base_handler()->PairChallengeFailed();
EXPECT_FALSE(IsBaseChangedNotificationVisible()); EXPECT_FALSE(IsBaseChangedNotificationVisible());
UnblockUserSession(); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(IsBaseChangedNotificationVisible()); EXPECT_TRUE(IsBaseChangedNotificationVisible());
} }
TEST_F(DetachableBaseNotificationControllerTest, NotificationOnUpdateRequired) { TEST_F(DetachableBaseNotificationControllerTest, NotificationOnUpdateRequired) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
detachable_base_handler()->BaseFirmwareUpdateNeeded(); detachable_base_handler()->BaseFirmwareUpdateNeeded();
EXPECT_TRUE(IsBaseRequiresUpdateNotificationVisible()); EXPECT_TRUE(IsBaseRequiresUpdateNotificationVisible());
@ -253,7 +254,7 @@ TEST_F(DetachableBaseNotificationControllerTest,
EXPECT_FALSE(IsBaseRequiresUpdateNotificationVisible()); EXPECT_FALSE(IsBaseRequiresUpdateNotificationVisible());
// Login, expect the notification to be shown. // Login, expect the notification to be shown.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(IsBaseRequiresUpdateNotificationVisible()); EXPECT_TRUE(IsBaseRequiresUpdateNotificationVisible());
// The notification should be removed when the base gets detached. // The notification should be removed when the base gets detached.

@ -38,7 +38,10 @@ class LockScreenSessionControllerClient : public TestSessionControllerClient {
TestPrefServiceProvider* prefs_provider) TestPrefServiceProvider* prefs_provider)
: TestSessionControllerClient(controller, prefs_provider) { : TestSessionControllerClient(controller, prefs_provider) {
InitializeAndSetClient(); InitializeAndSetClient();
CreatePredefinedUserSessions(1);
Reset();
AddUserSession("user0@tray");
SetSessionState(session_manager::SessionState::ACTIVE);
} }
LockScreenSessionControllerClient(const LockScreenSessionControllerClient&) = LockScreenSessionControllerClient(const LockScreenSessionControllerClient&) =

@ -201,7 +201,7 @@ class LoginUnlockThroughputRecorderTestBase : public LoginTestBase {
} }
void LoginOwner() { void LoginOwner() {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_ACTIVE, LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_ACTIVE,
LoginState::LOGGED_IN_USER_REGULAR); LoginState::LOGGED_IN_USER_REGULAR);
} }

@ -40,7 +40,7 @@ class UnlockThroughputRecorderTest : public LoginTestBase,
protected: protected:
void LoginOwner() { void LoginOwner() {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_ACTIVE, LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_ACTIVE,
LoginState::LOGGED_IN_USER_REGULAR); LoginState::LOGGED_IN_USER_REGULAR);
} }

@ -63,7 +63,7 @@ TEST_F(UserMetricsRecorderTest, VerifyIsUserInActiveDesktopEnvironmentValues) {
EXPECT_FALSE(test_api().IsUserInActiveDesktopEnvironment()); EXPECT_FALSE(test_api().IsUserInActiveDesktopEnvironment());
// Environment is active after login. // Environment is active after login.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ASSERT_TRUE(session->IsActiveUserSessionStarted()); ASSERT_TRUE(session->IsActiveUserSessionStarted());
EXPECT_TRUE(test_api().IsUserInActiveDesktopEnvironment()); EXPECT_TRUE(test_api().IsUserInActiveDesktopEnvironment());
@ -97,7 +97,7 @@ TEST_F(UserMetricsRecorderTest,
// recorded when a user is active in a desktop environment. // recorded when a user is active in a desktop environment.
TEST_F(UserMetricsRecorderTest, TEST_F(UserMetricsRecorderTest,
VerifyStatsRecordedWhenUserInActiveDesktopEnvironment) { VerifyStatsRecordedWhenUserInActiveDesktopEnvironment) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ASSERT_TRUE(test_api().IsUserInActiveDesktopEnvironment()); ASSERT_TRUE(test_api().IsUserInActiveDesktopEnvironment());
test_api().RecordPeriodicMetrics(); test_api().RecordPeriodicMetrics();
@ -109,7 +109,7 @@ TEST_F(UserMetricsRecorderTest,
// Verify the shelf item counts recorded by the // Verify the shelf item counts recorded by the
// UserMetricsRecorder::RecordPeriodicMetrics() method. // UserMetricsRecorder::RecordPeriodicMetrics() method.
TEST_F(UserMetricsRecorderTest, ValuesRecordedByRecordShelfItemCounts) { TEST_F(UserMetricsRecorderTest, ValuesRecordedByRecordShelfItemCounts) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Make sure the shelf model is empty at first. // Make sure the shelf model is empty at first.
ShelfModel* shelf_model = ShelfModel::Get(); ShelfModel* shelf_model = ShelfModel::Get();

@ -444,7 +444,7 @@ TEST_F(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) {
login_modal_widget->Close(); login_modal_widget->Close();
// Configure user session environment. // Configure user session environment.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_EQ(1, session_controller->NumberOfLoggedInUsers()); EXPECT_EQ(1, session_controller->NumberOfLoggedInUsers());
EXPECT_TRUE(session_controller->IsActiveUserSessionStarted()); EXPECT_TRUE(session_controller->IsActiveUserSessionStarted());
EXPECT_EQ(GetLayoutManager(controller, kShellWindowId_SystemModalContainer), EXPECT_EQ(GetLayoutManager(controller, kShellWindowId_SystemModalContainer),

@ -117,25 +117,6 @@ void TestSessionControllerClient::SetIsDemoSession() {
controller_->SetSessionInfo(session_info_); controller_->SetSessionInfo(session_info_);
} }
void TestSessionControllerClient::CreatePredefinedUserSessions(int count) {
DCHECK_GT(count, 0);
// Resets the controller's state.
Reset();
// Adds user sessions with numbered emails if more are needed.
for (int numbered_user_index = 0; numbered_user_index < count;
++numbered_user_index) {
AddUserSession(base::StringPrintf("user%d@tray", numbered_user_index));
}
// Sets the first user as active.
SwitchActiveUser(controller_->GetUserSession(0)->user_info.account_id);
// Updates session state after adding user sessions.
SetSessionState(session_manager::SessionState::ACTIVE);
}
void TestSessionControllerClient::AddUserSession( void TestSessionControllerClient::AddUserSession(
const std::string& display_email, const std::string& display_email,
user_manager::UserType user_type, user_manager::UserType user_type,
@ -349,6 +330,12 @@ std::optional<int> TestSessionControllerClient::GetExistingUsersCount() const {
return existing_users_count_; return existing_users_count_;
} }
int TestSessionControllerClient::NumberOfLoggedInUsers() const {
// This should be migrated to GetExistingUserCount when
// TestSessionControllerImpl is removed.
return controller_->NumberOfLoggedInUsers();
}
void TestSessionControllerClient::DoSwitchUser(const AccountId& account_id, void TestSessionControllerClient::DoSwitchUser(const AccountId& account_id,
bool switch_user) { bool switch_user) {
if (!switch_user) if (!switch_user)

@ -80,12 +80,6 @@ class TestSessionControllerClient : public SessionControllerClient {
void SetIsRunningInAppMode(bool app_mode); void SetIsRunningInAppMode(bool app_mode);
void SetIsDemoSession(); void SetIsDemoSession();
// Creates the |count| pre-defined user sessions. The users are named by
// numbers using "user%d@tray" template. The first user is set as active user
// to be consistent with crash-and-restore scenario. Note that existing user
// sessions prior this call will be removed without sending out notifications.
void CreatePredefinedUserSessions(int count);
// Adds a user session from a given display email. If |provide_pref_service| // Adds a user session from a given display email. If |provide_pref_service|
// is true, eagerly inject a PrefService for this user. |is_new_profile| // is true, eagerly inject a PrefService for this user. |is_new_profile|
// indicates whether the user has a newly created profile on the device. // indicates whether the user has a newly created profile on the device.
@ -174,6 +168,8 @@ class TestSessionControllerClient : public SessionControllerClient {
default_provide_pref_service_ = default_provide_pref_service; default_provide_pref_service_ = default_provide_pref_service;
} }
int NumberOfLoggedInUsers() const;
private: private:
void DoSwitchUser(const AccountId& account_id, bool switch_user); void DoSwitchUser(const AccountId& account_id, bool switch_user);

@ -1002,7 +1002,9 @@ TEST_F(HomeButtonAnimationTest, NonAnimatedLayoutDuringAnimation) {
TEST_P(HomeButtonTest, LongPressGesture) { TEST_P(HomeButtonTest, LongPressGesture) {
// Simulate two users with primary user as active. // Simulate two users with primary user as active.
CreateUserSessions(2); auto primary = SimulateUserLogin(kDefaultUserEmail);
SimulateUserLogin(kDefaultUserEmail);
SwitchActiveUser(primary);
// Enable the Assistant in system settings. // Enable the Assistant in system settings.
prefs()->SetBoolean(assistant::prefs::kAssistantEnabled, true); prefs()->SetBoolean(assistant::prefs::kAssistantEnabled, true);
@ -1033,7 +1035,9 @@ TEST_P(HomeButtonTest, LongPressGesture) {
TEST_P(HomeButtonTest, LongPressGestureInTabletMode) { TEST_P(HomeButtonTest, LongPressGestureInTabletMode) {
// Simulate two users with primary user as active. // Simulate two users with primary user as active.
CreateUserSessions(2); auto primary = SimulateUserLogin(kDefaultUserEmail);
SimulateUserLogin(kDefaultUserEmail);
SwitchActiveUser(primary);
// Enable the Assistant in system settings. // Enable the Assistant in system settings.
prefs()->SetBoolean(assistant::prefs::kAssistantEnabled, true); prefs()->SetBoolean(assistant::prefs::kAssistantEnabled, true);
@ -1109,7 +1113,9 @@ TEST_P(HomeButtonTest, LongPressGestureWithSecondaryUser) {
TEST_P(HomeButtonTest, LongPressGestureWithSettingsDisabled) { TEST_P(HomeButtonTest, LongPressGestureWithSettingsDisabled) {
// Simulate two user with primary user as active. // Simulate two user with primary user as active.
CreateUserSessions(2); auto primary = SimulateUserLogin(kDefaultUserEmail);
SimulateUserLogin(kDefaultUserEmail);
SwitchActiveUser(primary);
// Simulate a user who has already completed setup flow, but disabled the // Simulate a user who has already completed setup flow, but disabled the
// Assistant in settings. // Assistant in settings.

@ -48,7 +48,8 @@ class WidgetCloseObserver {
base::WeakPtr<views::Widget> widget_; base::WeakPtr<views::Widget> widget_;
}; };
class HomeToOverviewNudgeControllerWithNudgesDisabledTest : public AshTestBase { class HomeToOverviewNudgeControllerWithNudgesDisabledTest
: public NoSessionAshTestBase {
public: public:
HomeToOverviewNudgeControllerWithNudgesDisabledTest() { HomeToOverviewNudgeControllerWithNudgesDisabledTest() {
scoped_feature_list_.InitAndDisableFeature( scoped_feature_list_.InitAndDisableFeature(
@ -67,7 +68,7 @@ class HomeToOverviewNudgeControllerWithNudgesDisabledTest : public AshTestBase {
base::test::ScopedFeatureList scoped_feature_list_; base::test::ScopedFeatureList scoped_feature_list_;
}; };
class HomeToOverviewNudgeControllerTest : public AshTestBase { class HomeToOverviewNudgeControllerTest : public NoSessionAshTestBase {
public: public:
HomeToOverviewNudgeControllerTest() { HomeToOverviewNudgeControllerTest() {
scoped_feature_list_.InitAndEnableFeature( scoped_feature_list_.InitAndEnableFeature(
@ -82,7 +83,7 @@ class HomeToOverviewNudgeControllerTest : public AshTestBase {
// AshTestBase: // AshTestBase:
void SetUp() override { void SetUp() override {
AshTestBase::SetUp(); NoSessionAshTestBase::SetUp();
GetSessionControllerClient()->SetSessionState( GetSessionControllerClient()->SetSessionState(
session_manager::SessionState::LOGIN_PRIMARY); session_manager::SessionState::LOGIN_PRIMARY);
test_clock_.Advance(base::Hours(2)); test_clock_.Advance(base::Hours(2));
@ -90,7 +91,7 @@ class HomeToOverviewNudgeControllerTest : public AshTestBase {
} }
void TearDown() override { void TearDown() override {
contextual_tooltip::ClearClockOverrideForTesting(); contextual_tooltip::ClearClockOverrideForTesting();
AshTestBase::TearDown(); NoSessionAshTestBase::TearDown();
} }
HomeToOverviewNudgeController* GetNudgeController() { HomeToOverviewNudgeController* GetNudgeController() {
@ -186,7 +187,7 @@ TEST_F(HomeToOverviewNudgeControllerWithNudgesDisabledTest,
->shelf_layout_manager() ->shelf_layout_manager()
->home_to_overview_nudge_controller_for_testing()); ->home_to_overview_nudge_controller_for_testing());
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
std::unique_ptr<aura::Window> window_1 = std::unique_ptr<aura::Window> window_1 =
CreateTestWindow(gfx::Rect(0, 0, 400, 400)); CreateTestWindow(gfx::Rect(0, 0, 400, 400));
@ -205,7 +206,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, NoNudgeBeforeLogin) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
EXPECT_FALSE(GetNudgeController()); EXPECT_FALSE(GetNudgeController());
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(GetNudgeController()); EXPECT_TRUE(GetNudgeController());
} }
@ -214,7 +215,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, NoNudgeBeforeLogin) {
// subsequent shows, the nudge should be hidden after a timeout. // subsequent shows, the nudge should be hidden after a timeout.
TEST_F(HomeToOverviewNudgeControllerTest, ShownOnHomeScreen) { TEST_F(HomeToOverviewNudgeControllerTest, ShownOnHomeScreen) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// The nudge should not be shown in clamshell. // The nudge should not be shown in clamshell.
EXPECT_FALSE(GetNudgeController()); EXPECT_FALSE(GetNudgeController());
@ -286,7 +287,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, ShownOnHomeScreen) {
// Tests that the nudge eventually stops showing. // Tests that the nudge eventually stops showing.
TEST_F(HomeToOverviewNudgeControllerTest, ShownLimitedNumberOfTimes) { TEST_F(HomeToOverviewNudgeControllerTest, ShownLimitedNumberOfTimes) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -317,7 +318,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, ShownLimitedNumberOfTimes) {
TEST_F(HomeToOverviewNudgeControllerTest, HiddenOnTabletModeExit) { TEST_F(HomeToOverviewNudgeControllerTest, HiddenOnTabletModeExit) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -335,7 +336,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, HiddenOnTabletModeExit) {
// Tests that the nudge show is canceled when tablet mode exits. // Tests that the nudge show is canceled when tablet mode exits.
TEST_F(HomeToOverviewNudgeControllerTest, ShowCanceledOnTabletModeExit) { TEST_F(HomeToOverviewNudgeControllerTest, ShowCanceledOnTabletModeExit) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -354,7 +355,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, ShowCanceledOnTabletModeExit) {
TEST_F(HomeToOverviewNudgeControllerTest, TEST_F(HomeToOverviewNudgeControllerTest,
ShowAnimationCanceledOnTabletModeExit) { ShowAnimationCanceledOnTabletModeExit) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -378,7 +379,7 @@ TEST_F(HomeToOverviewNudgeControllerTest,
// Tests that the nudge is hidden when the screen is locked. // Tests that the nudge is hidden when the screen is locked.
TEST_F(HomeToOverviewNudgeControllerTest, HiddenOnScreenLock) { TEST_F(HomeToOverviewNudgeControllerTest, HiddenOnScreenLock) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -404,7 +405,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, HiddenOnScreenLock) {
// show timer runs. // show timer runs.
TEST_F(HomeToOverviewNudgeControllerTest, InAppShelfShownBeforeShowTimer) { TEST_F(HomeToOverviewNudgeControllerTest, InAppShelfShownBeforeShowTimer) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -433,7 +434,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, InAppShelfShownBeforeShowTimer) {
// animation to show the nudge. // animation to show the nudge.
TEST_F(HomeToOverviewNudgeControllerTest, NudgeHiddenDuringShowAnimation) { TEST_F(HomeToOverviewNudgeControllerTest, NudgeHiddenDuringShowAnimation) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -484,7 +485,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, NudgeHiddenDuringShowAnimation) {
// Tests that there is no crash if the nudge widget gets closed unexpectedly. // Tests that there is no crash if the nudge widget gets closed unexpectedly.
TEST_F(HomeToOverviewNudgeControllerTest, NoCrashIfNudgeWidgetGetsClosed) { TEST_F(HomeToOverviewNudgeControllerTest, NoCrashIfNudgeWidgetGetsClosed) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -504,7 +505,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, NoCrashIfNudgeWidgetGetsClosed) {
TEST_F(HomeToOverviewNudgeControllerTest, TapOnTheNudgeClosesTheNudge) { TEST_F(HomeToOverviewNudgeControllerTest, TapOnTheNudgeClosesTheNudge) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -529,7 +530,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, TapOnTheNudgeClosesTheNudge) {
TEST_F(HomeToOverviewNudgeControllerTest, TapOnTheNudgeDuringShowAnimation) { TEST_F(HomeToOverviewNudgeControllerTest, TapOnTheNudgeDuringShowAnimation) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList extra_windows = CreateAndMinimizeWindows(2); ScopedWindowList extra_windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -583,7 +584,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, TapOnTheNudgeDuringShowAnimation) {
// times. // times.
TEST_F(HomeToOverviewNudgeControllerTest, NoNudgeAfterSuccessfulGestures) { TEST_F(HomeToOverviewNudgeControllerTest, NoNudgeAfterSuccessfulGestures) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
EXPECT_FALSE(GetNudgeController()->nudge_for_testing()); EXPECT_FALSE(GetNudgeController()->nudge_for_testing());
@ -648,7 +649,7 @@ TEST_F(HomeToOverviewNudgeControllerTest, NoNudgeAfterSuccessfulGestures) {
// widget works - i.e. that home still transitions to overview. // widget works - i.e. that home still transitions to overview.
TEST_F(HomeToOverviewNudgeControllerTest, HomeToOverviewGestureFromNudge) { TEST_F(HomeToOverviewNudgeControllerTest, HomeToOverviewGestureFromNudge) {
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
EXPECT_FALSE(GetNudgeController()->nudge_for_testing()); EXPECT_FALSE(GetNudgeController()->nudge_for_testing());
@ -691,7 +692,7 @@ TEST_F(HomeToOverviewNudgeControllerTest,
NudgeBoundsUpdatedOnDisplayBoundsChange) { NudgeBoundsUpdatedOnDisplayBoundsChange) {
UpdateDisplay("768x1200"); UpdateDisplay("768x1200");
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
@ -719,7 +720,7 @@ TEST_P(HomeToOverviewNudgeControllerTestWithA11yPrefs,
// Enters tablet mode and sets up two minimized windows. This will create the // Enters tablet mode and sets up two minimized windows. This will create the
// show nudge timer. // show nudge timer.
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
ASSERT_TRUE(GetNudgeController()); ASSERT_TRUE(GetNudgeController());
EXPECT_TRUE(GetNudgeController()->HasShowTimerForTesting()); EXPECT_TRUE(GetNudgeController()->HasShowTimerForTesting());
@ -741,15 +742,13 @@ TEST_P(HomeToOverviewNudgeControllerTestWithA11yPrefs,
DisableNudgesForShelfControls) { DisableNudgesForShelfControls) {
SCOPED_TRACE(testing::Message() << "Pref=" << GetParam()); SCOPED_TRACE(testing::Message() << "Pref=" << GetParam());
// Enabling accessibility shelf controls should disable the nudge. // Enabling accessibility shelf controls should disable the nudge.
Shell::Get() Shell::Get()->session_controller()->GetActivePrefService()->SetBoolean(
->session_controller() GetParam(), true);
->GetLastActiveUserPrefService()
->SetBoolean(GetParam(), true);
// Enters tablet mode and sets up two minimized windows. This should not // Enters tablet mode and sets up two minimized windows. This should not
// trigger the nudge show timer because shelf controls are on. // trigger the nudge show timer because shelf controls are on.
TabletModeControllerTestApi().EnterTabletMode(); TabletModeControllerTestApi().EnterTabletMode();
CreateUserSessions(1); SimulateNewUserFirstLogin("test@gmail.com");
ScopedWindowList windows = CreateAndMinimizeWindows(2); ScopedWindowList windows = CreateAndMinimizeWindows(2);
EXPECT_FALSE(GetNudgeController()); EXPECT_FALSE(GetNudgeController());

@ -228,7 +228,7 @@ TEST_F(LoginShelfViewTest,
ShouldUpdateUiAfterShutdownPolicyChangeAtLockScreen) { ShouldUpdateUiAfterShutdownPolicyChangeAtLockScreen) {
EXPECT_TRUE(ShowsShelfButtons({})); EXPECT_TRUE(ShowsShelfButtons({}));
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -252,7 +252,7 @@ TEST_F(LoginShelfViewTest, ShouldUpdateUiBasedOnShutdownPolicyInActiveSession) {
// The initial state of |reboot_on_shutdown| is false. // The initial state of |reboot_on_shutdown| is false.
EXPECT_TRUE(ShowsShelfButtons({})); EXPECT_TRUE(ShowsShelfButtons({}));
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifyShutdownPolicyChanged(true /*reboot_on_shutdown*/); NotifyShutdownPolicyChanged(true /*reboot_on_shutdown*/);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
@ -270,7 +270,7 @@ TEST_F(LoginShelfViewTest, ShouldNotShowAppsButtonAfterSessionStarted) {
EXPECT_TRUE( EXPECT_TRUE(
login_shelf_view_->GetViewByID(LoginShelfView::kApps)->GetVisible()); login_shelf_view_->GetViewByID(LoginShelfView::kApps)->GetVisible());
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_FALSE( EXPECT_FALSE(
login_shelf_view_->GetViewByID(LoginShelfView::kApps)->GetVisible()); login_shelf_view_->GetViewByID(LoginShelfView::kApps)->GetVisible());
} }
@ -470,7 +470,7 @@ TEST_F(LoginShelfViewTest, ClickShutdownButton) {
} }
TEST_F(LoginShelfViewTest, ClickShutdownButtonOnLockScreen) { TEST_F(LoginShelfViewTest, ClickShutdownButtonOnLockScreen) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
ShutdownAndConfirm(); ShutdownAndConfirm();
EXPECT_TRUE(Shell::Get()->lock_state_controller()->ShutdownRequested()); EXPECT_TRUE(Shell::Get()->lock_state_controller()->ShutdownRequested());
@ -480,13 +480,13 @@ TEST_F(LoginShelfViewTest, ClickShutdownButtonOnLockScreen) {
// session that starts with side shelf. See https://crbug.com/1050192. // session that starts with side shelf. See https://crbug.com/1050192.
TEST_F(LoginShelfViewTest, TEST_F(LoginShelfViewTest,
ClickShutdownButtonOnLockScreenWithVerticalInSessionShelf) { ClickShutdownButtonOnLockScreenWithVerticalInSessionShelf) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetShelfAlignmentPref( SetShelfAlignmentPref(
Shell::Get()->session_controller()->GetPrimaryUserPrefService(), Shell::Get()->session_controller()->GetPrimaryUserPrefService(),
GetPrimaryDisplay().id(), ShelfAlignment::kLeft); GetPrimaryDisplay().id(), ShelfAlignment::kLeft);
ClearLogin(); ClearLogin();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
ShutdownAndConfirm(); ShutdownAndConfirm();
@ -495,7 +495,7 @@ TEST_F(LoginShelfViewTest,
TEST_F(LoginShelfViewTest, ClickRestartButton) { TEST_F(LoginShelfViewTest, ClickRestartButton) {
// The Restart button is not available in OOBE session state. // The Restart button is not available in OOBE session state.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
NotifyShutdownPolicyChanged(true /*reboot_on_shutdown*/); NotifyShutdownPolicyChanged(true /*reboot_on_shutdown*/);
@ -507,7 +507,7 @@ TEST_F(LoginShelfViewTest, ClickRestartButton) {
} }
TEST_F(LoginShelfViewTest, ClickSignOutButton) { TEST_F(LoginShelfViewTest, ClickSignOutButton) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_EQ(session_manager::SessionState::ACTIVE, EXPECT_EQ(session_manager::SessionState::ACTIVE,
Shell::Get()->session_controller()->GetSessionState()); Shell::Get()->session_controller()->GetSessionState());
@ -520,7 +520,7 @@ TEST_F(LoginShelfViewTest, ClickSignOutButton) {
TEST_F(LoginShelfViewTest, ClickCancelButton) { TEST_F(LoginShelfViewTest, ClickCancelButton) {
auto client = std::make_unique<MockLoginScreenClient>(); auto client = std::make_unique<MockLoginScreenClient>();
EXPECT_CALL(*client, CancelAddUser()); EXPECT_CALL(*client, CancelAddUser());
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOGIN_SECONDARY); NotifySessionStateChanged(SessionState::LOGIN_SECONDARY);
Click(LoginShelfView::kCancel); Click(LoginShelfView::kCancel);
} }
@ -544,7 +544,7 @@ TEST_F(LoginShelfViewTest, ClickEnterpriseEnrollmentButton) {
} }
TEST_F(LoginShelfViewTest, TabGoesFromShelfToStatusAreaAndBackToShelf) { TEST_F(LoginShelfViewTest, TabGoesFromShelfToStatusAreaAndBackToShelf) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -584,7 +584,7 @@ TEST_F(LoginShelfViewTest, TabGoesFromShelfToStatusAreaAndBackToShelf) {
} }
TEST_F(LoginShelfViewTest, LoginShelfButtonTooltipText) { TEST_F(LoginShelfViewTest, LoginShelfButtonTooltipText) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -638,7 +638,7 @@ TEST_F(LoginShelfViewTest, LoginShelfButtonTooltipText) {
} }
TEST_F(LoginShelfViewTest, LoginShelfButtonTooltipTextAccessibility) { TEST_F(LoginShelfViewTest, LoginShelfButtonTooltipTextAccessibility) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -837,7 +837,7 @@ TEST_F(LoginShelfViewTest, ParentAccessButtonVisibility) {
} }
TEST_F(LoginShelfViewTest, ParentAccessButtonVisibilityChangeOnLockScreen) { TEST_F(LoginShelfViewTest, ParentAccessButtonVisibilityChangeOnLockScreen) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -949,7 +949,7 @@ TEST_F(LoginShelfViewTest, MouseWheelOnLoginShelf) {
test_mouse_wheel_noop(location); test_mouse_wheel_noop(location);
} }
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
for (const auto& location : kLocations) { for (const auto& location : kLocations) {
@ -1045,7 +1045,7 @@ TEST_F(LoginShelfViewTest, AccessiblePreviousAndNextFocus) {
// Simulate the lock screen scenario to verify the previous focus is updated. // Simulate the lock screen scenario to verify the previous focus is updated.
Shell::Get()->login_screen_controller()->ShowLockScreen(); Shell::Get()->login_screen_controller()->ShowLockScreen();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
data = ui::AXNodeData(); data = ui::AXNodeData();
@ -1199,7 +1199,7 @@ class LoginShelfViewWithShutdownConfirmationTest : public LoginShelfViewTest {
// shutdown button on the lockscreen // shutdown button on the lockscreen
TEST_F(LoginShelfViewWithShutdownConfirmationTest, TEST_F(LoginShelfViewWithShutdownConfirmationTest,
ShouldShowAfterShutdownButtonLockSession) { ShouldShowAfterShutdownButtonLockSession) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -1242,7 +1242,7 @@ TEST_F(LoginShelfViewWithShutdownConfirmationTest,
// cancel button on the shutdown confirmation bubble and could be shown again. // cancel button on the shutdown confirmation bubble and could be shown again.
TEST_F(LoginShelfViewWithShutdownConfirmationTest, TEST_F(LoginShelfViewWithShutdownConfirmationTest,
ShouldCloseAfterCancelButton) { ShouldCloseAfterCancelButton) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -1283,7 +1283,7 @@ TEST_F(LoginShelfViewWithShutdownConfirmationTest,
// down. // down.
TEST_F(LoginShelfViewWithShutdownConfirmationTest, TEST_F(LoginShelfViewWithShutdownConfirmationTest,
ShouldCloseAndShutdownAfterConfirmButton) { ShouldCloseAndShutdownAfterConfirmButton) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -1311,7 +1311,7 @@ TEST_F(LoginShelfViewWithShutdownConfirmationTest,
// Checks that shutdown confirmation bubble disappears after inactive. // Checks that shutdown confirmation bubble disappears after inactive.
TEST_F(LoginShelfViewWithShutdownConfirmationTest, ShouldCloseAfterInactive) { TEST_F(LoginShelfViewWithShutdownConfirmationTest, ShouldCloseAfterInactive) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -1341,7 +1341,7 @@ TEST_F(LoginShelfViewWithShutdownConfirmationTest, ShouldCloseAfterInactive) {
// Checks that shutdown confirmation was first cancelled, then confirmed // Checks that shutdown confirmation was first cancelled, then confirmed
TEST_F(LoginShelfViewWithShutdownConfirmationTest, TEST_F(LoginShelfViewWithShutdownConfirmationTest,
ShouldCloseAndShutdownAfterCancelAndConfirmButton) { ShouldCloseAndShutdownAfterCancelAndConfirmButton) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -1444,7 +1444,7 @@ TEST_F(LoginShelfViewWithShutdownConfirmationTest, DisplayOff) {
} }
TEST_F(LoginShelfViewWithShutdownConfirmationTest, ClickRestartButton) { TEST_F(LoginShelfViewWithShutdownConfirmationTest, ClickRestartButton) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
EXPECT_TRUE( EXPECT_TRUE(
ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut})); ShowsShelfButtons({LoginShelfView::kShutdown, LoginShelfView::kSignOut}));
@ -1460,7 +1460,7 @@ TEST_F(LoginShelfViewWithShutdownConfirmationTest, ClickRestartButton) {
TEST_F(LoginShelfViewWithShutdownConfirmationTest, TEST_F(LoginShelfViewWithShutdownConfirmationTest,
ShelfShutdownConfirmationBubbleAccessibleProperties) { ShelfShutdownConfirmationBubbleAccessibleProperties) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
NotifySessionStateChanged(SessionState::LOCKED); NotifySessionStateChanged(SessionState::LOCKED);
Click(LoginShelfView::kShutdown); Click(LoginShelfView::kShutdown);
auto* confirmation_bubble = auto* confirmation_bubble =

@ -401,7 +401,7 @@ TEST_F(ShelfWidgetTest, ShelfInitiallySizedAfterLogin) {
ASSERT_TRUE(shelf_widget2); ASSERT_TRUE(shelf_widget2);
// Simulate login. // Simulate login.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
const int total_width1 = const int total_width1 =
screen_util::GetDisplayBoundsWithShelf(shelf_widget1->GetNativeWindow()) screen_util::GetDisplayBoundsWithShelf(shelf_widget1->GetNativeWindow())
@ -967,7 +967,7 @@ class ShelfWidgetAfterLoginTest : public AshTestBase {
ShelfVisibilityState expected_shelf_visibility_state, ShelfVisibilityState expected_shelf_visibility_state,
ShelfAutoHideState expected_shelf_auto_hide_state) { ShelfAutoHideState expected_shelf_auto_hide_state) {
// Simulate login. // Simulate login.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Simulate shelf settings being applied from profile prefs. // Simulate shelf settings being applied from profile prefs.
Shelf* shelf = GetPrimaryShelf(); Shelf* shelf = GetPrimaryShelf();
@ -1001,7 +1001,7 @@ TEST_F(ShelfWidgetAfterLoginTest, InitialValues) {
EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
// Simulate login. // Simulate login.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Ensure settings are correct after login. // Ensure settings are correct after login.
EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());

@ -332,7 +332,7 @@ TEST_F(ShelfWindowWatcherSessionStartTest, PreExistingWindow) {
EXPECT_EQ(0, model->item_count()); EXPECT_EQ(0, model->item_count());
// Start the test user session; ShelfWindowWatcher will find the open window. // Start the test user session; ShelfWindowWatcher will find the open window.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_EQ(1, model->item_count()); EXPECT_EQ(1, model->item_count());
} }

@ -994,6 +994,13 @@ Shell::~Shell() {
// notification. // notification.
focus_mode_controller_.reset(); focus_mode_controller_.reset();
// DetachableBaseNotificationController depends on DetachableBaseHandler, and
// has to be destructed before it.
detachable_base_notification_controller_.reset();
// DetachableBaseHandler depends on the PrefService and must be destructed
// before it.
detachable_base_handler_.reset();
system_notification_controller_.reset(); system_notification_controller_.reset();
// Should be destroyed after Shelf and |system_notification_controller_|. // Should be destroyed after Shelf and |system_notification_controller_|.
system_tray_model_.reset(); system_tray_model_.reset();
@ -1164,12 +1171,6 @@ Shell::~Shell() {
// TouchDevicesController depends on the PrefService and must be destructed // TouchDevicesController depends on the PrefService and must be destructed
// before it. // before it.
touch_devices_controller_ = nullptr; touch_devices_controller_ = nullptr;
// DetachableBaseNotificationController depends on DetachableBaseHandler, and
// has to be destructed before it.
detachable_base_notification_controller_.reset();
// DetachableBaseHandler depends on the PrefService and must be destructed
// before it.
detachable_base_handler_.reset();
diagnostics_log_controller_.reset(); diagnostics_log_controller_.reset();
@ -1276,11 +1277,6 @@ void Shell::Init(
// These controllers call Shell::Get() in their constructors, so they cannot // These controllers call Shell::Get() in their constructors, so they cannot
// be in the member initialization list. // be in the member initialization list.
touch_devices_controller_ = std::make_unique<TouchDevicesController>(); touch_devices_controller_ = std::make_unique<TouchDevicesController>();
detachable_base_handler_ =
std::make_unique<DetachableBaseHandler>(local_state_);
detachable_base_notification_controller_ =
std::make_unique<DetachableBaseNotificationController>(
detachable_base_handler_.get());
display_speaker_controller_ = std::make_unique<DisplaySpeakerController>(); display_speaker_controller_ = std::make_unique<DisplaySpeakerController>();
policy_recommendation_restorer_ = policy_recommendation_restorer_ =
std::make_unique<PolicyRecommendationRestorer>(); std::make_unique<PolicyRecommendationRestorer>();
@ -1725,6 +1721,13 @@ void Shell::Init(
system_notification_controller_ = system_notification_controller_ =
std::make_unique<SystemNotificationController>(); std::make_unique<SystemNotificationController>();
// They listen to session controller after notification controller.
detachable_base_handler_ =
std::make_unique<DetachableBaseHandler>(local_state_);
detachable_base_notification_controller_ =
std::make_unique<DetachableBaseNotificationController>(
detachable_base_handler_.get());
// WmModeController should be created before initializing the window tree // WmModeController should be created before initializing the window tree
// hosts, since the latter will initialize the shelf on each display, which // hosts, since the latter will initialize the shelf on each display, which
// hosts the WM mode tray button. // hosts the WM mode tray button.

@ -1063,9 +1063,6 @@ class ASH_EXPORT Shell : public SessionObserver,
std::unique_ptr<DesksController> desks_controller_; std::unique_ptr<DesksController> desks_controller_;
std::unique_ptr<SavedDeskController> saved_desk_controller_; std::unique_ptr<SavedDeskController> saved_desk_controller_;
std::unique_ptr<SavedDeskDelegate> saved_desk_delegate_; std::unique_ptr<SavedDeskDelegate> saved_desk_delegate_;
std::unique_ptr<DetachableBaseHandler> detachable_base_handler_;
std::unique_ptr<DetachableBaseNotificationController>
detachable_base_notification_controller_;
std::unique_ptr<diagnostics::DiagnosticsLogController> std::unique_ptr<diagnostics::DiagnosticsLogController>
diagnostics_log_controller_; diagnostics_log_controller_;
std::unique_ptr<DisplayHighlightController> display_highlight_controller_; std::unique_ptr<DisplayHighlightController> display_highlight_controller_;
@ -1150,6 +1147,9 @@ class ASH_EXPORT Shell : public SessionObserver,
std::unique_ptr<AcceleratorTracker> accelerator_tracker_; std::unique_ptr<AcceleratorTracker> accelerator_tracker_;
std::unique_ptr<ShutdownControllerImpl> shutdown_controller_; std::unique_ptr<ShutdownControllerImpl> shutdown_controller_;
std::unique_ptr<SystemNotificationController> system_notification_controller_; std::unique_ptr<SystemNotificationController> system_notification_controller_;
std::unique_ptr<DetachableBaseHandler> detachable_base_handler_;
std::unique_ptr<DetachableBaseNotificationController>
detachable_base_notification_controller_;
std::unique_ptr<SystemNudgePauseManagerImpl> system_nudge_pause_manager_; std::unique_ptr<SystemNudgePauseManagerImpl> system_nudge_pause_manager_;
std::unique_ptr<SystemTrayModel> system_tray_model_; std::unique_ptr<SystemTrayModel> system_tray_model_;
std::unique_ptr<SystemTrayNotifier> system_tray_notifier_; std::unique_ptr<SystemTrayNotifier> system_tray_notifier_;

@ -95,7 +95,7 @@ TEST_F(AccessibilityFeaturePodControllerTest, ButtonVisibilityNotLoggedIn) {
} }
TEST_F(AccessibilityFeaturePodControllerTest, ButtonVisibilityLoggedIn) { TEST_F(AccessibilityFeaturePodControllerTest, ButtonVisibilityLoggedIn) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
GetPrimaryUnifiedSystemTray()->ShowBubble(); GetPrimaryUnifiedSystemTray()->ShowBubble();
auto* tile = views::AsViewClass<FeatureTile>( auto* tile = views::AsViewClass<FeatureTile>(
GetPrimaryUnifiedSystemTray()->bubble()->GetBubbleView()->GetViewByID( GetPrimaryUnifiedSystemTray()->bubble()->GetBubbleView()->GetViewByID(

@ -97,14 +97,14 @@ TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityNotLoggedIn) {
} }
TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLoggedIn) { TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLoggedIn) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpButton(); SetUpButton();
// If logged in, it should be visible. // If logged in, it should be visible.
EXPECT_TRUE(IsButtonVisible()); EXPECT_TRUE(IsButtonVisible());
} }
TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLocked) { TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLocked) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN); BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN);
// Showing the lock screen closes the system tray bubble, so re-show it before // Showing the lock screen closes the system tray bubble, so re-show it before
@ -117,7 +117,7 @@ TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLocked) {
} }
TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLoginScreen) { TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLoginScreen) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOGIN_SCREEN); BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOGIN_SCREEN);
SetUpButton(); SetUpButton();
// If the login screen is showing (e.g. multi-user signin), it should not be // If the login screen is showing (e.g. multi-user signin), it should not be
@ -126,7 +126,7 @@ TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisibilityLoginScreen) {
} }
TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisiblilityHiddenByDelegate) { TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisiblilityHiddenByDelegate) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->set_is_pod_button_visible(false); test_delegate_->set_is_pod_button_visible(false);
SetUpButton(); SetUpButton();
// If NearbyShareDelegate::IsPodButtonVisible() returns false, it should // If NearbyShareDelegate::IsPodButtonVisible() returns false, it should
@ -136,7 +136,7 @@ TEST_F(NearbyShareFeaturePodControllerTest, ButtonVisiblilityHiddenByDelegate) {
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
ButtonToggledByHighVisibilityEnabledEvent) { ButtonToggledByHighVisibilityEnabledEvent) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpButton(); SetUpButton();
ASSERT_FALSE(IsButtonToggled()); ASSERT_FALSE(IsButtonToggled());
nearby_share_controller_->HighVisibilityEnabledChanged(true); nearby_share_controller_->HighVisibilityEnabledChanged(true);
@ -146,7 +146,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
} }
TEST_F(NearbyShareFeaturePodControllerTest, ButtonPressTogglesHighVisibility) { TEST_F(NearbyShareFeaturePodControllerTest, ButtonPressTogglesHighVisibility) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpButton(); SetUpButton();
test_delegate_->method_calls().clear(); test_delegate_->method_calls().clear();
@ -164,7 +164,7 @@ TEST_F(NearbyShareFeaturePodControllerTest, ButtonPressTogglesHighVisibility) {
} }
TEST_F(NearbyShareFeaturePodControllerTest, IconUMATracking) { TEST_F(NearbyShareFeaturePodControllerTest, IconUMATracking) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpButton(); SetUpButton();
std::string histogram_prefix; std::string histogram_prefix;
@ -193,7 +193,7 @@ TEST_F(NearbyShareFeaturePodControllerTest, IconUMATracking) {
} }
TEST_F(NearbyShareFeaturePodControllerTest, ButtonEnabledStateVisibility) { TEST_F(NearbyShareFeaturePodControllerTest, ButtonEnabledStateVisibility) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->set_is_enabled(false); test_delegate_->set_is_enabled(false);
SetUpButton(); SetUpButton();
// If NearbyShareDelegate::IsEnabled() returns false, the button should // If NearbyShareDelegate::IsEnabled() returns false, the button should
@ -204,7 +204,7 @@ TEST_F(NearbyShareFeaturePodControllerTest, ButtonEnabledStateVisibility) {
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOnYourDevicesVisibility) { QuickShareV2_ButtonToggledOnYourDevicesVisibility) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Default visibility is Your devices. // Default visibility is Your devices.
SetUpButton(); SetUpButton();
EXPECT_TRUE(IsButtonToggled()); EXPECT_TRUE(IsButtonToggled());
@ -213,7 +213,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOnContactsVisibility) { QuickShareV2_ButtonToggledOnContactsVisibility) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->set_visibility( test_delegate_->set_visibility(
::nearby_share::mojom::Visibility::kAllContacts); ::nearby_share::mojom::Visibility::kAllContacts);
SetUpButton(); SetUpButton();
@ -223,7 +223,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOnSelectedContactsVisibility) { QuickShareV2_ButtonToggledOnSelectedContactsVisibility) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->set_visibility( test_delegate_->set_visibility(
::nearby_share::mojom::Visibility::kSelectedContacts); ::nearby_share::mojom::Visibility::kSelectedContacts);
SetUpButton(); SetUpButton();
@ -233,7 +233,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOnHiddenVisibility) { QuickShareV2_ButtonToggledOnHiddenVisibility) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->set_visibility(::nearby_share::mojom::Visibility::kNoOne); test_delegate_->set_visibility(::nearby_share::mojom::Visibility::kNoOne);
SetUpButton(); SetUpButton();
EXPECT_TRUE(IsButtonToggled()); EXPECT_TRUE(IsButtonToggled());
@ -242,7 +242,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOn_HighVisibilityEnabled) { QuickShareV2_ButtonToggledOn_HighVisibilityEnabled) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->set_is_high_visibility_on(true); test_delegate_->set_is_high_visibility_on(true);
SetUpButton(); SetUpButton();
EXPECT_TRUE(IsButtonToggled()); EXPECT_TRUE(IsButtonToggled());
@ -251,7 +251,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOn_QuickShareEnabled) { QuickShareV2_ButtonToggledOn_QuickShareEnabled) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->SetEnabled(true); test_delegate_->SetEnabled(true);
SetUpButton(); SetUpButton();
EXPECT_TRUE(IsButtonToggled()); EXPECT_TRUE(IsButtonToggled());
@ -260,7 +260,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_ButtonToggledOff_QuickShareDisabled) { QuickShareV2_ButtonToggledOff_QuickShareDisabled) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->SetEnabled(false); test_delegate_->SetEnabled(false);
SetUpButton(); SetUpButton();
EXPECT_FALSE(IsButtonToggled()); EXPECT_FALSE(IsButtonToggled());
@ -269,7 +269,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_IconTogglesButtonOn_QuickShareOn_OnPress) { QuickShareV2_IconTogglesButtonOn_QuickShareOn_OnPress) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->SetEnabled(false); test_delegate_->SetEnabled(false);
SetUpButton(); SetUpButton();
EXPECT_FALSE(IsButtonToggled()); EXPECT_FALSE(IsButtonToggled());
@ -282,7 +282,7 @@ TEST_F(NearbyShareFeaturePodControllerTest,
TEST_F(NearbyShareFeaturePodControllerTest, TEST_F(NearbyShareFeaturePodControllerTest,
QuickShareV2_IconTogglesButtonOff_QuickShareOff_OnPress) { QuickShareV2_IconTogglesButtonOff_QuickShareOff_OnPress) {
EnableQuickShareV2(); EnableQuickShareV2();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
test_delegate_->SetEnabled(true); test_delegate_->SetEnabled(true);
SetUpButton(); SetUpButton();
EXPECT_TRUE(IsButtonToggled()); EXPECT_TRUE(IsButtonToggled());

@ -243,7 +243,7 @@ TEST_F(NetworkListNetworkItemViewTest, HasCorrectCellularSublabel) {
IDS_ASH_STATUS_TRAY_NETWORK_STATUS_ACTIVATE_AFTER_DEVICE_SETUP), IDS_ASH_STATUS_TRAY_NETWORK_STATUS_ACTIVATE_AFTER_DEVICE_SETUP),
network_list_network_item_view()->sub_text_label()->GetText()); network_list_network_item_view()->sub_text_label()->GetText());
CreateUserSessions(/*session_count=*/1); SimulateUserLogin(kDefaultUserEmail);
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
// Label for unactivated eSIM networks. // Label for unactivated eSIM networks.
@ -456,7 +456,7 @@ TEST_F(NetworkListNetworkItemViewTest, HasExpectedA11yText) {
base::UTF8ToUTF16(kCellularName)), base::UTF8ToUTF16(kCellularName)),
network_list_network_item_view()->GetViewAccessibility().GetCachedName()); network_list_network_item_view()->GetViewAccessibility().GetCachedName());
CreateUserSessions(/*session_count=*/1); SimulateUserLogin(kDefaultUserEmail);
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
// Contact carrier A11Y label is shown when a eSIM network is connected but // Contact carrier A11Y label is shown when a eSIM network is connected but
@ -593,7 +593,7 @@ TEST_F(NetworkListNetworkItemViewTest, HasExpectedDescriptionForCellular) {
l10n_util::GetStringUTF16( l10n_util::GetStringUTF16(
IDS_ASH_STATUS_TRAY_NETWORK_STATUS_ACTIVATE_AFTER_DEVICE_SETUP)); IDS_ASH_STATUS_TRAY_NETWORK_STATUS_ACTIVATE_AFTER_DEVICE_SETUP));
CreateUserSessions(/*session_count=*/1); SimulateUserLogin(kDefaultUserEmail);
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
// Cellular is not activated and is an eSIM network. // Cellular is not activated and is an eSIM network.

@ -296,7 +296,7 @@ TEST_F(OverviewButtonTrayTest, VisibilityChangesForLoginStatus) {
ClearLogin(); ClearLogin();
Shell::Get()->UpdateAfterLoginStatusChange(LoginStatus::NOT_LOGGED_IN); Shell::Get()->UpdateAfterLoginStatusChange(LoginStatus::NOT_LOGGED_IN);
EXPECT_FALSE(GetTray()->GetVisible()); EXPECT_FALSE(GetTray()->GetVisible());
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
Shell::Get()->UpdateAfterLoginStatusChange(LoginStatus::USER); Shell::Get()->UpdateAfterLoginStatusChange(LoginStatus::USER);
EXPECT_TRUE(GetTray()->GetVisible()); EXPECT_TRUE(GetTray()->GetVisible());
SetUserAddingScreenRunning(true); SetUserAddingScreenRunning(true);

@ -836,7 +836,7 @@ TEST_F(PowerButtonControllerTest, MenuItemsToLoginAndLockedStatus) {
// Should have sign out, lock screen and feedback items if user is logged in // Should have sign out, lock screen and feedback items if user is logged in
// and screen is unlocked. // and screen is unlocked.
ClearLogin(); ClearLogin();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
OpenPowerButtonMenu(); OpenPowerButtonMenu();
EXPECT_FALSE(GetLockedState()); EXPECT_FALSE(GetLockedState());
EXPECT_TRUE(power_button_test_api_->MenuHasSignOutItem()); EXPECT_TRUE(power_button_test_api_->MenuHasSignOutItem());
@ -1034,7 +1034,7 @@ TEST_F(PowerButtonControllerTest, MenuNavigation) {
TapToDismissPowerButtonMenu(); TapToDismissPowerButtonMenu();
ClearLogin(); ClearLogin();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
OpenPowerButtonMenu(); OpenPowerButtonMenu();
ASSERT_TRUE(power_button_test_api_->MenuHasSignOutItem()); ASSERT_TRUE(power_button_test_api_->MenuHasSignOutItem());
ASSERT_TRUE(power_button_test_api_->MenuHasLockScreenItem()); ASSERT_TRUE(power_button_test_api_->MenuHasLockScreenItem());

@ -109,7 +109,7 @@ void PowerButtonTestBase::Initialize(
if (status == LoginStatus::NOT_LOGGED_IN) if (status == LoginStatus::NOT_LOGGED_IN)
ClearLogin(); ClearLogin();
else else
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
if (status == LoginStatus::GUEST) if (status == LoginStatus::GUEST)
SetCanLockScreen(false); SetCanLockScreen(false);

@ -221,7 +221,7 @@ TEST_F(LastWindowClosedTest, RegularSession) {
EXPECT_FALSE(controller->dialog_for_testing()); EXPECT_FALSE(controller->dialog_for_testing());
// Dialog is not visible after login. // Dialog is not visible after login.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_FALSE(controller->dialog_for_testing()); EXPECT_FALSE(controller->dialog_for_testing());
// Creating and closing a window does not show the dialog because this is not // Creating and closing a window does not show the dialog because this is not

@ -183,7 +183,7 @@ TEST_F(SessionLimitNotificationControllerLoginTest,
EXPECT_FALSE(GetNotification()); EXPECT_FALSE(GetNotification());
// Notification is shown after login. // Notification is shown after login.
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(GetNotification()); EXPECT_TRUE(GetNotification());
RemoveNotification(); RemoveNotification();
@ -196,7 +196,7 @@ TEST_F(SessionLimitNotificationControllerLoginTest,
// Notification should be absent. // Notification should be absent.
UpdateSessionLengthLimitInMin(kNotificationThresholdInMinutes + 10); UpdateSessionLengthLimitInMin(kNotificationThresholdInMinutes + 10);
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_FALSE(GetNotification()); EXPECT_FALSE(GetNotification());
RemoveNotification(); RemoveNotification();

@ -65,7 +65,7 @@ TEST_F(PowerButtonPixelTest, DISABLED_NoSession) {
// TODO(crbug.com/1451244): Re-enable this test. // TODO(crbug.com/1451244): Re-enable this test.
TEST_F(PowerButtonPixelTest, DISABLED_LoginSession) { TEST_F(PowerButtonPixelTest, DISABLED_LoginSession) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen( EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen(
"check_button", "check_button",
@ -79,7 +79,7 @@ TEST_F(PowerButtonPixelTest, DISABLED_LoginSession) {
// TODO(crbug.com/1451244): Re-enable this test. // TODO(crbug.com/1451244): Re-enable this test.
TEST_F(PowerButtonPixelTest, DISABLED_LockScreenSession) { TEST_F(PowerButtonPixelTest, DISABLED_LockScreenSession) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
BlockUserSession(BLOCKED_BY_LOCK_SCREEN); BlockUserSession(BLOCKED_BY_LOCK_SCREEN);
EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen( EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen(

@ -148,7 +148,7 @@ class PowerButtonTest : public NoSessionAshTestBase {
// `PowerButton` should be with the correct view id and have the UMA tracking // `PowerButton` should be with the correct view id and have the UMA tracking
// with the correct catalog name. // with the correct catalog name.
TEST_F(PowerButtonTest, PowerButtonHasCorrectViewIdAndUma) { TEST_F(PowerButtonTest, PowerButtonHasCorrectViewIdAndUma) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// No metrics logged before clicking on any buttons. // No metrics logged before clicking on any buttons.
histogram_tester_.ExpectTotalCount("Ash.QuickSettings.Button.Activated", histogram_tester_.ExpectTotalCount("Ash.QuickSettings.Button.Activated",
@ -170,7 +170,9 @@ TEST_F(PowerButtonTest, PowerButtonHasCorrectViewIdAndUma) {
} }
TEST_F(PowerButtonTest, LockMenuButtonRecordsUma) { TEST_F(PowerButtonTest, LockMenuButtonRecordsUma) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// TOOD(crbug.com/383442863): Move this to SimulateUserLogin.
GetSessionControllerClient()->SetCanLockScreen(true);
SimulatePowerButtonPress(); SimulatePowerButtonPress();
LeftClickOn(GetLockButton()); LeftClickOn(GetLockButton());
@ -184,7 +186,7 @@ TEST_F(PowerButtonTest, LockMenuButtonRecordsUma) {
} }
TEST_F(PowerButtonTest, SignOutMenuButtonRecordsUma) { TEST_F(PowerButtonTest, SignOutMenuButtonRecordsUma) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SimulatePowerButtonPress(); SimulatePowerButtonPress();
LeftClickOn(GetSignOutButton()); LeftClickOn(GetSignOutButton());
@ -199,7 +201,7 @@ TEST_F(PowerButtonTest, SignOutMenuButtonRecordsUma) {
} }
TEST_F(PowerButtonTest, RestartMenuButtonRecordsUma) { TEST_F(PowerButtonTest, RestartMenuButtonRecordsUma) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SimulatePowerButtonPress(); SimulatePowerButtonPress();
LeftClickOn(GetRestartButton()); LeftClickOn(GetRestartButton());
@ -214,7 +216,7 @@ TEST_F(PowerButtonTest, RestartMenuButtonRecordsUma) {
} }
TEST_F(PowerButtonTest, PowerOffMenuButtonRecordsUma) { TEST_F(PowerButtonTest, PowerOffMenuButtonRecordsUma) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SimulatePowerButtonPress(); SimulatePowerButtonPress();
LeftClickOn(GetPowerOffButton()); LeftClickOn(GetPowerOffButton());
@ -228,7 +230,7 @@ TEST_F(PowerButtonTest, PowerOffMenuButtonRecordsUma) {
} }
TEST_F(PowerButtonTest, EmailMenuButtonRecordsUma) { TEST_F(PowerButtonTest, EmailMenuButtonRecordsUma) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SimulatePowerButtonPress(); SimulatePowerButtonPress();
LeftClickOn(GetEmailButton()); LeftClickOn(GetEmailButton());
@ -269,7 +271,9 @@ TEST_F(PowerButtonTest, ButtonStatesNotLoggedIn) {
// All buttons are shown after login. // All buttons are shown after login.
TEST_F(PowerButtonTest, ButtonStatesLoggedIn) { TEST_F(PowerButtonTest, ButtonStatesLoggedIn) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// TOOD(crbug.com/383442863): Move this to SimulateUserLogin.
GetSessionControllerClient()->SetCanLockScreen(true);
EXPECT_TRUE(GetPowerButton()->GetVisible()); EXPECT_TRUE(GetPowerButton()->GetVisible());
@ -297,7 +301,7 @@ TEST_F(PowerButtonTest, ButtonStatesLoggedIn) {
// The lock button are hidden at the lock screen. // The lock button are hidden at the lock screen.
TEST_F(PowerButtonTest, ButtonStatesLockScreen) { TEST_F(PowerButtonTest, ButtonStatesLockScreen) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
BlockUserSession(BLOCKED_BY_LOCK_SCREEN); BlockUserSession(BLOCKED_BY_LOCK_SCREEN);
// Changes in lock state close the system tray bubble, so re-show it. // Changes in lock state close the system tray bubble, so re-show it.
@ -331,7 +335,7 @@ TEST_F(PowerButtonTest, ButtonStatesLockScreen) {
// The lock button is hidden when adding a second multiprofile user. // The lock button is hidden when adding a second multiprofile user.
TEST_F(PowerButtonTest, ButtonStatesAddingUser) { TEST_F(PowerButtonTest, ButtonStatesAddingUser) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUserAddingScreenRunning(true); SetUserAddingScreenRunning(true);
EXPECT_TRUE(GetPowerButton()->GetVisible()); EXPECT_TRUE(GetPowerButton()->GetVisible());
@ -450,7 +454,7 @@ TEST_F(PowerButtonTest, UserItemButtonTooltipText) {
// Power button's rounded radii should change correctly when switching between // Power button's rounded radii should change correctly when switching between
// active/inactive. // active/inactive.
TEST_F(PowerButtonTest, ButtonRoundedRadii) { TEST_F(PowerButtonTest, ButtonRoundedRadii) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Sets a LTR locale. // Sets a LTR locale.
base::i18n::SetICUDefaultLocale("en_US"); base::i18n::SetICUDefaultLocale("en_US");
@ -483,7 +487,7 @@ TEST_F(PowerButtonTest, ButtonRoundedRadii) {
} }
TEST_F(PowerButtonTest, DeviceRebootOnShutdownPolicyHidesPowerOffButton) { TEST_F(PowerButtonTest, DeviceRebootOnShutdownPolicyHidesPowerOffButton) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Simulate DeviceRebootOnShutdownPolicy is enabled. // Simulate DeviceRebootOnShutdownPolicy is enabled.
Shell::Get()->shutdown_controller()->SetRebootOnShutdown(true); Shell::Get()->shutdown_controller()->SetRebootOnShutdown(true);
@ -494,7 +498,7 @@ TEST_F(PowerButtonTest, DeviceRebootOnShutdownPolicyHidesPowerOffButton) {
} }
TEST_F(PowerButtonTest, ChevronFlipsWhenMenuIsShowing) { TEST_F(PowerButtonTest, ChevronFlipsWhenMenuIsShowing) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
EXPECT_TRUE(GetPowerButton()->GetVisible()); EXPECT_TRUE(GetPowerButton()->GetVisible());
EXPECT_FALSE(IsMenuShowing()); EXPECT_FALSE(IsMenuShowing());

@ -81,7 +81,9 @@ class QuickSettingsFooterTest : public NoSessionAshTestBase {
// Tests that all buttons are with the correct view id, catalog name and UMA // Tests that all buttons are with the correct view id, catalog name and UMA
// tracking. // tracking.
TEST_F(QuickSettingsFooterTest, ButtonNamesAndUMA) { TEST_F(QuickSettingsFooterTest, ButtonNamesAndUMA) {
CreateUserSessions(2); auto primary = SimulateUserLogin(kDefaultUserEmail);
SimulateUserLogin(kDefaultUserEmail);
SwitchActiveUser(primary);
SetUpView(); SetUpView();
// The number of view id should be the number of catalog name -1, since // The number of view id should be the number of catalog name -1, since
@ -141,7 +143,7 @@ TEST_F(QuickSettingsFooterTest, ButtonStatesNotLoggedIn) {
// All buttons are shown after login. // All buttons are shown after login.
TEST_F(QuickSettingsFooterTest, ButtonStatesLoggedIn) { TEST_F(QuickSettingsFooterTest, ButtonStatesLoggedIn) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpView(); SetUpView();
EXPECT_FALSE(GetSignOutButton()); EXPECT_FALSE(GetSignOutButton());
@ -180,7 +182,7 @@ TEST_F(QuickSettingsFooterTest, ButtonStatesLockScreen) {
// Settings button and lock button are hidden when adding a second // Settings button and lock button are hidden when adding a second
// multiprofile user. // multiprofile user.
TEST_F(QuickSettingsFooterTest, ButtonStatesAddingUser) { TEST_F(QuickSettingsFooterTest, ButtonStatesAddingUser) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUserAddingScreenRunning(true); SetUserAddingScreenRunning(true);
SetUpView(); SetUpView();
@ -233,7 +235,7 @@ TEST_F(QuickSettingsFooterTest, ButtonStatesPublicAccount) {
TEST_F(QuickSettingsFooterTest, SignOutShowsWithMultipleAccounts) { TEST_F(QuickSettingsFooterTest, SignOutShowsWithMultipleAccounts) {
GetSessionControllerClient()->set_existing_users_count(2); GetSessionControllerClient()->set_existing_users_count(2);
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpView(); SetUpView();
ASSERT_TRUE(GetSignOutButton()); ASSERT_TRUE(GetSignOutButton());
@ -252,7 +254,7 @@ TEST_F(QuickSettingsFooterTest, SignOutButtonRecordsUmaAndSignsOut) {
} }
GetSessionControllerClient()->set_existing_users_count(2); GetSessionControllerClient()->set_existing_users_count(2);
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpView(); SetUpView();
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
@ -285,7 +287,7 @@ TEST_F(QuickSettingsFooterTest, DisableSettingsIconPolicy) {
// Tests different battery states. // Tests different battery states.
TEST_F(QuickSettingsFooterTest, BatteryButtonState) { TEST_F(QuickSettingsFooterTest, BatteryButtonState) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpView(); SetUpView();
const bool use_smart_charging_ui = const bool use_smart_charging_ui =
@ -313,7 +315,7 @@ TEST_F(QuickSettingsFooterTest, ButtonLayoutNotLoggedIn) {
// Try to layout buttons after login. // Try to layout buttons after login.
TEST_F(QuickSettingsFooterTest, ButtonLayoutLoggedIn) { TEST_F(QuickSettingsFooterTest, ButtonLayoutLoggedIn) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpView(); SetUpView();
LayoutFooter(); LayoutFooter();
} }
@ -327,7 +329,7 @@ TEST_F(QuickSettingsFooterTest, ButtonLayoutLockScreen) {
// Try to layout buttons when adding a second multiprofile user. // Try to layout buttons when adding a second multiprofile user.
TEST_F(QuickSettingsFooterTest, ButtonLayoutAddingUser) { TEST_F(QuickSettingsFooterTest, ButtonLayoutAddingUser) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUserAddingScreenRunning(true); SetUserAddingScreenRunning(true);
SetUpView(); SetUpView();
LayoutFooter(); LayoutFooter();

@ -78,14 +78,14 @@ TEST_F(QuietModeFeaturePodControllerTest, ButtonVisibilityNotLoggedIn) {
} }
TEST_F(QuietModeFeaturePodControllerTest, ButtonVisibilityLoggedIn) { TEST_F(QuietModeFeaturePodControllerTest, ButtonVisibilityLoggedIn) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpButton(); SetUpButton();
// If logged in, it should be visible. // If logged in, it should be visible.
EXPECT_TRUE(IsButtonVisible()); EXPECT_TRUE(IsButtonVisible());
} }
TEST_F(QuietModeFeaturePodControllerTest, ButtonVisibilityLocked) { TEST_F(QuietModeFeaturePodControllerTest, ButtonVisibilityLocked) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN); BlockUserSession(UserSessionBlockReason::BLOCKED_BY_LOCK_SCREEN);
SetUpButton(); SetUpButton();
// If locked, it should not be visible. // If locked, it should not be visible.
@ -93,7 +93,7 @@ TEST_F(QuietModeFeaturePodControllerTest, ButtonVisibilityLocked) {
} }
TEST_F(QuietModeFeaturePodControllerTest, IconUMATracking) { TEST_F(QuietModeFeaturePodControllerTest, IconUMATracking) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
SetUpButton(); SetUpButton();
message_center::MessageCenter::Get()->SetQuietMode(false); message_center::MessageCenter::Get()->SetQuietMode(false);
@ -135,7 +135,7 @@ TEST_F(QuietModeFeaturePodControllerTest, IconUMATracking) {
} }
TEST_F(QuietModeFeaturePodControllerTest, ToggledState) { TEST_F(QuietModeFeaturePodControllerTest, ToggledState) {
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
// Do not disturb is initially off, button is not toggled. // Do not disturb is initially off, button is not toggled.
SetUpButton(); SetUpButton();

@ -427,13 +427,11 @@ AmbientAshTestHelper* AshTestBase::GetAmbientAshTestHelper() {
return ash_test_helper_->ambient_ash_test_helper(); return ash_test_helper_->ambient_ash_test_helper();
} }
void AshTestBase::CreateUserSessions(int n) { AccountId AshTestBase::SimulateUserLogin(const std::string& user_email,
GetSessionControllerClient()->CreatePredefinedUserSessions(n); user_manager::UserType user_type) {
} auto account_id = AccountId::FromUserEmail(user_email);
SimulateUserLogin(account_id, user_type);
void AshTestBase::SimulateUserLogin(const std::string& user_email, return account_id;
user_manager::UserType user_type) {
SimulateUserLogin(AccountId::FromUserEmail(user_email), user_type);
} }
void AshTestBase::SimulateUserLogin(const AccountId& account_id, void AshTestBase::SimulateUserLogin(const AccountId& account_id,
@ -441,10 +439,13 @@ void AshTestBase::SimulateUserLogin(const AccountId& account_id,
ash_test_helper_->SimulateUserLogin(account_id, user_type); ash_test_helper_->SimulateUserLogin(account_id, user_type);
} }
void AshTestBase::SimulateNewUserFirstLogin(const std::string& user_email) { AccountId AshTestBase::SimulateNewUserFirstLogin(
ash_test_helper_->SimulateUserLogin(AccountId::FromUserEmail(user_email), const std::string& user_email) {
auto account_id = AccountId::FromUserEmail(user_email);
ash_test_helper_->SimulateUserLogin(account_id,
user_manager::UserType::kRegular, user_manager::UserType::kRegular,
/*is_new_profile=*/true); /*is_new_profile=*/true);
return account_id;
} }
void AshTestBase::SimulateGuestLogin() { void AshTestBase::SimulateGuestLogin() {
@ -460,6 +461,14 @@ void AshTestBase::SimulateKioskMode(user_manager::UserType user_type) {
SimulateUserLogin(AccountId::FromUserEmail(kKioskUserEmail), user_type); SimulateUserLogin(AccountId::FromUserEmail(kKioskUserEmail), user_type);
} }
void AshTestBase::SwitchActiveUser(const AccountId& account_id) {
Shell::Get()->session_controller()->SwitchActiveUser(account_id);
}
bool AshTestBase::IsInSessionState(session_manager::SessionState state) const {
return Shell::Get()->session_controller()->GetSessionState() == state;
}
void AshTestBase::SetAccessibilityPanelHeight(int panel_height) { void AshTestBase::SetAccessibilityPanelHeight(int panel_height) {
Shell::GetPrimaryRootWindowController() Shell::GetPrimaryRootWindowController()
->GetAccessibilityPanelLayoutManagerForTest() ->GetAccessibilityPanelLayoutManagerForTest()
@ -488,7 +497,6 @@ void AshTestBase::SetUserAddingScreenRunning(bool user_adding_screen_running) {
void AshTestBase::BlockUserSession(UserSessionBlockReason block_reason) { void AshTestBase::BlockUserSession(UserSessionBlockReason block_reason) {
switch (block_reason) { switch (block_reason) {
case BLOCKED_BY_LOCK_SCREEN: case BLOCKED_BY_LOCK_SCREEN:
CreateUserSessions(1);
GetSessionControllerClient()->LockScreen(); GetSessionControllerClient()->LockScreen();
break; break;
case BLOCKED_BY_LOGIN_SCREEN: case BLOCKED_BY_LOGIN_SCREEN:
@ -503,7 +511,6 @@ void AshTestBase::BlockUserSession(UserSessionBlockReason block_reason) {
} }
void AshTestBase::UnblockUserSession() { void AshTestBase::UnblockUserSession() {
CreateUserSessions(1);
GetSessionControllerClient()->UnlockScreen(); GetSessionControllerClient()->UnlockScreen();
} }

@ -76,6 +76,8 @@ class TestSystemTrayClient;
class UnifiedSystemTray; class UnifiedSystemTray;
class WorkAreaInsets; class WorkAreaInsets;
inline constexpr std::string kDefaultUserEmail = "user0@tray";
// Base class for most tests in //ash. Constructs ash::Shell and all its // Base class for most tests in //ash. Constructs ash::Shell and all its
// dependencies. Provides a user login session (use NoSessionAshTestBase for // dependencies. Provides a user login session (use NoSessionAshTestBase for
// tests that start at the login screen or need unusual user types). Sets // tests that start at the login screen or need unusual user types). Sets
@ -310,18 +312,15 @@ class AshTestBase : public testing::Test {
AmbientAshTestHelper* GetAmbientAshTestHelper(); AmbientAshTestHelper* GetAmbientAshTestHelper();
// Emulates an ash session that have |session_count| user sessions running. // Simulates a user sign-in, and returns an AccountId used to sign in. It
// Note that existing user sessions will be cleared. // creates a new user session, adds it to existing user sessions and makes it
void CreateUserSessions(int session_count); // the active user session.
// Simulates a user sign-in. It creates a new user session, adds it to
// existing user sessions and makes it the active user session.
// //
// For convenience |user_email| is used to create an |AccountId|. For testing // For convenience |user_email| is used to create an |AccountId|. For testing
// behavior where |AccountId|s are compared, prefer the method of the same // behavior where |AccountId|s are compared, prefer the method of the same
// name that takes an |AccountId| created with a valid storage key instead. // name that takes an |AccountId| created with a valid storage key instead.
// See the documentation for|AccountId::GetUserEmail| for discussion. // See the documentation for|AccountId::GetUserEmail| for discussion.
void SimulateUserLogin( AccountId SimulateUserLogin(
const std::string& user_email, const std::string& user_email,
user_manager::UserType user_type = user_manager::UserType::kRegular); user_manager::UserType user_type = user_manager::UserType::kRegular);
@ -332,7 +331,7 @@ class AshTestBase : public testing::Test {
user_manager::UserType user_type = user_manager::UserType::kRegular); user_manager::UserType user_type = user_manager::UserType::kRegular);
// Simular to SimulateUserLogin but for a newly created user first ever login. // Simular to SimulateUserLogin but for a newly created user first ever login.
void SimulateNewUserFirstLogin(const std::string& user_email); AccountId SimulateNewUserFirstLogin(const std::string& user_email);
// Similar to SimulateUserLogin but for a guest user. // Similar to SimulateUserLogin but for a guest user.
void SimulateGuestLogin(); void SimulateGuestLogin();
@ -340,6 +339,12 @@ class AshTestBase : public testing::Test {
// Simulates kiosk mode. |user_type| must correlate to a kiosk type user. // Simulates kiosk mode. |user_type| must correlate to a kiosk type user.
void SimulateKioskMode(user_manager::UserType user_type); void SimulateKioskMode(user_manager::UserType user_type);
// Switches the active user to `account_id`;
void SwitchActiveUser(const AccountId& account_id);
// Returns true if the session is in `state`.
bool IsInSessionState(session_manager::SessionState state) const;
// Simulates setting height of the accessibility panel. // Simulates setting height of the accessibility panel.
// Note: Accessibility panel widget needs to be setup first. // Note: Accessibility panel widget needs to be setup first.
void SetAccessibilityPanelHeight(int panel_height); void SetAccessibilityPanelHeight(int panel_height);
@ -358,6 +363,7 @@ class AshTestBase : public testing::Test {
// Methods to emulate blocking and unblocking user session with given // Methods to emulate blocking and unblocking user session with given
// |block_reason|. // |block_reason|.
// TODO(crbug.com/383770001): Deprecate these methods.
void BlockUserSession(UserSessionBlockReason block_reason); void BlockUserSession(UserSessionBlockReason block_reason);
void UnblockUserSession(); void UnblockUserSession();

@ -398,9 +398,6 @@ void AshTestHelper::SetUp(InitParams init_params) {
session_controller_client_ = std::make_unique<TestSessionControllerClient>( session_controller_client_ = std::make_unique<TestSessionControllerClient>(
shell->session_controller(), prefs_provider_.get()); shell->session_controller(), prefs_provider_.get());
session_controller_client_->InitializeAndSetClient(); session_controller_client_->InitializeAndSetClient();
if (init_params.start_session) {
session_controller_client_->CreatePredefinedUserSessions(1);
}
// Requires the AppListController the Shell creates. // Requires the AppListController the Shell creates.
app_list_test_helper_ = std::make_unique<AppListTestHelper>(); app_list_test_helper_ = std::make_unique<AppListTestHelper>();
@ -408,6 +405,21 @@ void AshTestHelper::SetUp(InitParams init_params) {
Shell::GetPrimaryRootWindow()->Show(); Shell::GetPrimaryRootWindow()->Show();
Shell::GetPrimaryRootWindow()->GetHost()->Show(); Shell::GetPrimaryRootWindow()->GetHost()->Show();
// Sign-in after UI is shown.
if (init_params.start_session) {
// TODO(crbug.com/383441831): Remove Reset();
session_controller_client_->Reset();
auto account_id = AccountId::FromUserEmail("user0@tray");
// TODO((crbug.com/383441831): Use SimulateUserLogin.
session_controller_client_->AddUserSession(
account_id, account_id.GetUserEmail(),
user_manager::UserType::kRegular);
session_controller_client_->SwitchActiveUser(account_id);
session_controller_client_->SetSessionState(
session_manager::SessionState::ACTIVE);
}
// Don't change the display size due to host size resize. // Don't change the display size due to host size resize.
display::test::DisplayManagerTestApi(shell->display_manager()) display::test::DisplayManagerTestApi(shell->display_manager())
.DisableChangeDisplayUponHostResize(); .DisableChangeDisplayUponHostResize();

@ -148,7 +148,7 @@ class MahiManagerImplTest : public NoSessionAshTestBase {
mahi_manager_impl_ = std::make_unique<MahiManagerImpl>(); mahi_manager_impl_ = std::make_unique<MahiManagerImpl>();
mahi_manager_impl_->mahi_provider_ = CreateMahiProvider(); mahi_manager_impl_->mahi_provider_ = CreateMahiProvider();
CreateUserSessions(1); SimulateUserLogin(kDefaultUserEmail);
} }
void TearDown() override { void TearDown() override {

@ -34,7 +34,9 @@
class AssistantBrowserDelegateImplTest : public ChromeAshTestBase { class AssistantBrowserDelegateImplTest : public ChromeAshTestBase {
public: public:
AssistantBrowserDelegateImplTest() AssistantBrowserDelegateImplTest()
: fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {
set_start_session(false);
}
~AssistantBrowserDelegateImplTest() override = default; ~AssistantBrowserDelegateImplTest() override = default;
void SetUp() override { void SetUp() override {
@ -46,7 +48,6 @@ class AssistantBrowserDelegateImplTest : public ChromeAshTestBase {
auto* user = fake_user_manager_->AddUser(account_id); auto* user = fake_user_manager_->AddUser(account_id);
fake_user_manager_->LoginUser(account_id); fake_user_manager_->LoginUser(account_id);
CreateUserSessions(/*session_count=*/1);
SimulateUserLogin(account_id); SimulateUserLogin(account_id);
ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting( ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting(

@ -20,7 +20,9 @@
#include "ui/views/controls/menu/menu_runner.h" #include "ui/views/controls/menu/menu_runner.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
ChromeQuickAnswersTestBase::ChromeQuickAnswersTestBase() = default; ChromeQuickAnswersTestBase::ChromeQuickAnswersTestBase() {
set_start_session(false);
}
ChromeQuickAnswersTestBase::~ChromeQuickAnswersTestBase() = default; ChromeQuickAnswersTestBase::~ChromeQuickAnswersTestBase() = default;
@ -38,11 +40,11 @@ void ChromeQuickAnswersTestBase::SetUp() {
GetFakeUserManager()->AddUser(account_id); GetFakeUserManager()->AddUser(account_id);
GetFakeUserManager()->LoginUser(account_id); GetFakeUserManager()->LoginUser(account_id);
SimulateUserLogin(account_id);
SetUpInitialPrefValues(); SetUpInitialPrefValues();
quick_answers_controller_ = quick_answers_controller_ =
CreateQuickAnswersControllerImpl(read_write_cards_ui_controller_); CreateQuickAnswersControllerImpl(read_write_cards_ui_controller_);
CreateUserSessions(/*session_count=*/1);
} }
void ChromeQuickAnswersTestBase::TearDown() { void ChromeQuickAnswersTestBase::TearDown() {

@ -1183,7 +1183,9 @@ TEST_F(KeyboardTest, KeyRepeatSettingsUpdateAtRuntime) {
TEST_F(KeyboardTest, KeyRepeatSettingsIgnoredForNonActiveUser) { TEST_F(KeyboardTest, KeyRepeatSettingsIgnoredForNonActiveUser) {
// Simulate two users, with the first user as active. // Simulate two users, with the first user as active.
CreateUserSessions(2); auto active_account_id = SimulateUserLogin("user0@gmail.com");
auto inactive_account_id = SimulateUserLogin("user1@gmail.com");
SwitchActiveUser(active_account_id);
// Key repeat settings should be sent exactly once, for the default values. // Key repeat settings should be sent exactly once, for the default values.
auto delegate = std::make_unique<NiceMockKeyboardDelegate>(); auto delegate = std::make_unique<NiceMockKeyboardDelegate>();
@ -1198,7 +1200,7 @@ TEST_F(KeyboardTest, KeyRepeatSettingsIgnoredForNonActiveUser) {
EXPECT_CALL(*delegate_ptr, EXPECT_CALL(*delegate_ptr,
OnKeyRepeatSettingsChanged(testing::_, testing::_, testing::_)) OnKeyRepeatSettingsChanged(testing::_, testing::_, testing::_))
.Times(0); .Times(0);
const std::string email = "user1@tray"; const auto email = inactive_account_id.GetUserEmail();
SetUserPref(email, ash::prefs::kXkbAutoRepeatEnabled, base::Value(true)); SetUserPref(email, ash::prefs::kXkbAutoRepeatEnabled, base::Value(true));
SetUserPref(email, ash::prefs::kXkbAutoRepeatDelay, base::Value(1000)); SetUserPref(email, ash::prefs::kXkbAutoRepeatDelay, base::Value(1000));
SetUserPref(email, ash::prefs::kXkbAutoRepeatInterval, base::Value(1000)); SetUserPref(email, ash::prefs::kXkbAutoRepeatInterval, base::Value(1000));
@ -1207,10 +1209,12 @@ TEST_F(KeyboardTest, KeyRepeatSettingsIgnoredForNonActiveUser) {
TEST_F(KeyboardTest, KeyRepeatSettingsUpdateOnProfileChange) { TEST_F(KeyboardTest, KeyRepeatSettingsUpdateOnProfileChange) {
// Simulate two users, with the first user as active. // Simulate two users, with the first user as active.
CreateUserSessions(2); auto active_account_id = SimulateUserLogin("user0@gmail.com");
auto inactive_account_id = SimulateUserLogin("user1@gmail.com");
SwitchActiveUser(active_account_id);
// Second user has different preferences. // Second user has different preferences.
std::string email = "user1@tray"; std::string email = inactive_account_id.GetUserEmail();
SetUserPref(email, ash::prefs::kXkbAutoRepeatEnabled, base::Value(true)); SetUserPref(email, ash::prefs::kXkbAutoRepeatEnabled, base::Value(true));
SetUserPref(email, ash::prefs::kXkbAutoRepeatDelay, base::Value(1000)); SetUserPref(email, ash::prefs::kXkbAutoRepeatDelay, base::Value(1000));
SetUserPref(email, ash::prefs::kXkbAutoRepeatInterval, base::Value(1000)); SetUserPref(email, ash::prefs::kXkbAutoRepeatInterval, base::Value(1000));