Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: ui/base/cocoa/controls/hover_image_menu_button_unittest.mm

Issue 15955003: Menu for the OSX app launcher. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix comment Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/cocoa/controls/hover_image_menu_button_cell.mm ('k') | ui/ui.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 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 #import "ui/base/cocoa/controls/hover_image_menu_button.h"
6
7 #include "base/mac/foundation_util.h"
8 #import "testing/gtest_mac.h"
9 #import "ui/base/cocoa/controls/hover_image_menu_button_cell.h"
10 #import "ui/base/test/ui_cocoa_test_helper.h"
11
12 namespace ui {
13
14 namespace {
15
16 // Test initialization and display of the NSPopUpButton that shows the drop-
17 // down menu. Don't try to show the menu, since it will block the thread.
18 class HoverImageMenuButtonTest : public CocoaTest {
19 public:
20 HoverImageMenuButtonTest() {}
21
22 // CocoaTest override:
23 virtual void SetUp() OVERRIDE;
24
25 protected:
26 scoped_nsobject<HoverImageMenuButton> menu_button_;
27 scoped_nsobject<NSImage> normal_;
28 scoped_nsobject<NSImage> pressed_;
29 scoped_nsobject<NSImage> hovered_;
30
31 DISALLOW_COPY_AND_ASSIGN(HoverImageMenuButtonTest);
32 };
33
34 void HoverImageMenuButtonTest::SetUp() {
35 menu_button_.reset(
36 [[HoverImageMenuButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)
37 pullsDown:YES]);
38
39 normal_.reset([base::mac::ObjCCastStrict<NSImage>(
40 [NSImage imageNamed:NSImageNameStatusAvailable]) retain]);
41 pressed_.reset([base::mac::ObjCCastStrict<NSImage>(
42 [NSImage imageNamed:NSImageNameStatusUnavailable]) retain]);
43 hovered_.reset([base::mac::ObjCCastStrict<NSImage>(
44 [NSImage imageNamed:NSImageNameStatusPartiallyAvailable]) retain]);
45 [[menu_button_ hoverImageMenuButtonCell] setDefaultImage:normal_];
46 [[menu_button_ hoverImageMenuButtonCell] setAlternateImage:pressed_];
47 [[menu_button_ hoverImageMenuButtonCell] setHoverImage:hovered_];
48
49 CocoaTest::SetUp();
50 [[test_window() contentView] addSubview:menu_button_];
51 }
52
53 } // namespace
54
55 TEST_VIEW(HoverImageMenuButtonTest, menu_button_);
56
57 // Tests that the correct image is chosen, depending on the cell's state flags.
58 TEST_F(HoverImageMenuButtonTest, CheckImagesForState) {
59 EXPECT_FALSE([[menu_button_ cell] isHovered]);
60 EXPECT_FALSE([[menu_button_ cell] isHighlighted]);
61 EXPECT_NSEQ(normal_, [[menu_button_ cell] imageToDraw]);
62 [menu_button_ display];
63
64 [[menu_button_ cell] setHovered:YES];
65 EXPECT_TRUE([[menu_button_ cell] isHovered]);
66 EXPECT_FALSE([[menu_button_ cell] isHighlighted]);
67 EXPECT_NSEQ(hovered_, [[menu_button_ cell] imageToDraw]);
68 [menu_button_ display];
69
70 // Highlighted takes precendece over hover.
71 [[menu_button_ cell] setHighlighted:YES];
72 EXPECT_TRUE([[menu_button_ cell] isHovered]);
73 EXPECT_TRUE([[menu_button_ cell] isHighlighted]);
74 EXPECT_NSEQ(pressed_, [[menu_button_ cell] imageToDraw]);
75 [menu_button_ display];
76
77 [[menu_button_ cell] setHovered:NO];
78 EXPECT_FALSE([[menu_button_ cell] isHovered]);
79 EXPECT_TRUE([[menu_button_ cell] isHighlighted]);
80 EXPECT_NSEQ(pressed_, [[menu_button_ cell] imageToDraw]);
81 [menu_button_ display];
82
83 [[menu_button_ cell] setHighlighted:NO];
84 EXPECT_FALSE([[menu_button_ cell] isHovered]);
85 EXPECT_FALSE([[menu_button_ cell] isHighlighted]);
86 EXPECT_NSEQ(normal_, [[menu_button_ cell] imageToDraw]);
87 [menu_button_ display];
88 }
89
90 // Tests that calling the various setXImage functions calls setNeedsDisplay.
91 TEST_F(HoverImageMenuButtonTest, NewImageCausesDisplay) {
92 [menu_button_ display];
93 EXPECT_FALSE([menu_button_ needsDisplay]);
94
95 // Uses setDefaultImage rather than setImage to ensure the image goes into the
96 // NSPopUpButtonCell's menuItem. It is then accessible using [NSCell image].
97 EXPECT_NSEQ(normal_, [[menu_button_ cell] image]);
98 [[menu_button_ cell] setDefaultImage:pressed_];
99 EXPECT_NSEQ(pressed_, [[menu_button_ cell] image]);
100 EXPECT_TRUE([menu_button_ needsDisplay]);
101 [menu_button_ display];
102 EXPECT_FALSE([menu_button_ needsDisplay]);
103
104 // Highlighting the cell requires a redisplay.
105 [[menu_button_ cell] setHighlighted:YES];
106 EXPECT_TRUE([menu_button_ needsDisplay]);
107 [menu_button_ display];
108 EXPECT_FALSE([menu_button_ needsDisplay]);
109
110 // setAlternateImage comes from NSButtonCell. Ensure the added setHover*
111 // behaviour matches.
112 [[menu_button_ cell] setAlternateImage:normal_];
113 EXPECT_TRUE([menu_button_ needsDisplay]);
114 [menu_button_ display];
115 EXPECT_FALSE([menu_button_ needsDisplay]);
116
117 // Setting the same image should not cause a redisplay.
118 [[menu_button_ cell] setAlternateImage:normal_];
119 EXPECT_FALSE([menu_button_ needsDisplay]);
120
121 // Unhighlighting requires a redisplay.
122 [[menu_button_ cell] setHighlighted:NO];
123 EXPECT_TRUE([menu_button_ needsDisplay]);
124 [menu_button_ display];
125 EXPECT_FALSE([menu_button_ needsDisplay]);
126
127 // Changing hover state requires a redisplay.
128 [[menu_button_ cell] setHovered:YES];
129 EXPECT_TRUE([menu_button_ needsDisplay]);
130 [menu_button_ display];
131 EXPECT_FALSE([menu_button_ needsDisplay]);
132
133 // setHoverImage comes directly from storage in HoverImageMenuButtonCell.
134 [[menu_button_ cell] setHoverImage:normal_];
135 EXPECT_TRUE([menu_button_ needsDisplay]);
136 [menu_button_ display];
137 EXPECT_FALSE([menu_button_ needsDisplay]);
138
139 // Setting the same image should not cause a redisplay.
140 [[menu_button_ cell] setHoverImage:normal_];
141 EXPECT_FALSE([menu_button_ needsDisplay]);
142
143 // Unhover requires a redisplay.
144 [[menu_button_ cell] setHovered:NO];
145 EXPECT_TRUE([menu_button_ needsDisplay]);
146 [menu_button_ display];
147 EXPECT_FALSE([menu_button_ needsDisplay]);
148
149 // Changing the image while not hovered should not require a redisplay.
150 [[menu_button_ cell] setHoverImage:pressed_];
151 EXPECT_FALSE([menu_button_ needsDisplay]);
152 }
153
154 // Test that the mouse enter and exit is properly handled, to set hover state.
155 TEST_F(HoverImageMenuButtonTest, SimulateMouseEnterExit) {
156 [menu_button_ display];
157 EXPECT_FALSE([menu_button_ needsDisplay]);
158 EXPECT_NSEQ(normal_, [[menu_button_ cell] imageToDraw]);
159
160 [menu_button_ mouseEntered:nil];
161 EXPECT_TRUE([menu_button_ needsDisplay]);
162 EXPECT_NSEQ(hovered_, [[menu_button_ cell] imageToDraw]);
163 [menu_button_ display];
164 EXPECT_FALSE([menu_button_ needsDisplay]);
165
166 [menu_button_ mouseExited:nil];
167 EXPECT_TRUE([menu_button_ needsDisplay]);
168 EXPECT_NSEQ(normal_, [[menu_button_ cell] imageToDraw]);
169 [menu_button_ display];
170 EXPECT_FALSE([menu_button_ needsDisplay]);
171 }
172
173 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/cocoa/controls/hover_image_menu_button_cell.mm ('k') | ui/ui.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698