summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorxdai <xdai@chromium.org>2016-03-11 13:03:24 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-11 21:05:47 +0000
commit8692d6358f0fab7c1b85054fc6edc37371d9b1aa (patch)
tree0986846030df33832af76188447bfda0cd6187f5 /ash
parent018c484fd85b3a64ef1037191ca513b389fa21ff (diff)
downloadchromium_src-8692d6358f0fab7c1b85054fc6edc37371d9b1aa.zip
chromium_src-8692d6358f0fab7c1b85054fc6edc37371d9b1aa.tar.gz
chromium_src-8692d6358f0fab7c1b85054fc6edc37371d9b1aa.tar.bz2
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}
Diffstat (limited to 'ash')
-rw-r--r--ash/wm/ash_focus_rules_unittest.cc19
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