diff options
Diffstat (limited to 'chrome/browser/ui/cocoa/event_utils_unittest.mm')
-rw-r--r-- | chrome/browser/ui/cocoa/event_utils_unittest.mm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/event_utils_unittest.mm b/chrome/browser/ui/cocoa/event_utils_unittest.mm new file mode 100644 index 0000000..6f0b7fe --- /dev/null +++ b/chrome/browser/ui/cocoa/event_utils_unittest.mm @@ -0,0 +1,61 @@ +// Copyright (c) 2009 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 <objc/objc-class.h> + +#import "chrome/browser/ui/cocoa/cocoa_test_helper.h" +#include "chrome/browser/ui/cocoa/event_utils.h" +#include "chrome/browser/ui/cocoa/test_event_utils.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/platform_test.h" + +// We provide a donor class with a specially modified |modifierFlags| +// implementation that we swap with NSEvent's. This is because we can't create a +// NSEvent that represents a middle click with modifiers. +@interface TestEvent : NSObject +@end +@implementation TestEvent +- (NSUInteger)modifierFlags { return NSShiftKeyMask; } +@end + +namespace { + +class EventUtilsTest : public CocoaTest { +}; + +TEST_F(EventUtilsTest, TestWindowOpenDispositionFromNSEvent) { + // Left Click = same tab. + NSEvent* me = test_event_utils::MakeMouseEvent(NSLeftMouseUp, 0); + EXPECT_EQ(CURRENT_TAB, event_utils::WindowOpenDispositionFromNSEvent(me)); + + // Middle Click = new background tab. + me = test_event_utils::MakeMouseEvent(NSOtherMouseUp, 0); + EXPECT_EQ(NEW_BACKGROUND_TAB, + event_utils::WindowOpenDispositionFromNSEvent(me)); + + // Shift+Middle Click = new foreground tab. + { + ScopedClassSwizzler swizzler([NSEvent class], [TestEvent class], + @selector(modifierFlags)); + me = test_event_utils::MakeMouseEvent(NSOtherMouseUp, NSShiftKeyMask); + EXPECT_EQ(NEW_FOREGROUND_TAB, + event_utils::WindowOpenDispositionFromNSEvent(me)); + } + + // Cmd+Left Click = new background tab. + me = test_event_utils::MakeMouseEvent(NSLeftMouseUp, NSCommandKeyMask); + EXPECT_EQ(NEW_BACKGROUND_TAB, + event_utils::WindowOpenDispositionFromNSEvent(me)); + + // Cmd+Shift+Left Click = new foreground tab. + me = test_event_utils::MakeMouseEvent(NSLeftMouseUp, NSCommandKeyMask | NSShiftKeyMask); + EXPECT_EQ(NEW_FOREGROUND_TAB, + event_utils::WindowOpenDispositionFromNSEvent(me)); + + // Shift+Left Click = new window + me = test_event_utils::MakeMouseEvent(NSLeftMouseUp, NSShiftKeyMask); + EXPECT_EQ(NEW_WINDOW, event_utils::WindowOpenDispositionFromNSEvent(me)); +} + +} // namespace |