- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / browser / zoom_bubble_controller_unittest.mm
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.
4
5 #include "chrome/browser/ui/cocoa/browser/zoom_bubble_controller.h"
6
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"
13
14 typedef CocoaTest ZoomBubbleControllerTest;
15
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);
21       didObserve = YES;
22   };
23
24   controller =
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];
30
31   EXPECT_FALSE(didObserve);
32
33   [controller close];
34   chrome::testing::NSRunLoopRunAllPending();
35
36   EXPECT_TRUE(didObserve);
37 }
38
39 TEST_F(ZoomBubbleControllerTest, AutoClose) {
40   __block BOOL didObserve = NO;
41   ZoomBubbleController* controller = [[ZoomBubbleController alloc]
42       initWithParentWindow:test_window()
43              closeObserver:^(ZoomBubbleController*) {
44                 didObserve = YES;
45              }];
46   chrome::SetZoomBubbleAutoCloseDelayForTesting(0);
47   [controller showForWebContents:NULL anchoredAt:NSZeroPoint autoClose:YES];
48   [base::mac::ObjCCastStrict<InfoBubbleWindow>([controller window])
49       setAllowedAnimations:info_bubble::kAnimateNone];
50
51   EXPECT_FALSE(didObserve);
52   chrome::testing::NSRunLoopRunAllPending();
53   EXPECT_TRUE(didObserve);
54 }
55
56 TEST_F(ZoomBubbleControllerTest, MouseEnteredExited) {
57   __block BOOL didObserve = NO;
58   ZoomBubbleController* controller = [[ZoomBubbleController alloc]
59       initWithParentWindow:test_window()
60              closeObserver:^(ZoomBubbleController*) {
61                 didObserve = YES;
62              }];
63
64   chrome::SetZoomBubbleAutoCloseDelayForTesting(0);
65   [controller showForWebContents:NULL anchoredAt:NSZeroPoint autoClose:YES];
66   [base::mac::ObjCCastStrict<InfoBubbleWindow>([controller window])
67       setAllowedAnimations:info_bubble::kAnimateNone];
68
69   EXPECT_FALSE(didObserve);
70   [controller mouseEntered:nil];
71   chrome::testing::NSRunLoopRunAllPending();
72   EXPECT_FALSE(didObserve);
73
74   [controller mouseExited:nil];
75   chrome::testing::NSRunLoopRunAllPending();
76   EXPECT_TRUE(didObserve);
77 }