diff options
Diffstat (limited to 'ash')
-rw-r--r-- | ash/wm/ash_focus_rules_unittest.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ash/wm/ash_focus_rules_unittest.cc b/ash/wm/ash_focus_rules_unittest.cc index fe06fa4..542f10f 100644 --- a/ash/wm/ash_focus_rules_unittest.cc +++ b/ash/wm/ash_focus_rules_unittest.cc @@ -14,6 +14,7 @@ #include "ash/wm/window_util.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/client/window_tree_client.h" +#include "ui/views/test/widget_test.h" #include "ui/views/view.h" #include "ui/views/widget/widget.h" @@ -186,5 +187,23 @@ TEST_F(LockScreenAshFocusRulesTest, RegainFocusAfterUnlock) { EXPECT_TRUE(normal_window->HasFocus()); } +// Tests that if a widget has a view which should be initially focused, this +// view doesn't get focused if the widget shows behind the lock screen. +TEST_F(LockScreenAshFocusRulesTest, PreventFocusChangeWithLockScreenPresent) { + BlockUserSession(BLOCKED_BY_LOCK_SCREEN); + EXPECT_TRUE(shell()->session_state_delegate()->IsScreenLocked()); + + views::test::TestInitialFocusWidgetDelegate delegate(CurrentContext()); + EXPECT_FALSE(delegate.view()->HasFocus()); + delegate.GetWidget()->Show(); + EXPECT_FALSE(delegate.GetWidget()->IsActive()); + EXPECT_FALSE(delegate.view()->HasFocus()); + + UnblockUserSession(); + EXPECT_FALSE(shell()->session_state_delegate()->IsScreenLocked()); + EXPECT_TRUE(delegate.GetWidget()->IsActive()); + EXPECT_TRUE(delegate.view()->HasFocus()); +} + } // namespace test } // namespace ash |