From 962c3e7bbe8e5a68aa0eed330539ca40f43ceeae Mon Sep 17 00:00:00 2001 From: Sami Jaktholm Date: Fri, 11 Apr 2014 10:26:11 +0300 Subject: Lockscreen: Give proper grabs to the shield before releasing blank_window_. Fixes LP: #1306417 (bzr r3779.1.1) --- tests/test_lockscreen_controller.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests') diff --git a/tests/test_lockscreen_controller.cpp b/tests/test_lockscreen_controller.cpp index fa01a0a61..55add06bc 100644 --- a/tests/test_lockscreen_controller.cpp +++ b/tests/test_lockscreen_controller.cpp @@ -43,6 +43,7 @@ namespace { const unsigned ANIMATION_DURATION = 400 * 1000; // in microseconds +const unsigned BLANK_ANIMATION_DURATION = 10000 * 1000; const unsigned TICK_DURATION = 10 * 1000; } @@ -87,6 +88,7 @@ struct TestLockScreenController : Test {} using Controller::shields_; + using Controller::blank_window_; }; nux::NuxTimerTickSource tick_source; @@ -227,5 +229,26 @@ TEST_F(TestLockScreenController, UnlockScreenOnMultiMonitor) EXPECT_TRUE(controller.shields_.empty()); } +TEST_F(TestLockScreenController, ShieldHasGrabAfterBlank) +{ + + // Lock... + session_manager->lock_requested.emit(); + Utils::WaitUntilMSec([this]{ return controller.shields_.size() == 1; }); + ASSERT_EQ(1, controller.shields_.size()); + + // ...and let the screen blank. + session_manager->presence_status_changed.emit(true); + tick_source.tick(BLANK_ANIMATION_DURATION); + + ASSERT_TRUE(controller.blank_window_->GetOpacity() == 1.0); + ASSERT_TRUE(controller.blank_window_->OwnsPointerGrab()); + + // Wake the screen + dbus_manager->simulate_activity.emit(); + + EXPECT_TRUE(controller.shields_.at(0)->OwnsPointerGrab()); +} + } // lockscreen } // unity -- cgit v1.2.3