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

Unified Diff: ui/base/cocoa/events_mac_unittest.mm

Issue 8953037: Aura needs event translation for Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Nico's comment #5. Created 9 years 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
« no previous file with comments | « ui/base/cocoa/events_mac.mm ('k') | ui/base/events.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/cocoa/events_mac_unittest.mm
diff --git a/ui/base/cocoa/events_mac_unittest.mm b/ui/base/cocoa/events_mac_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..ccb05dd0ec5b47fa53674e06d68290cd73ce5dfb
--- /dev/null
+++ b/ui/base/cocoa/events_mac_unittest.mm
@@ -0,0 +1,298 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <Cocoa/Cocoa.h>
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/events.h"
+#include "ui/base/test/cocoa_test_event_utils.h"
+#import "ui/base/test/ui_cocoa_test_helper.h"
+#include "ui/gfx/point.h"
+
+using namespace cocoa_test_event_utils;
+
+namespace {
+
+class EventsMacTest : public ui::CocoaTest {
+ public:
+ EventsMacTest() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(EventsMacTest);
+};
+
+TEST_F(EventsMacTest, EventTypeFromNative) {
+ NSEvent* native_event = nil;
+ ui::EventType type = ui::ET_UNKNOWN;
+
+ native_event = MouseEventWithType(NSLeftMouseDown, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_PRESSED, type);
+
+ native_event = MouseEventWithType(NSLeftMouseUp, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_RELEASED, type);
+
+ native_event = MouseEventWithType(NSRightMouseDown, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_PRESSED, type);
+
+ native_event = MouseEventWithType(NSRightMouseUp, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_RELEASED, type);
+
+ native_event = MouseEventWithType(NSMouseMoved, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_MOVED, type);
+
+ native_event = MouseEventWithType(NSLeftMouseDragged, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_DRAGGED, type);
+
+ native_event = MouseEventWithType(NSRightMouseDragged, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_DRAGGED, type);
+
+ native_event = EnterExitEventWithType(NSMouseEntered);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_ENTERED, type);
+
+ native_event = EnterExitEventWithType(NSMouseExited);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_EXITED, type);
+
+ native_event = KeyEventWithType(NSKeyDown, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_KEY_PRESSED, type);
+
+ native_event = KeyEventWithType(NSKeyUp, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_KEY_RELEASED, type);
+
+ native_event = KeyEventWithType(NSFlagsChanged, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_KEY_PRESSED, type);
+
+ native_event = OtherEventWithType(NSAppKitDefined);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_UNKNOWN, type);
+
+ native_event = OtherEventWithType(NSSystemDefined);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_UNKNOWN, type);
+
+ native_event = OtherEventWithType(NSApplicationDefined);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_UNKNOWN, type);
+
+ native_event = OtherEventWithType(NSPeriodic);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_UNKNOWN, type);
+
+ native_event = EnterExitEventWithType(NSCursorUpdate);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_UNKNOWN, type);
+
+ native_event = MouseEventWithType(NSOtherMouseDown, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_PRESSED, type);
+
+ native_event = MouseEventWithType(NSOtherMouseUp, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_RELEASED, type);
+
+ native_event = MouseEventWithType(NSOtherMouseDragged, 0);
+ type = ui::EventTypeFromNative(native_event);
+ EXPECT_EQ(ui::ET_MOUSE_DRAGGED, type);
+}
+
+TEST_F(EventsMacTest, EventFlagsFromNative) {
+ NSEvent* native_event = nil;
+ int flags = 0;
+
+ // No key flags.
+ native_event = KeyEventWithType(NSKeyDown, 0);
+ flags = ui::EventFlagsFromNative(native_event);
+ EXPECT_EQ(0, flags);
+
+ // All key flags.
+ native_event = KeyEventWithType(NSKeyDown,
+ NSAlphaShiftKeyMask |
+ NSShiftKeyMask |
+ NSControlKeyMask |
+ NSAlternateKeyMask |
+ NSCommandKeyMask);
+ flags = ui::EventFlagsFromNative(native_event);
+ EXPECT_EQ(ui::EF_CAPS_LOCK_DOWN |
+ ui::EF_SHIFT_DOWN |
+ ui::EF_CONTROL_DOWN |
+ ui::EF_ALT_DOWN |
+ ui::EF_COMMAND_DOWN,
+ flags);
+
+ // Left mouse flags.
+ native_event = MouseEventWithType(NSLeftMouseDown, 0);
+ flags = ui::EventFlagsFromNative(native_event);
+ EXPECT_EQ(ui::EF_LEFT_BUTTON_DOWN, flags);
+
+ // Right mouse flags.
+ native_event = MouseEventWithType(NSRightMouseDown, 0);
+ flags = ui::EventFlagsFromNative(native_event);
+ EXPECT_EQ(ui::EF_RIGHT_BUTTON_DOWN, flags);
+
+ // Center mouse flags.
+ native_event = MouseEventWithType(NSOtherMouseDown, 0);
+ flags = ui::EventFlagsFromNative(native_event);
+ EXPECT_EQ(ui::EF_MIDDLE_BUTTON_DOWN, flags);
+}
+
+TEST_F(EventsMacTest, EventLocationFromNative) {
+ NSWindow* window = [[NSWindow alloc]
+ initWithContentRect:NSMakeRect(10, 25, 200, 205)
+ styleMask:NSTitledWindowMask
+ backing:NSBackingStoreBuffered
+ defer:NO];
+ [window orderFront:nil];
+
+ // Construct mouse event from window number having position at bottom-left.
+ // Cocoa origin is at bottom-left. ui::Event origin is top-left.
+ NSEvent* native_event =
+ [NSEvent mouseEventWithType:NSLeftMouseDown
+ location:NSMakePoint(10, 15)
+ modifierFlags:0
+ timestamp:[NSDate timeIntervalSinceReferenceDate]
+ windowNumber:[window windowNumber]
+ context:[window graphicsContext]
+ eventNumber:0
+ clickCount:1
+ pressure:0.0f];
+
+ // Expect resulting event to be positioned relative to top-left.
+ gfx::Point location = ui::EventLocationFromNative(native_event);
+ EXPECT_EQ(gfx::Point(10, 190), location);
+
+ [window orderOut:nil];
+ [window close];
+}
+
+TEST_F(EventsMacTest, KeyboardCodeFromNative) {
+ NSEvent* native_event = nil;
+ ui::KeyboardCode code = ui::VKEY_UNKNOWN;
+
+ // Simple "x". No modifiers.
+ native_event =
+ [NSEvent keyEventWithType:NSKeyDown
+ location:NSZeroPoint
+ modifierFlags:0
+ timestamp:[NSDate timeIntervalSinceReferenceDate]
+ windowNumber:0
+ context:nil
+ characters:@"x"
+ charactersIgnoringModifiers:@"x"
+ isARepeat:NO
+ keyCode:0x58];
+ code = ui::KeyboardCodeFromNative(native_event);
+ EXPECT_EQ(ui::VKEY_X, code);
+
+ // Option/Alt "x".
+ native_event =
+ [NSEvent keyEventWithType:NSKeyDown
+ location:NSZeroPoint
+ modifierFlags:NSAlternateKeyMask
+ timestamp:[NSDate timeIntervalSinceReferenceDate]
+ windowNumber:0
+ context:nil
+ characters:@"\0x2248" // opt-x
+ charactersIgnoringModifiers:@"x"
+ isARepeat:NO
+ keyCode:0x58];
+ code = ui::KeyboardCodeFromNative(native_event);
+ EXPECT_EQ(ui::VKEY_X, code);
+
+ // Option/Alt (alone).
+ native_event =
+ [NSEvent keyEventWithType:NSFlagsChanged
+ location:NSZeroPoint
+ modifierFlags:NSAlternateKeyMask
+ timestamp:[NSDate timeIntervalSinceReferenceDate]
+ windowNumber:0
+ context:nil
+ characters:@""
+ charactersIgnoringModifiers:@""
+ isARepeat:NO
+ keyCode:0x3a];
+ code = ui::KeyboardCodeFromNative(native_event);
+ EXPECT_EQ(ui::VKEY_MENU, code);
+}
+
+TEST_F(EventsMacTest, IsMouseEvent) {
+ NSEvent* native_event = nil;
+
+ native_event = MouseEventWithType(NSLeftMouseDown, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSLeftMouseUp, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSRightMouseDown, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSRightMouseUp, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSMouseMoved, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSLeftMouseDragged, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSRightMouseDragged, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = EnterExitEventWithType(NSMouseEntered);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = EnterExitEventWithType(NSMouseExited);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = KeyEventWithType(NSKeyDown, 0);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = KeyEventWithType(NSKeyUp, 0);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = KeyEventWithType(NSFlagsChanged, 0);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = OtherEventWithType(NSAppKitDefined);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = OtherEventWithType(NSSystemDefined);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = OtherEventWithType(NSApplicationDefined);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = OtherEventWithType(NSPeriodic);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = EnterExitEventWithType(NSCursorUpdate);
+ EXPECT_FALSE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSOtherMouseDown, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSOtherMouseUp, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+
+ native_event = MouseEventWithType(NSOtherMouseDragged, 0);
+ EXPECT_TRUE(ui::IsMouseEvent(native_event));
+}
+
+TEST_F(EventsMacTest, CreateNoopEvent) {
+ NSEvent* native_event = ui::CreateNoopEvent();
+ EXPECT_TRUE(native_event != nil);
+}
+
+} // namespace
« no previous file with comments | « ui/base/cocoa/events_mac.mm ('k') | ui/base/events.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698