| Index: ash/wm/maximize_mode/maximize_mode_controller_unittest.cc
|
| diff --git a/ash/wm/maximize_mode/maximize_mode_controller_unittest.cc b/ash/wm/maximize_mode/maximize_mode_controller_unittest.cc
|
| index 3237524bf4b61f0007049067068f1fa1078d5008..0348be3e3e47f0b1cd6b9b0faa09ac77662c3c10 100644
|
| --- a/ash/wm/maximize_mode/maximize_mode_controller_unittest.cc
|
| +++ b/ash/wm/maximize_mode/maximize_mode_controller_unittest.cc
|
| @@ -9,6 +9,8 @@
|
| #include "ash/shell.h"
|
| #include "ash/test/ash_test_base.h"
|
| #include "ash/test/display_manager_test_api.h"
|
| +#include "ui/aura/test/event_generator.h"
|
| +#include "ui/events/event_handler.h"
|
| #include "ui/gfx/vector3d_f.h"
|
|
|
| namespace ash {
|
| @@ -17,6 +19,39 @@ namespace {
|
|
|
| const float kDegreesToRadians = 3.14159265f / 180.0f;
|
|
|
| +// Filter to count the number of events seen.
|
| +class EventCounter : public ui::EventHandler {
|
| + public:
|
| + EventCounter();
|
| + virtual ~EventCounter();
|
| +
|
| + // Overridden from ui::EventHandler:
|
| + virtual void OnEvent(ui::Event* event) OVERRIDE;
|
| +
|
| + void reset() {
|
| + event_count_ = 0;
|
| + }
|
| +
|
| + size_t event_count() const { return event_count_; }
|
| +
|
| + private:
|
| + size_t event_count_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(EventCounter);
|
| +};
|
| +
|
| +EventCounter::EventCounter() : event_count_(0) {
|
| + Shell::GetInstance()->AddPreTargetHandler(this);
|
| +}
|
| +
|
| +EventCounter::~EventCounter() {
|
| + Shell::GetInstance()->RemovePreTargetHandler(this);
|
| +}
|
| +
|
| +void EventCounter::OnEvent(ui::Event* event) {
|
| + event_count_++;
|
| +}
|
| +
|
| } // namespace
|
|
|
| class MaximizeModeControllerTest : public test::AshTestBase {
|
| @@ -232,4 +267,50 @@ TEST_F(MaximizeModeControllerTest, RotationOnlyInMaximizeMode) {
|
| EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation());
|
| }
|
|
|
| +// Tests that maximize mode blocks keyboard events but not touch events. Mouse
|
| +// events are blocked too but EventGenerator does not construct mouse events
|
| +// with a NativeEvent so they would not be blocked in testing.
|
| +TEST_F(MaximizeModeControllerTest, BlocksKeyboard) {
|
| + aura::Window* root = Shell::GetPrimaryRootWindow();
|
| + aura::test::EventGenerator event_generator(root, root);
|
| + EventCounter counter;
|
| +
|
| + event_generator.PressKey(ui::VKEY_ESCAPE, 0);
|
| + event_generator.ReleaseKey(ui::VKEY_ESCAPE, 0);
|
| + EXPECT_GT(counter.event_count(), 0u);
|
| + counter.reset();
|
| +
|
| + event_generator.PressTouch();
|
| + event_generator.ReleaseTouch();
|
| + EXPECT_GT(counter.event_count(), 0u);
|
| + counter.reset();
|
| +
|
| + // Open up 270 degrees.
|
| + TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
|
| + gfx::Vector3dF(1.0f, 0.0f, 0.0f));
|
| + ASSERT_TRUE(IsMaximizeModeStarted());
|
| +
|
| + event_generator.PressKey(ui::VKEY_ESCAPE, 0);
|
| + event_generator.ReleaseKey(ui::VKEY_ESCAPE, 0);
|
| + EXPECT_EQ(0u, counter.event_count());
|
| + counter.reset();
|
| +
|
| + // Touch should not be blocked.
|
| + event_generator.PressTouch();
|
| + event_generator.ReleaseTouch();
|
| + EXPECT_GT(counter.event_count(), 0u);
|
| + counter.reset();
|
| +
|
| + gfx::Vector3dF base;
|
| +
|
| + // Lid open 90 degrees.
|
| + TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
|
| + gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
|
| +
|
| + event_generator.PressKey(ui::VKEY_ESCAPE, 0);
|
| + event_generator.ReleaseKey(ui::VKEY_ESCAPE, 0);
|
| + EXPECT_GT(counter.event_count(), 0u);
|
| + counter.reset();
|
| +}
|
| +
|
| } // namespace ash
|
|
|