Index: ash/system/chromeos/power/power_event_observer_unittest.cc |
diff --git a/ash/system/chromeos/power/power_event_observer_unittest.cc b/ash/system/chromeos/power/power_event_observer_unittest.cc |
index aaaf2c7c46a0afd0cba9cee8b3cac519ca138906..3afb748b1250c7fbea13a0298d293719321a06f5 100644 |
--- a/ash/system/chromeos/power/power_event_observer_unittest.cc |
+++ b/ash/system/chromeos/power/power_event_observer_unittest.cc |
@@ -4,11 +4,15 @@ |
#include "ash/system/chromeos/power/power_event_observer.h" |
+#include "ash/shell.h" |
#include "ash/test/ash_test_base.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/time/time.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "chromeos/dbus/power_manager_client.h" |
+#include "ui/aura/window.h" |
+#include "ui/aura/window_tree_host.h" |
+#include "ui/compositor/compositor.h" |
namespace ash { |
@@ -29,6 +33,12 @@ class PowerEventObserverTest : public test::AshTestBase { |
} |
protected: |
+ void ExpectCompositorVisibility(bool expected) { |
Daniel Erat
2015/02/11 14:11:43
to get more-meaningful failure messages, how about
Chirantan Ekbote
2015/02/18 02:47:13
Done.
|
+ for (const auto& window : Shell::GetAllRootWindows()) { |
Daniel Erat
2015/02/11 14:11:42
nit: omit curly brackets
|
+ EXPECT_EQ(expected, window->GetHost()->compositor()->IsVisible()); |
+ } |
+ } |
+ |
scoped_ptr<PowerEventObserver> observer_; |
private: |
@@ -67,4 +77,41 @@ TEST_F(PowerEventObserverTest, LockBeforeSuspend) { |
EXPECT_EQ(0, client->GetNumPendingSuspendReadinessCallbacks()); |
} |
+TEST_F(PowerEventObserverTest, SetInvisibleBeforeSuspend) { |
+ // Tests that all the LayerTreeHosts are marked invisible before a suspend |
+ // request when the screen is not supposed to be locked before a suspend. |
+ ExpectCompositorVisibility(true); |
+ |
+ observer_->SuspendImminent(); |
+ ExpectCompositorVisibility(false); |
+ observer_->SuspendDone(base::TimeDelta()); |
+ |
+ // Tests that all the LayerTreeHosts are marked invisible _after_ the screen |
+ // is locked for a suspend request. |
+ SetCanLockScreen(true); |
+ SetShouldLockScreenBeforeSuspending(true); |
+ |
+ observer_->SuspendImminent(); |
+ ExpectCompositorVisibility(true); |
+ |
+ observer_->ScreenIsLocked(); |
+ ExpectCompositorVisibility(false); |
+ |
+ observer_->SuspendDone(base::TimeDelta()); |
+ ExpectCompositorVisibility(true); |
+} |
+ |
+TEST_F(PowerEventObserverTest, CanceledSuspend) { |
+ // Tests that the LayerTreeHosts are not marked invisible if a suspend is |
+ // canceled before the lock screen is ready. |
Daniel Erat
2015/02/11 14:11:43
nit: s/canceled/canceled or resumed/
Chirantan Ekbote
2015/02/18 02:47:13
Done.
|
+ SetCanLockScreen(true); |
+ SetShouldLockScreenBeforeSuspending(true); |
+ observer_->SuspendImminent(); |
+ ExpectCompositorVisibility(true); |
+ |
+ observer_->SuspendDone(base::TimeDelta()); |
+ observer_->ScreenIsLocked(); |
+ ExpectCompositorVisibility(true); |
+} |
+ |
} // namespace ash |