Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: ash/wm/maximize_mode/maximize_mode_controller_unittest.cc

Issue 230613004: Block keyboard and mouse input when maximize mode is activated by accelerometer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use event targeter to block keyboard and mouse events. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..6cf53fb52ff5f30c44ea6efe31c1b381bf22e8de 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() { return event_count_; }
oshima 2014/04/10 20:52:57 const
flackr 2014/04/10 21:24:55 Done.
+
+ 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
« no previous file with comments | « ash/wm/maximize_mode/maximize_mode_controller.cc ('k') | ash/wm/maximize_mode/maximize_mode_event_blocker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698