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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #include "base/scoped_nsobject.h" 5 #include "base/scoped_nsobject.h"
6 #include "base/scoped_nsautorelease_pool.h" 6 #include "base/scoped_nsautorelease_pool.h"
7 #include "base/scoped_ptr.h" 7 #include "base/scoped_ptr.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/cocoa/browser_test_helper.h" 9 #include "chrome/browser/cocoa/browser_test_helper.h"
10 #include "chrome/browser/cocoa/browser_window_controller.h" 10 #include "chrome/browser/cocoa/browser_window_controller.h"
11 #include "chrome/browser/cocoa/cocoa_test_helper.h" 11 #include "chrome/browser/cocoa/cocoa_test_helper.h"
12 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
13 #include "chrome/common/pref_service.h" 13 #include "chrome/common/pref_service.h"
14 #include "chrome/test/testing_browser_process.h" 14 #include "chrome/test/testing_browser_process.h"
15 #include "chrome/test/testing_profile.h" 15 #include "chrome/test/testing_profile.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 @interface BrowserWindowController (JustForTesting)
19 // Already defined in BWC.
20 - (void)saveWindowPositionToPrefs:(PrefService*)prefs;
21 - (void)layoutSubviews;
22 @end
23
18 @interface BrowserWindowController (ExposedForTesting) 24 @interface BrowserWindowController (ExposedForTesting)
19 - (void)saveWindowPositionToPrefs:(PrefService*)prefs; 25 // Implementations are below.
26 - (NSView*)infoBarContainerView;
27 - (NSView*)toolbarView;
28 @end
29
30 @implementation BrowserWindowController (ExposedForTesting)
31 - (NSView*)infoBarContainerView {
32 return [infoBarContainerController_ view];
33 }
34
35 - (NSView*)toolbarView {
36 return [toolbarController_ view];
37 }
20 @end 38 @end
21 39
22 class BrowserWindowControllerTest : public testing::Test { 40 class BrowserWindowControllerTest : public testing::Test {
23 virtual void SetUp() { 41 virtual void SetUp() {
24 controller_.reset([[BrowserWindowController alloc] 42 controller_.reset([[BrowserWindowController alloc]
25 initWithBrowser:browser_helper_.browser() 43 initWithBrowser:browser_helper_.browser()
26 takeOwnership:NO]); 44 takeOwnership:NO]);
27 } 45 }
28 46
29 public: 47 public:
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 143
126 NSRect tabFrame = [[controller_ tabStripView] frame]; 144 NSRect tabFrame = [[controller_ tabStripView] frame];
127 [controller_ installIncognitoBadge]; 145 [controller_ installIncognitoBadge];
128 NSRect newTabFrame = [[controller_ tabStripView] frame]; 146 NSRect newTabFrame = [[controller_ tabStripView] frame];
129 EXPECT_GT(tabFrame.size.width, newTabFrame.size.width); 147 EXPECT_GT(tabFrame.size.width, newTabFrame.size.width);
130 148
131 controller_.release(); 149 controller_.release();
132 } 150 }
133 #endif 151 #endif
134 152
153 @interface BrowserWindowControllerResizePong : BrowserWindowController {
154 }
155 @end
156
157 @implementation BrowserWindowControllerResizePong
158 @end
159
160 // Test to make sure resizing and relaying-out subviews works correctly.
161 TEST_F(BrowserWindowControllerTest, TestResizeViews) {
162 TabStripView* tabstrip = [controller_ tabStripView];
163 NSView* contentView = [[tabstrip window] contentView];
164 NSView* toolbar = [controller_ toolbarView];
165 NSView* infobar = [controller_ infoBarContainerView];
166 NSView* contentArea = [controller_ tabContentArea];
167
168 // We need to muck with the views a bit to put us in a consistent state before
169 // we start resizing. In particular, we need to move the tab strip to be
170 // immediately above the content area, since we layout views to be directly
171 // under the tab strip. We also explicitly set the contentView's frame to be
172 // 800x600.
173 [contentView setFrame:NSMakeRect(0, 0, 800, 600)];
174 NSRect tabstripFrame = [tabstrip frame];
175 tabstripFrame.origin.y = NSMaxY([contentView frame]);
176 [tabstrip setFrame:tabstripFrame];
177
178 // Make sure each view is as tall as we expect.
179 ASSERT_EQ(39, NSHeight([toolbar frame]));
180 ASSERT_EQ(0, NSHeight([infobar frame]));
181
182 // Force a layout and check each view's frame.
183 // contentView should be at 0,0 800x600
184 // contentArea should be at 0,0 800x561
185 // infobar should be at 0,561 800x0
186 // toolbar should be at 0,561 800x39
187 [controller_ layoutSubviews];
188 EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
189 EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 0, 800, 561)));
190 EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 561, 800, 0)));
191 EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 561, 800, 39)));
192
193 // Expand the infobar to 60px and recheck
194 // contentView should be at 0,0 800x600
195 // contentArea should be at 0,0 800x501
196 // infobar should be at 0,501 800x60
197 // toolbar should be at 0,561 800x39
198 [controller_ resizeView:infobar newHeight:60];
199 EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
200 EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 0, 800, 501)));
201 EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 501, 800, 60)));
202 EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 561, 800, 39)));
203
204 // Expand the toolbar to 64px and recheck
205 // contentView should be at 0,0 800x600
206 // contentArea should be at 0,0 800x476
207 // infobar should be at 0,476 800x60
208 // toolbar should be at 0,536 800x64
209 [controller_ resizeView:toolbar newHeight:64];
210 EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
211 EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 0, 800, 476)));
212 EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 476, 800, 60)));
213 EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 536, 800, 64)));
214
215 // Add a 30px download shelf and recheck
216 // contentView should be at 0,0 800x600
217 // download should be at 0,0 800x30
218 // contentArea should be at 0,30 800x446
219 // infobar should be at 0,476 800x60
220 // toolbar should be at 0,536 800x64
221 NSView* download = [[controller_ downloadShelf] view];
222 [controller_ resizeView:download newHeight:30];
223 EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
224 EXPECT_TRUE(NSEqualRects([download frame], NSMakeRect(0, 0, 800, 30)));
225 EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 30, 800, 446)));
226 EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 476, 800, 60)));
227 EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 536, 800, 64)));
228
229 // Shrink the infobar to 0px and toolbar to 39px and recheck
230 // contentView should be at 0,0 800x600
231 // download should be at 0,0 800x30
232 // contentArea should be at 0,30 800x531
233 // infobar should be at 0,561 800x0
234 // toolbar should be at 0,561 800x39
235 [controller_ resizeView:infobar newHeight:0];
236 [controller_ resizeView:toolbar newHeight:39];
237 EXPECT_TRUE(NSEqualRects([contentView frame], NSMakeRect(0, 0, 800, 600)));
238 EXPECT_TRUE(NSEqualRects([download frame], NSMakeRect(0, 0, 800, 30)));
239 EXPECT_TRUE(NSEqualRects([contentArea frame], NSMakeRect(0, 30, 800, 531)));
240 EXPECT_TRUE(NSEqualRects([infobar frame], NSMakeRect(0, 561, 800, 0)));
241 EXPECT_TRUE(NSEqualRects([toolbar frame], NSMakeRect(0, 561, 800, 39)));
242 }
243
135 /* TODO(???): test other methods of BrowserWindowController */ 244 /* TODO(???): test other methods of BrowserWindowController */
OLDNEW
« 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