Index: chrome/browser/cocoa/status_bubble_mac_unittest.mm |
diff --git a/chrome/browser/cocoa/status_bubble_mac_unittest.mm b/chrome/browser/cocoa/status_bubble_mac_unittest.mm |
index 2482d96cd6eb4a9675820174204610977e64b6d2..d462f0d43fd04ac5562e47f14ba564893e1d4b2b 100644 |
--- a/chrome/browser/cocoa/status_bubble_mac_unittest.mm |
+++ b/chrome/browser/cocoa/status_bubble_mac_unittest.mm |
@@ -17,7 +17,6 @@ |
@end |
@implementation StatusBubbleMacTestWindowDelegate |
- (GTMTheme *)gtm_themeForWindow:(NSWindow *)window { |
- NSLog(@"gettheme"); |
return [[[GTMTheme alloc] init] autorelease]; |
} |
@end |
@@ -119,3 +118,49 @@ TEST_F(StatusBubbleMacTest, Delete) { |
bubble->SetStatus(L"showing"); |
delete bubble; |
} |
+ |
+TEST_F(StatusBubbleMacTest, UpdateSizeAndPosition) { |
+ // Test |UpdateSizeAndPosition()| when status bubble does not exist (shouldn't |
+ // crash; shouldn't create window). |
+ EXPECT_FALSE(GetWindow()); |
+ bubble_->UpdateSizeAndPosition(); |
+ EXPECT_FALSE(GetWindow()); |
+ |
+ // Create a status bubble (with contents) and call resize (without actually |
+ // resizing); the frame size shouldn't change. |
+ bubble_->SetStatus(L"UpdateSizeAndPosition test"); |
+ ASSERT_TRUE(GetWindow()); |
+ NSRect rect_before = [GetWindow() frame]; |
+ bubble_->UpdateSizeAndPosition(); |
+ NSRect rect_after = [GetWindow() frame]; |
+ EXPECT_TRUE(NSEqualRects(rect_before, rect_after)); |
+ |
+ // Move the window and call resize; only the origin should change. |
+ NSWindow* window = cocoa_helper_.window(); |
+ ASSERT_TRUE(window); |
+ NSRect frame = [window frame]; |
+ rect_before = [GetWindow() frame]; |
+ frame.origin.x += 10.0; // (fairly arbitrary nonzero value) |
+ frame.origin.y += 10.0; // (fairly arbitrary nonzero value) |
+ [window setFrame:frame display:YES]; |
+ bubble_->UpdateSizeAndPosition(); |
+ rect_after = [GetWindow() frame]; |
+ EXPECT_NE(rect_before.origin.x, rect_after.origin.x); |
+ EXPECT_NE(rect_before.origin.y, rect_after.origin.y); |
+ EXPECT_EQ(rect_before.size.width, rect_after.size.width); |
+ EXPECT_EQ(rect_before.size.height, rect_after.size.height); |
+ |
+ // Resize the window (without moving). The origin shouldn't change. The width |
+ // should change (in the current implementation), but not the height. |
+ frame = [window frame]; |
+ rect_before = [GetWindow() frame]; |
+ frame.size.width += 50.0; // (fairly arbitrary nonzero value) |
+ frame.size.height += 50.0; // (fairly arbitrary nonzero value) |
+ [window setFrame:frame display:YES]; |
+ bubble_->UpdateSizeAndPosition(); |
+ rect_after = [GetWindow() frame]; |
+ EXPECT_EQ(rect_before.origin.x, rect_after.origin.x); |
+ EXPECT_EQ(rect_before.origin.y, rect_after.origin.y); |
+ EXPECT_NE(rect_before.size.width, rect_after.size.width); |
+ EXPECT_EQ(rect_before.size.height, rect_after.size.height); |
+} |