1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/cocoa/browser/zoom_bubble_controller.h"
7 #include "base/mac/bind_objc_block.h"
8 #import "base/mac/mac_util.h"
9 #include "base/time/time.h"
10 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
11 #import "chrome/browser/ui/cocoa/info_bubble_window.h"
12 #include "chrome/browser/ui/cocoa/run_loop_testing.h"
14 typedef CocoaTest ZoomBubbleControllerTest;
16 TEST_F(ZoomBubbleControllerTest, CloseObserver) {
17 __block ZoomBubbleController* controller = nil;
18 __block BOOL didObserve = NO;
19 void(^observer)(ZoomBubbleController*) = ^(ZoomBubbleController* bubble) {
20 EXPECT_EQ(controller, bubble);
25 [[ZoomBubbleController alloc] initWithParentWindow:test_window()
26 closeObserver:observer];
27 [controller showForWebContents:NULL anchoredAt:NSZeroPoint autoClose:NO];
28 [base::mac::ObjCCastStrict<InfoBubbleWindow>([controller window])
29 setAllowedAnimations:info_bubble::kAnimateNone];
31 EXPECT_FALSE(didObserve);
34 chrome::testing::NSRunLoopRunAllPending();
36 EXPECT_TRUE(didObserve);
39 TEST_F(ZoomBubbleControllerTest, AutoClose) {
40 __block BOOL didObserve = NO;
41 ZoomBubbleController* controller = [[ZoomBubbleController alloc]
42 initWithParentWindow:test_window()
43 closeObserver:^(ZoomBubbleController*) {
46 chrome::SetZoomBubbleAutoCloseDelayForTesting(0);
47 [controller showForWebContents:NULL anchoredAt:NSZeroPoint autoClose:YES];
48 [base::mac::ObjCCastStrict<InfoBubbleWindow>([controller window])
49 setAllowedAnimations:info_bubble::kAnimateNone];
51 EXPECT_FALSE(didObserve);
52 chrome::testing::NSRunLoopRunAllPending();
53 EXPECT_TRUE(didObserve);
56 TEST_F(ZoomBubbleControllerTest, MouseEnteredExited) {
57 __block BOOL didObserve = NO;
58 ZoomBubbleController* controller = [[ZoomBubbleController alloc]
59 initWithParentWindow:test_window()
60 closeObserver:^(ZoomBubbleController*) {
64 chrome::SetZoomBubbleAutoCloseDelayForTesting(0);
65 [controller showForWebContents:NULL anchoredAt:NSZeroPoint autoClose:YES];
66 [base::mac::ObjCCastStrict<InfoBubbleWindow>([controller window])
67 setAllowedAnimations:info_bubble::kAnimateNone];
69 EXPECT_FALSE(didObserve);
70 [controller mouseEntered:nil];
71 chrome::testing::NSRunLoopRunAllPending();
72 EXPECT_FALSE(didObserve);
74 [controller mouseExited:nil];
75 chrome::testing::NSRunLoopRunAllPending();
76 EXPECT_TRUE(didObserve);