OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" | 5 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" |
6 | 6 |
7 #import "base/mac/scoped_nsobject.h" | 7 #import "base/mac/scoped_nsobject.h" |
8 #import "base/mac/scoped_objc_class_swizzler.h" | 8 #import "base/mac/scoped_objc_class_swizzler.h" |
9 #import "base/mac/sdk_forward_declarations.h" | 9 #import "base/mac/sdk_forward_declarations.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 base::scoped_nsobject<InfoBubbleWindow> bubble_window_; | 158 base::scoped_nsobject<InfoBubbleWindow> bubble_window_; |
159 BaseBubbleController* controller_; | 159 BaseBubbleController* controller_; |
160 | 160 |
161 private: | 161 private: |
162 DISALLOW_COPY_AND_ASSIGN(BaseBubbleControllerTest); | 162 DISALLOW_COPY_AND_ASSIGN(BaseBubbleControllerTest); |
163 }; | 163 }; |
164 | 164 |
165 // Test that kAlignEdgeToAnchorEdge and a left bubble arrow correctly aligns the | 165 // Test that kAlignEdgeToAnchorEdge and a left bubble arrow correctly aligns the |
166 // left edge of the buble to the anchor point. | 166 // left edge of the buble to the anchor point. |
167 TEST_F(BaseBubbleControllerTest, LeftAlign) { | 167 TEST_F(BaseBubbleControllerTest, LeftAlign) { |
168 [[controller_ bubble] setArrowLocation:info_bubble::kTopLeft]; | 168 [[controller_ bubble] setArrowLocation:info_bubble::kTopLeading]; |
169 [[controller_ bubble] setAlignment:info_bubble::kAlignEdgeToAnchorEdge]; | 169 [[controller_ bubble] setAlignment:info_bubble::kAlignEdgeToAnchorEdge]; |
170 [controller_ showWindow:nil]; | 170 [controller_ showWindow:nil]; |
171 | 171 |
172 NSRect frame = [[controller_ window] frame]; | 172 NSRect frame = [[controller_ window] frame]; |
173 // Make sure the bubble size hasn't changed. | 173 // Make sure the bubble size hasn't changed. |
174 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); | 174 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); |
175 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); | 175 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); |
176 // Make sure the bubble is left aligned. | 176 // Make sure the bubble is left aligned. |
177 EXPECT_EQ(NSMinX(frame), kAnchorPointX); | 177 EXPECT_EQ(NSMinX(frame), kAnchorPointX); |
178 EXPECT_GE(NSMaxY(frame), kAnchorPointY); | 178 EXPECT_GE(NSMaxY(frame), kAnchorPointY); |
179 } | 179 } |
180 | 180 |
181 // Test that kAlignEdgeToAnchorEdge and a right bubble arrow correctly aligns | 181 // Test that kAlignEdgeToAnchorEdge and a right bubble arrow correctly aligns |
182 // the right edge of the buble to the anchor point. | 182 // the right edge of the buble to the anchor point. |
183 TEST_F(BaseBubbleControllerTest, RightAlign) { | 183 TEST_F(BaseBubbleControllerTest, RightAlign) { |
184 [[controller_ bubble] setArrowLocation:info_bubble::kTopRight]; | 184 [[controller_ bubble] setArrowLocation:info_bubble::kTopTrailing]; |
185 [[controller_ bubble] setAlignment:info_bubble::kAlignEdgeToAnchorEdge]; | 185 [[controller_ bubble] setAlignment:info_bubble::kAlignEdgeToAnchorEdge]; |
186 [controller_ showWindow:nil]; | 186 [controller_ showWindow:nil]; |
187 | 187 |
188 NSRect frame = [[controller_ window] frame]; | 188 NSRect frame = [[controller_ window] frame]; |
189 // Make sure the bubble size hasn't changed. | 189 // Make sure the bubble size hasn't changed. |
190 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); | 190 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); |
191 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); | 191 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); |
192 // Make sure the bubble is left aligned. | 192 // Make sure the bubble is left aligned. |
193 EXPECT_EQ(NSMaxX(frame), kAnchorPointX); | 193 EXPECT_EQ(NSMaxX(frame), kAnchorPointX); |
194 EXPECT_GE(NSMaxY(frame), kAnchorPointY); | 194 EXPECT_GE(NSMaxY(frame), kAnchorPointY); |
195 } | 195 } |
196 | 196 |
197 // Test that kAlignArrowToAnchor and a left bubble arrow correctly aligns | 197 // Test that kAlignArrowToAnchor and a left bubble arrow correctly aligns |
198 // the bubble arrow to the anchor point. | 198 // the bubble arrow to the anchor point. |
199 TEST_F(BaseBubbleControllerTest, AnchorAlignLeftArrow) { | 199 TEST_F(BaseBubbleControllerTest, AnchorAlignLeftArrow) { |
200 [[controller_ bubble] setArrowLocation:info_bubble::kTopLeft]; | 200 [[controller_ bubble] setArrowLocation:info_bubble::kTopLeading]; |
201 [[controller_ bubble] setAlignment:info_bubble::kAlignArrowToAnchor]; | 201 [[controller_ bubble] setAlignment:info_bubble::kAlignArrowToAnchor]; |
202 [controller_ showWindow:nil]; | 202 [controller_ showWindow:nil]; |
203 | 203 |
204 NSRect frame = [[controller_ window] frame]; | 204 NSRect frame = [[controller_ window] frame]; |
205 // Make sure the bubble size hasn't changed. | 205 // Make sure the bubble size hasn't changed. |
206 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); | 206 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); |
207 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); | 207 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); |
208 // Make sure the bubble arrow points to the anchor. | 208 // Make sure the bubble arrow points to the anchor. |
209 EXPECT_EQ(NSMinX(frame) + info_bubble::kBubbleArrowXOffset + | 209 EXPECT_EQ(NSMinX(frame) + info_bubble::kBubbleArrowXOffset + |
210 roundf(info_bubble::kBubbleArrowWidth / 2.0), kAnchorPointX); | 210 roundf(info_bubble::kBubbleArrowWidth / 2.0), kAnchorPointX); |
211 EXPECT_GE(NSMaxY(frame), kAnchorPointY); | 211 EXPECT_GE(NSMaxY(frame), kAnchorPointY); |
212 } | 212 } |
213 | 213 |
214 // Test that kAlignArrowToAnchor and a right bubble arrow correctly aligns | 214 // Test that kAlignArrowToAnchor and a right bubble arrow correctly aligns |
215 // the bubble arrow to the anchor point. | 215 // the bubble arrow to the anchor point. |
216 TEST_F(BaseBubbleControllerTest, AnchorAlignRightArrow) { | 216 TEST_F(BaseBubbleControllerTest, AnchorAlignRightArrow) { |
217 [[controller_ bubble] setArrowLocation:info_bubble::kTopRight]; | 217 [[controller_ bubble] setArrowLocation:info_bubble::kTopTrailing]; |
218 [[controller_ bubble] setAlignment:info_bubble::kAlignArrowToAnchor]; | 218 [[controller_ bubble] setAlignment:info_bubble::kAlignArrowToAnchor]; |
219 [controller_ showWindow:nil]; | 219 [controller_ showWindow:nil]; |
220 | 220 |
221 NSRect frame = [[controller_ window] frame]; | 221 NSRect frame = [[controller_ window] frame]; |
222 // Make sure the bubble size hasn't changed. | 222 // Make sure the bubble size hasn't changed. |
223 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); | 223 EXPECT_EQ(frame.size.width, kBubbleWindowWidth); |
224 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); | 224 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); |
225 // Make sure the bubble arrow points to the anchor. | 225 // Make sure the bubble arrow points to the anchor. |
226 EXPECT_EQ(NSMaxX(frame) - info_bubble::kBubbleArrowXOffset - | 226 EXPECT_EQ(NSMaxX(frame) - info_bubble::kBubbleArrowXOffset - |
227 floorf(info_bubble::kBubbleArrowWidth / 2.0), kAnchorPointX); | 227 floorf(info_bubble::kBubbleArrowWidth / 2.0), kAnchorPointX); |
(...skipping 13 matching lines...) Expand all Loading... |
241 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); | 241 EXPECT_EQ(frame.size.height, kBubbleWindowHeight); |
242 // Make sure the bubble arrow points to the anchor. | 242 // Make sure the bubble arrow points to the anchor. |
243 EXPECT_EQ(NSMidX(frame), kAnchorPointX); | 243 EXPECT_EQ(NSMidX(frame), kAnchorPointX); |
244 EXPECT_GE(NSMaxY(frame), kAnchorPointY); | 244 EXPECT_GE(NSMaxY(frame), kAnchorPointY); |
245 } | 245 } |
246 | 246 |
247 // Test that the window is given an initial position before being shown. This | 247 // Test that the window is given an initial position before being shown. This |
248 // ensures offscreen initialization is done using correct screen metrics. | 248 // ensures offscreen initialization is done using correct screen metrics. |
249 TEST_F(BaseBubbleControllerTest, PositionedBeforeShow) { | 249 TEST_F(BaseBubbleControllerTest, PositionedBeforeShow) { |
250 // Verify default alignment settings, used when initialized in SetUp(). | 250 // Verify default alignment settings, used when initialized in SetUp(). |
251 EXPECT_EQ(info_bubble::kTopRight, [[controller_ bubble] arrowLocation]); | 251 EXPECT_EQ(info_bubble::kTopTrailing, [[controller_ bubble] arrowLocation]); |
252 EXPECT_EQ(info_bubble::kAlignArrowToAnchor, [[controller_ bubble] alignment]); | 252 EXPECT_EQ(info_bubble::kAlignArrowToAnchor, [[controller_ bubble] alignment]); |
253 | 253 |
254 // Verify the default frame (positioned relative to the test_window() origin). | 254 // Verify the default frame (positioned relative to the test_window() origin). |
255 NSRect frame = [[controller_ window] frame]; | 255 NSRect frame = [[controller_ window] frame]; |
256 EXPECT_EQ(NSMaxX(frame) - info_bubble::kBubbleArrowXOffset - | 256 EXPECT_EQ(NSMaxX(frame) - info_bubble::kBubbleArrowXOffset - |
257 floorf(info_bubble::kBubbleArrowWidth / 2.0), kAnchorPointX); | 257 floorf(info_bubble::kBubbleArrowWidth / 2.0), kAnchorPointX); |
258 EXPECT_EQ(NSMaxY(frame), kAnchorPointY); | 258 EXPECT_EQ(NSMaxY(frame), kAnchorPointY); |
259 } | 259 } |
260 | 260 |
261 // Tests that when a new window gets key state (and the bubble resigns) that | 261 // Tests that when a new window gets key state (and the bubble resigns) that |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 | 443 |
444 // Post the "resign key" notification for another window. | 444 // Post the "resign key" notification for another window. |
445 NSNotification* notif = | 445 NSNotification* notif = |
446 [NSNotification notificationWithName:NSWindowDidResignKeyNotification | 446 [NSNotification notificationWithName:NSWindowDidResignKeyNotification |
447 object:test_window()]; | 447 object:test_window()]; |
448 [[NSNotificationCenter defaultCenter] postNotification:notif]; | 448 [[NSNotificationCenter defaultCenter] postNotification:notif]; |
449 | 449 |
450 EXPECT_TRUE([bubble_window_ isVisible]); | 450 EXPECT_TRUE([bubble_window_ isVisible]); |
451 g_key_window = nil; | 451 g_key_window = nil; |
452 } | 452 } |
OLD | NEW |