Chromium Code Reviews| Index: chrome/browser/ui/cocoa/tab_controller_unittest.mm |
| =================================================================== |
| --- chrome/browser/ui/cocoa/tab_controller_unittest.mm (revision 68959) |
| +++ chrome/browser/ui/cocoa/tab_controller_unittest.mm (working copy) |
| @@ -62,6 +62,9 @@ |
| namespace { |
| +static CGFloat LeftMargin(NSRect superFrame, NSRect subFrame); |
|
viettrungluu
2010/12/14 00:19:50
|static|s aren't necessary in an anonymous namespa
sail
2010/12/14 01:59:53
Cool! Didn't know that.
Done.
|
| +static CGFloat RightMargin(NSRect superFrame, NSRect subFrame); |
| + |
| // The dragging code in TabView makes heavy use of autorelease pools so |
| // inherit from CocoaTest to have one created for us. |
| class TabControllerTest : public CocoaTest { |
| @@ -265,4 +268,69 @@ |
| EXPECT_GT([menu numberOfItems], 0); |
| } |
| +// Tests that the title field is correctly positioned and sized when the |
| +// view is resized. |
| +TEST_F(TabControllerTest, TitleViewLayout) { |
| + NSWindow* window = test_window(); |
| + |
| + scoped_nsobject<TabController> controller([[TabController alloc] init]); |
| + [[window contentView] addSubview:[controller view]]; |
| + NSRect tabFrame = [[controller view] frame]; |
| + tabFrame.size.width = [TabController maxTabWidth]; |
| + [[controller view] setFrame:tabFrame]; |
| + |
| + const NSRect originalTabFrame = [[controller view] frame]; |
| + const NSRect originalIconFrame = [[controller iconView] frame]; |
| + const NSRect originalCloseFrame = [[controller closeButton] frame]; |
| + const NSRect originalTitleFrame = [[controller titleView] frame]; |
| + |
| + // Sanity check the start state. |
| + EXPECT_FALSE([[controller iconView] isHidden]); |
| + EXPECT_FALSE([[controller closeButton] isHidden]); |
| + EXPECT_GT(NSWidth([[controller view] frame]), |
| + NSWidth([[controller titleView] frame])); |
| + |
| + // Resize the tab so that that the it shrinks. |
| + tabFrame.size.width = [TabController minTabWidth]; |
| + [[controller view] setFrame:tabFrame]; |
| + |
| + // The icon view and close button should be hidden and the title view should |
| + // be resize to take up their space. |
| + EXPECT_TRUE([[controller iconView] isHidden]); |
| + EXPECT_TRUE([[controller closeButton] isHidden]); |
| + EXPECT_GT(NSWidth([[controller view] frame]), |
| + NSWidth([[controller titleView] frame])); |
| + EXPECT_EQ(LeftMargin(originalTabFrame, originalIconFrame), |
| + LeftMargin([[controller view] frame], |
| + [[controller titleView] frame])); |
| + EXPECT_EQ(RightMargin(originalTabFrame, originalCloseFrame), |
| + RightMargin([[controller view] frame], |
| + [[controller titleView] frame])); |
| + |
| + // Resize the tab so that that the it grows. |
| + tabFrame.size.width = [TabController maxTabWidth] * 0.75; |
| + [[controller view] setFrame:tabFrame]; |
| + |
| + // The icon view and close button should be visible again and the title view |
| + // should be resized to make room for them. |
| + EXPECT_FALSE([[controller iconView] isHidden]); |
| + EXPECT_FALSE([[controller closeButton] isHidden]); |
| + EXPECT_GT(NSWidth([[controller view] frame]), |
| + NSWidth([[controller titleView] frame])); |
| + EXPECT_EQ(LeftMargin(originalTabFrame, originalTitleFrame), |
| + LeftMargin([[controller view] frame], |
| + [[controller titleView] frame])); |
| + EXPECT_EQ(RightMargin(originalTabFrame, originalTitleFrame), |
| + RightMargin([[controller view] frame], |
| + [[controller titleView] frame])); |
| +} |
| + |
| +static CGFloat LeftMargin(NSRect superFrame, NSRect subFrame) { |
|
viettrungluu
2010/12/14 00:19:50
Just define these directly at the top.
sail
2010/12/14 01:59:53
Done.
|
| + return NSMinX(subFrame) - NSMinX(superFrame); |
| +} |
| + |
| +static CGFloat RightMargin(NSRect superFrame, NSRect subFrame) { |
| + return NSMaxX(superFrame) - NSMaxX(subFrame); |
| +} |
| + |
| } // namespace |