summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa/menu_button_unittest.mm
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/cocoa/menu_button_unittest.mm')
-rw-r--r--chrome/browser/ui/cocoa/menu_button_unittest.mm71
1 files changed, 71 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/menu_button_unittest.mm b/chrome/browser/ui/cocoa/menu_button_unittest.mm
index 98a03e9..be8a3e4 100644
--- a/chrome/browser/ui/cocoa/menu_button_unittest.mm
+++ b/chrome/browser/ui/cocoa/menu_button_unittest.mm
@@ -79,6 +79,23 @@ class MenuButtonTest : public CocoaTest {
return menu;
}
+ NSEvent* MouseDownEvent(NSEventType eventType) {
+ NSPoint location;
+ location.x = location.y = 0;
+ NSGraphicsContext* context = [NSGraphicsContext currentContext];
+ NSEvent* event = [NSEvent mouseEventWithType:eventType
+ location:location
+ modifierFlags:0
+ timestamp:0
+ windowNumber:0
+ context:context
+ eventNumber:0
+ clickCount:1
+ pressure:0.0F];
+
+ return event;
+ }
+
MenuButton* button_;
};
@@ -115,4 +132,58 @@ TEST_F(MenuButtonTest, OpenOnClick) {
EXPECT_FALSE([delegate isOpen]);
}
+TEST_F(MenuButtonTest, OpenOnRightClick) {
+ scoped_nsobject<NSMenu> menu(CreateMenu());
+ ASSERT_TRUE(menu.get());
+
+ scoped_nsobject<MenuButtonTestDelegate> delegate(
+ [[MenuButtonTestDelegate alloc] initWithMenu:menu.get()]);
+ ASSERT_TRUE(delegate.get());
+
+ [menu setDelegate:delegate.get()];
+ [button_ setAttachedMenu:menu];
+ [button_ setOpenMenuOnClick:YES];
+ // Right click is enabled.
+ [button_ setOpenMenuOnRightClick:YES];
+
+ EXPECT_FALSE([delegate isOpen]);
+ EXPECT_FALSE([delegate didOpen]);
+
+ // Should open the menu.
+ NSEvent* event = MouseDownEvent(NSRightMouseDown);
+ [button_ rightMouseDown:event];
+
+ EXPECT_TRUE([delegate didOpen]);
+ EXPECT_FALSE([delegate isOpen]);
+}
+
+TEST_F(MenuButtonTest, DontOpenOnRightClickWithoutSetRightClick) {
+ scoped_nsobject<NSMenu> menu(CreateMenu());
+ ASSERT_TRUE(menu.get());
+
+ scoped_nsobject<MenuButtonTestDelegate> delegate(
+ [[MenuButtonTestDelegate alloc] initWithMenu:menu.get()]);
+ ASSERT_TRUE(delegate.get());
+
+ [menu setDelegate:delegate.get()];
+ [button_ setAttachedMenu:menu];
+ [button_ setOpenMenuOnClick:YES];
+
+ EXPECT_FALSE([delegate isOpen]);
+ EXPECT_FALSE([delegate didOpen]);
+
+ // Should not open the menu.
+ NSEvent* event = MouseDownEvent(NSRightMouseDown);
+ [button_ rightMouseDown:event];
+
+ EXPECT_FALSE([delegate didOpen]);
+ EXPECT_FALSE([delegate isOpen]);
+
+ // Should open the menu in this case.
+ [button_ performClick:nil];
+
+ EXPECT_TRUE([delegate didOpen]);
+ EXPECT_FALSE([delegate isOpen]);
+}
+
} // namespace