1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// 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.
#include <Carbon/Carbon.h>
#include "base/debug/debugger.h"
#include "base/mac/scoped_nsobject.h"
#include "base/run_loop.h"
#import "chrome/browser/ui/cocoa/base_bubble_controller.h"
#include "chrome/browser/ui/cocoa/info_bubble_window.h"
#include "chrome/browser/ui/cocoa/test/cocoa_test_helper.h"
#include "chrome/browser/ui/cocoa/test/run_loop_testing.h"
#include "ui/events/test/cocoa_test_event_utils.h"
// Mock BaseBubbleController to pick up -cancel:, but don't call the designated
// initializer in order to test just InfoBubbleWindow.
@interface InfoBubbleWindowController : BaseBubbleController
@end
@implementation InfoBubbleWindowController
- (IBAction)cancel:(id)sender {
[self close];
}
@end
class InfoBubbleWindowTest : public CocoaTest {
public:
void SetUp() override {
CocoaTest::SetUp();
window_.reset(
[[InfoBubbleWindow alloc] initWithContentRect:NSMakeRect(0, 0, 10, 10)
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO]);
[window_ setAllowedAnimations:info_bubble::kAnimateNone];
controller_.reset(
[[InfoBubbleWindowController alloc] initWithWindow:window_]);
}
void TearDown() override {
// Both controller and window need to be closed & released before TearDown,
// or CocoaTest will consider the window still open and spinwait for it to
// close.
[controller_ close];
chrome::testing::NSRunLoopRunAllPending();
controller_.reset();
window_.reset();
CocoaTest::TearDown();
}
base::scoped_nsobject<InfoBubbleWindow> window_;
base::scoped_nsobject<NSWindowController> controller_;
};
TEST_F(InfoBubbleWindowTest, Basics2) {
EXPECT_TRUE([window_ canBecomeKeyWindow]);
EXPECT_FALSE([window_ canBecomeMainWindow]);
EXPECT_TRUE([window_ isExcludedFromWindowsMenu]);
}
TEST_F(InfoBubbleWindowTest, EscapeCloses) {
[controller_ showWindow:nil];
EXPECT_TRUE([window_ isVisible]);
[window_ performKeyEquivalent:cocoa_test_event_utils::KeyEventWithKeyCode(
kVK_Escape, '\e', NSKeyDown, 0)];
EXPECT_FALSE([window_ isVisible]);
}
TEST_F(InfoBubbleWindowTest, CommandPeriodCloses) {
[controller_ showWindow:nil];
EXPECT_TRUE([window_ isVisible]);
[window_ performKeyEquivalent:cocoa_test_event_utils::KeyEventWithKeyCode(
kVK_ANSI_Period, '.', NSKeyDown,
NSCommandKeyMask)];
EXPECT_FALSE([window_ isVisible]);
}
|