From 8692d6358f0fab7c1b85054fc6edc37371d9b1aa Mon Sep 17 00:00:00 2001 From: xdai Date: Fri, 11 Mar 2016 13:03:24 -0800 Subject: A window should not get activated or get input focus if it's behind the lock screen. BUG=515594 Review URL: https://codereview.chromium.org/1753473003 Cr-Commit-Position: refs/heads/master@{#380724} --- ash/wm/ash_focus_rules_unittest.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'ash') 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 -- cgit v1.1