Index: ash/session/session_controller_unittest.cc |
diff --git a/ash/session/session_controller_unittest.cc b/ash/session/session_controller_unittest.cc |
index ef8cf46aa153aec2523b585ef7634fb483427cd8..f011548c9a060efd025be3be06e12b1339a8a9cb 100644 |
--- a/ash/session/session_controller_unittest.cc |
+++ b/ash/session/session_controller_unittest.cc |
@@ -13,11 +13,14 @@ |
#include "ash/public/interfaces/session_controller.mojom.h" |
#include "ash/session/session_controller.h" |
#include "ash/session/session_state_observer.h" |
+#include "base/callback.h" |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "components/user_manager/user_type.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+using session_manager::SessionState; |
+ |
namespace ash { |
namespace { |
@@ -35,9 +38,7 @@ class TestSessionStateObserver : public SessionStateObserver { |
user_session_account_ids_.push_back(account_id); |
} |
- void SessionStateChanged(session_manager::SessionState state) override { |
- state_ = state; |
- } |
+ void SessionStateChanged(SessionState state) override { state_ = state; } |
std::string GetUserSessionEmails() const { |
std::string emails; |
@@ -47,14 +48,14 @@ class TestSessionStateObserver : public SessionStateObserver { |
return emails; |
} |
- session_manager::SessionState state() const { return state_; } |
+ SessionState state() const { return state_; } |
const AccountId& active_account_id() const { return active_account_id_; } |
const std::vector<AccountId>& user_session_account_ids() const { |
return user_session_account_ids_; |
} |
private: |
- session_manager::SessionState state_ = session_manager::SessionState::UNKNOWN; |
+ SessionState state_ = SessionState::UNKNOWN; |
AccountId active_account_id_; |
std::vector<AccountId> user_session_account_ids_; |
@@ -65,7 +66,7 @@ void FillDefaultSessionInfo(mojom::SessionInfo* info) { |
info->can_lock_screen = true; |
info->should_lock_screen_automatically = true; |
info->add_user_session_policy = AddUserSessionPolicy::ALLOWED; |
- info->state = session_manager::SessionState::LOGIN_PRIMARY; |
+ info->state = SessionState::LOGIN_PRIMARY; |
} |
class SessionControllerTest : public testing::Test { |
@@ -179,16 +180,16 @@ TEST_F(SessionControllerTest, AddUserPolicy) { |
// Tests that session state can be set and reflected properly. |
TEST_F(SessionControllerTest, SessionState) { |
const struct { |
- session_manager::SessionState state; |
+ SessionState state; |
bool expected_is_screen_locked; |
bool expected_is_user_session_blocked; |
} kTestCases[] = { |
- {session_manager::SessionState::OOBE, false, true}, |
- {session_manager::SessionState::LOGIN_PRIMARY, false, true}, |
- {session_manager::SessionState::LOGGED_IN_NOT_ACTIVE, false, true}, |
- {session_manager::SessionState::ACTIVE, false, false}, |
- {session_manager::SessionState::LOCKED, true, true}, |
- {session_manager::SessionState::LOGIN_SECONDARY, false, true}, |
+ {SessionState::OOBE, false, true}, |
+ {SessionState::LOGIN_PRIMARY, false, true}, |
+ {SessionState::LOGGED_IN_NOT_ACTIVE, false, true}, |
+ {SessionState::ACTIVE, false, false}, |
+ {SessionState::LOCKED, true, true}, |
+ {SessionState::LOGIN_SECONDARY, false, true}, |
}; |
mojom::SessionInfo info; |
@@ -212,8 +213,6 @@ TEST_F(SessionControllerTest, SessionState) { |
// Tests that LoginStatus is computed correctly for most session states. |
TEST_F(SessionControllerTest, GetLoginStatus) { |
- using session_manager::SessionState; |
- |
const struct { |
SessionState state; |
LoginStatus expected_status; |
@@ -241,7 +240,7 @@ TEST_F(SessionControllerTest, GetLoginStateForActiveSession) { |
// Simulate an active user session. |
mojom::SessionInfo info; |
FillDefaultSessionInfo(&info); |
- info.state = session_manager::SessionState::ACTIVE; |
+ info.state = SessionState::ACTIVE; |
SetSessionInfo(info); |
const struct { |
@@ -312,5 +311,44 @@ TEST_F(SessionControllerTest, ActiveSession) { |
EXPECT_EQ("user1@test.com", observer()->active_account_id().GetUserEmail()); |
} |
+// Tests that user session is unblocked with a running unlock animation so that |
+// focus rules can find a correct activatable window after screen lock is |
+// dismissed. |
+TEST_F(SessionControllerTest, UserSessionUnblockedWithRunningUnlockAnimation) { |
+ mojom::SessionInfo info; |
+ FillDefaultSessionInfo(&info); |
+ |
+ // LOCKED means blocked user session. |
+ info.state = SessionState::LOCKED; |
+ SetSessionInfo(info); |
+ EXPECT_TRUE(controller()->IsUserSessionBlocked()); |
+ |
+ // Mark a running unlock animation unblocks user session. |
+ controller()->RunUnlockAnimation(base::Closure()); |
+ EXPECT_FALSE(controller()->IsUserSessionBlocked()); |
+ |
+ const struct { |
+ SessionState state; |
+ bool expected_is_user_session_blocked; |
+ } kTestCases[] = { |
+ {SessionState::OOBE, true}, |
+ {SessionState::LOGIN_PRIMARY, true}, |
+ {SessionState::LOGGED_IN_NOT_ACTIVE, true}, |
+ {SessionState::ACTIVE, false}, |
+ {SessionState::LOGIN_SECONDARY, true}, |
+ }; |
+ for (const auto& test_case : kTestCases) { |
+ info.state = test_case.state; |
+ SetSessionInfo(info); |
+ |
+ // Mark a running unlock animation. |
+ controller()->RunUnlockAnimation(base::Closure()); |
+ |
+ EXPECT_EQ(test_case.expected_is_user_session_blocked, |
+ controller()->IsUserSessionBlocked()) |
+ << "Test case state=" << static_cast<int>(test_case.state); |
+ } |
+} |
+ |
} // namespace |
} // namespace ash |