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

Unified Diff: chrome/browser/cocoa/browser_window_controller_unittest.mm

Issue 159776: Rewrites the Mac view resizing logic to have the BrowserWindowController... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/browser_window_controller.mm ('k') | chrome/browser/cocoa/download_shelf_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/browser_window_controller_unittest.mm
===================================================================
--- chrome/browser/cocoa/browser_window_controller_unittest.mm (revision 22499)
+++ chrome/browser/cocoa/browser_window_controller_unittest.mm (working copy)
@@ -15,10 +15,28 @@
#include "chrome/test/testing_profile.h"
#include "testing/gtest/include/gtest/gtest.h"
-@interface BrowserWindowController (ExposedForTesting)
+@interface BrowserWindowController (JustForTesting)
+// Already defined in BWC.
- (void)saveWindowPositionToPrefs:(PrefService*)prefs;
+- (void)layoutSubviews;
@end
+@interface BrowserWindowController (ExposedForTesting)
+// Implementations are below.
+- (NSView*)infoBarContainerView;
+- (NSView*)toolbarView;
+@end
+
+@implementation BrowserWindowController (ExposedForTesting)
+- (NSView*)infoBarContainerView {
+ return [infoBarContainerController_ view];
+}
+
+- (NSView*)toolbarView {
+ return [toolbarController_ view];
+}
+@end
+
class BrowserWindowControllerTest : public testing::Test {
virtual void SetUp() {
controller_.reset([[BrowserWindowController alloc]
@@ -132,4 +150,95 @@
}
#endif
+@interface BrowserWindowControllerResizePong : BrowserWindowController {
+}
+@end
+
+@implementation BrowserWindowControllerResizePong
+@end
+
+// Test to make sure resizing and relaying-out subviews works correctly.
+TEST_F(BrowserWindowControllerTest, TestResizeViews) {
+ TabStripView* tabstrip = [controller_ tabStripView];
+ NSView* contentView = [[tabstrip window] contentView];
+ NSView* toolbar = [controller_ toolbarView];
+ NSView* infobar = [controller_ infoBarContainerView];
+ NSView* contentArea = [controller_ tabContentArea];
+
+ // We need to muck with the views a bit to put us in a consistent state before
+ // we start resizing. In particular, we need to move the tab strip to be
+ // immediately above the content area, since we layout views to be directly
+ // under the tab strip. We also explicitly set the contentView's frame to be
+ // 800x600.
+ [contentView setFrame:NSMakeRect(0, 0, 800, 600)];
+ NSRect tabstripFrame = [tabstrip frame];
+ tabstripFrame.origin.y = NSMaxY([contentView frame]);
+ [tabstrip setFrame:tabstripFrame];
+
+ // Make sure each view is as tall as we expect.
+ ASSERT_EQ(39, NSHeight([toolbar frame]));
+ ASSERT_EQ(0, NSHeight([infobar frame]));
+
+ // Force a layout and check each view's frame.
+ // contentView should be at 0,0 800x600
+ // contentArea should be at 0,0 800x561
+ // infobar should be at 0,561 800x0
+ // toolbar should be at 0,561 800x39
+ [controller_ layoutSubviews];
+ EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
+ EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 0, 800, 561)));
+ EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 561, 800, 0)));
+ EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 561, 800, 39)));
+
+ // Expand the infobar to 60px and recheck
+ // contentView should be at 0,0 800x600
+ // contentArea should be at 0,0 800x501
+ // infobar should be at 0,501 800x60
+ // toolbar should be at 0,561 800x39
+ [controller_ resizeView:infobar newHeight:60];
+ EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
+ EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 0, 800, 501)));
+ EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 501, 800, 60)));
+ EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 561, 800, 39)));
+
+ // Expand the toolbar to 64px and recheck
+ // contentView should be at 0,0 800x600
+ // contentArea should be at 0,0 800x476
+ // infobar should be at 0,476 800x60
+ // toolbar should be at 0,536 800x64
+ [controller_ resizeView:toolbar newHeight:64];
+ EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
+ EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 0, 800, 476)));
+ EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 476, 800, 60)));
+ EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 536, 800, 64)));
+
+ // Add a 30px download shelf and recheck
+ // contentView should be at 0,0 800x600
+ // download should be at 0,0 800x30
+ // contentArea should be at 0,30 800x446
+ // infobar should be at 0,476 800x60
+ // toolbar should be at 0,536 800x64
+ NSView* download = [[controller_ downloadShelf] view];
+ [controller_ resizeView:download newHeight:30];
+ EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
+ EXPECT_TRUE(NSEqualRects([download frame], NSMakeRect(0, 0, 800, 30)));
+ EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 30, 800, 446)));
+ EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 476, 800, 60)));
+ EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 536, 800, 64)));
+
+ // Shrink the infobar to 0px and toolbar to 39px and recheck
+ // contentView should be at 0,0 800x600
+ // download should be at 0,0 800x30
+ // contentArea should be at 0,30 800x531
+ // infobar should be at 0,561 800x0
+ // toolbar should be at 0,561 800x39
+ [controller_ resizeView:infobar newHeight:0];
+ [controller_ resizeView:toolbar newHeight:39];
+ EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
+ EXPECT_TRUE(NSEqualRects([download frame], NSMakeRect(0, 0, 800, 30)));
+ EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 30, 800, 531)));
+ EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 561, 800, 0)));
+ EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 561, 800, 39)));
+}
+
/* TODO(???): test other methods of BrowserWindowController */
« no previous file with comments | « chrome/browser/cocoa/browser_window_controller.mm ('k') | chrome/browser/cocoa/download_shelf_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698