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

Side by Side Diff: chrome/browser/cocoa/bookmark_bar_folder_controller_unittest.mm

Issue 3050021: Rework somewhat how the folder menu window and main view sizes and positions ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 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
« no previous file with comments | « chrome/browser/cocoa/bookmark_bar_folder_controller.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/scoped_nsobject.h" 8 #include "base/scoped_nsobject.h"
9 #import "chrome/browser/cocoa/bookmark_bar_constants.h" // namespace bookmarks 9 #import "chrome/browser/cocoa/bookmark_bar_constants.h" // namespace bookmarks
10 #import "chrome/browser/cocoa/bookmark_bar_controller.h" 10 #import "chrome/browser/cocoa/bookmark_bar_controller.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 - (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child { 114 - (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child {
115 [childFolderDelegate_ childFolderWillClose:child]; 115 [childFolderDelegate_ childFolderWillClose:child];
116 } 116 }
117 117
118 @end 118 @end
119 119
120 120
121 class BookmarkBarFolderControllerTest : public CocoaTest { 121 class BookmarkBarFolderControllerTest : public CocoaTest {
122 public: 122 public:
123 BrowserTestHelper helper_; 123 BrowserTestHelper helper_;
124 scoped_nsobject<BookmarkBarController> parentBarController_; 124 scoped_nsobject<BookmarkBarController> bar_;
125 const BookmarkNode* folderA_; // owned by model 125 const BookmarkNode* folderA_; // owned by model
126 const BookmarkNode* longTitleNode_; // owned by model 126 const BookmarkNode* longTitleNode_; // owned by model
127 127
128 BookmarkBarFolderControllerTest() { 128 BookmarkBarFolderControllerTest() {
129 BookmarkModel* model = helper_.profile()->GetBookmarkModel(); 129 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
130 const BookmarkNode* parent = model->GetBookmarkBarNode(); 130 const BookmarkNode* parent = model->GetBookmarkBarNode();
131 const BookmarkNode* folderA = model->AddGroup(parent, 131 const BookmarkNode* folderA = model->AddGroup(parent,
132 parent->GetChildCount(), 132 parent->GetChildCount(),
133 L"group"); 133 L"group");
134 folderA_ = folderA; 134 folderA_ = folderA;
135 model->AddGroup(parent, parent->GetChildCount(), 135 model->AddGroup(parent, parent->GetChildCount(),
136 L"sibbling group"); 136 L"sibbling group");
137 const BookmarkNode* folderB = model->AddGroup(folderA, 137 const BookmarkNode* folderB = model->AddGroup(folderA,
138 folderA->GetChildCount(), 138 folderA->GetChildCount(),
139 L"subgroup 1"); 139 L"subgroup 1");
140 model->AddGroup(folderA, 140 model->AddGroup(folderA,
141 folderA->GetChildCount(), 141 folderA->GetChildCount(),
142 L"subgroup 2"); 142 L"subgroup 2");
143 model->AddURL(folderA, folderA->GetChildCount(), L"title a", 143 model->AddURL(folderA, folderA->GetChildCount(), L"title a",
144 GURL("http://www.google.com/a")); 144 GURL("http://www.google.com/a"));
145 longTitleNode_ = model->AddURL( 145 longTitleNode_ = model->AddURL(
146 folderA, folderA->GetChildCount(), 146 folderA, folderA->GetChildCount(),
147 L"title super duper long long whoa momma title you betcha", 147 L"title super duper long long whoa momma title you betcha",
148 GURL("http://www.google.com/b")); 148 GURL("http://www.google.com/b"));
149 model->AddURL(folderB, folderB->GetChildCount(), L"t", 149 model->AddURL(folderB, folderB->GetChildCount(), L"t",
150 GURL("http://www.google.com/c")); 150 GURL("http://www.google.com/c"));
151 151
152 parentBarController_.reset( 152 bar_.reset(
153 [[BookmarkBarControllerChildFolderRedirect alloc] 153 [[BookmarkBarControllerChildFolderRedirect alloc]
154 initWithBrowser:helper_.browser() 154 initWithBrowser:helper_.browser()
155 initialWidth:300 155 initialWidth:300
156 delegate:nil 156 delegate:nil
157 resizeDelegate:nil]); 157 resizeDelegate:nil]);
158 [parentBarController_ loaded:model]; 158 [bar_ loaded:model];
159 // Make parent frame for bookmark bar then open it. 159 // Make parent frame for bookmark bar then open it.
160 NSRect frame = [[test_window() contentView] frame]; 160 NSRect frame = [[test_window() contentView] frame];
161 frame = NSInsetRect(frame, 100, 200); 161 frame = NSInsetRect(frame, 100, 200);
162 NSView* fakeToolbarView = [[[NSView alloc] initWithFrame:frame] 162 NSView* fakeToolbarView = [[[NSView alloc] initWithFrame:frame]
163 autorelease]; 163 autorelease];
164 [[test_window() contentView] addSubview:fakeToolbarView]; 164 [[test_window() contentView] addSubview:fakeToolbarView];
165 [fakeToolbarView addSubview:[parentBarController_ view]]; 165 [fakeToolbarView addSubview:[bar_ view]];
166 [parentBarController_ setBookmarkBarEnabled:YES]; 166 [bar_ setBookmarkBarEnabled:YES];
167 } 167 }
168 168
169 // Remove the bookmark with the long title. 169 // Remove the bookmark with the long title.
170 void RemoveLongTitleNode() { 170 void RemoveLongTitleNode() {
171 BookmarkModel* model = helper_.profile()->GetBookmarkModel(); 171 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
172 model->Remove(longTitleNode_->GetParent(), 172 model->Remove(longTitleNode_->GetParent(),
173 longTitleNode_->GetParent()->IndexOfChild(longTitleNode_)); 173 longTitleNode_->GetParent()->IndexOfChild(longTitleNode_));
174 } 174 }
175 175
176 // Add LOTS of nodes to our model if needed (e.g. scrolling). 176 // Add LOTS of nodes to our model if needed (e.g. scrolling).
177 // Returns the number of nodes added. 177 // Returns the number of nodes added.
178 int AddLotsOfNodes() { 178 int AddLotsOfNodes() {
179 BookmarkModel* model = helper_.profile()->GetBookmarkModel(); 179 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
180 for (int i = 0; i < kLotsOfNodesCount; i++) { 180 for (int i = 0; i < kLotsOfNodesCount; i++) {
181 model->AddURL(folderA_, folderA_->GetChildCount(), L"repeated title", 181 model->AddURL(folderA_, folderA_->GetChildCount(), L"repeated title",
182 GURL("http://www.google.com/repeated/url")); 182 GURL("http://www.google.com/repeated/url"));
183 } 183 }
184 return kLotsOfNodesCount; 184 return kLotsOfNodesCount;
185 } 185 }
186 186
187 187
188 // Return a simple BookmarkBarFolderController. 188 // Return a simple BookmarkBarFolderController.
189 BookmarkBarFolderControllerPong* SimpleBookmarkBarFolderController() { 189 BookmarkBarFolderControllerPong* SimpleBookmarkBarFolderController() {
190 BookmarkButton* parentButton = [[parentBarController_ buttons] 190 BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0];
191 objectAtIndex:0];
192 BookmarkBarFolderControllerPong* c = 191 BookmarkBarFolderControllerPong* c =
193 [[BookmarkBarFolderControllerPong alloc] 192 [[BookmarkBarFolderControllerPong alloc]
194 initWithParentButton:parentButton 193 initWithParentButton:parentButton
195 parentController:nil 194 parentController:nil
196 barController:parentBarController_]; 195 barController:bar_];
197 [c window]; // Force nib load. 196 [c window]; // Force nib load.
198 return c; 197 return c;
199 } 198 }
200 }; 199 };
201 200
202 TEST_F(BookmarkBarFolderControllerTest, InitCreateAndDelete) { 201 TEST_F(BookmarkBarFolderControllerTest, InitCreateAndDelete) {
203 scoped_nsobject<BookmarkBarFolderController> bbfc; 202 scoped_nsobject<BookmarkBarFolderController> bbfc;
204 bbfc.reset(SimpleBookmarkBarFolderController()); 203 bbfc.reset(SimpleBookmarkBarFolderController());
205 204
206 // Make sure none of the buttons overlap, that all are inside 205 // Make sure none of the buttons overlap, that all are inside
(...skipping 27 matching lines...) Expand all
234 TEST_F(BookmarkBarFolderControllerTest, ReleaseOnClose) { 233 TEST_F(BookmarkBarFolderControllerTest, ReleaseOnClose) {
235 scoped_nsobject<BookmarkBarFolderController> bbfc; 234 scoped_nsobject<BookmarkBarFolderController> bbfc;
236 bbfc.reset(SimpleBookmarkBarFolderController()); 235 bbfc.reset(SimpleBookmarkBarFolderController());
237 EXPECT_TRUE(bbfc.get()); 236 EXPECT_TRUE(bbfc.get());
238 237
239 [bbfc retain]; // stop the scoped_nsobject from doing anything 238 [bbfc retain]; // stop the scoped_nsobject from doing anything
240 [[bbfc window] close]; // trigger an autorelease of bbfc.get() 239 [[bbfc window] close]; // trigger an autorelease of bbfc.get()
241 } 240 }
242 241
243 TEST_F(BookmarkBarFolderControllerTest, BasicPosition) { 242 TEST_F(BookmarkBarFolderControllerTest, BasicPosition) {
244 BookmarkButton* parentButton = [[parentBarController_ buttons] 243 BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0];
245 objectAtIndex:0];
246 EXPECT_TRUE(parentButton); 244 EXPECT_TRUE(parentButton);
247 245
248 // If parent is a BookmarkBarController, grow down. 246 // If parent is a BookmarkBarController, grow down.
249 scoped_nsobject<BookmarkBarFolderControllerLow> bbfc; 247 scoped_nsobject<BookmarkBarFolderControllerLow> bbfc;
250 bbfc.reset([[BookmarkBarFolderControllerLow alloc] 248 bbfc.reset([[BookmarkBarFolderControllerLow alloc]
251 initWithParentButton:parentButton 249 initWithParentButton:parentButton
252 parentController:nil 250 parentController:nil
253 barController:parentBarController_]); 251 barController:bar_]);
254 [bbfc window]; 252 [bbfc window];
255 [bbfc setRealTopLeft:YES]; 253 [bbfc setRealTopLeft:YES];
256 NSPoint pt = [bbfc windowTopLeftForWidth:0]; // screen coords 254 NSPoint pt = [bbfc windowTopLeftForWidth:0]; // screen coords
257 NSPoint buttonOriginInScreen = 255 NSPoint buttonOriginInScreen =
258 [[parentButton window] 256 [[parentButton window]
259 convertBaseToScreen:[parentButton 257 convertBaseToScreen:[parentButton
260 convertRectToBase:[parentButton frame]].origin]; 258 convertRectToBase:[parentButton frame]].origin];
261 // Within margin 259 // Within margin
262 EXPECT_LE(abs(pt.x - buttonOriginInScreen.x), 2); 260 EXPECT_LE(abs(pt.x - buttonOriginInScreen.x), 2);
263 EXPECT_LE(abs(pt.y - buttonOriginInScreen.y), 2); 261 EXPECT_LE(abs(pt.y - buttonOriginInScreen.y), 2);
264 262
265 // Make sure we see the window shift left if it spills off the screen 263 // Make sure we see the window shift left if it spills off the screen
266 pt = [bbfc windowTopLeftForWidth:0]; 264 pt = [bbfc windowTopLeftForWidth:0];
267 NSPoint shifted = [bbfc windowTopLeftForWidth:9999999]; 265 NSPoint shifted = [bbfc windowTopLeftForWidth:9999999];
268 EXPECT_LT(shifted.x, pt.x); 266 EXPECT_LT(shifted.x, pt.x);
269 267
270 // If parent is a BookmarkBarFolderController, grow right. 268 // If parent is a BookmarkBarFolderController, grow right.
271 scoped_nsobject<BookmarkBarFolderControllerLow> bbfc2; 269 scoped_nsobject<BookmarkBarFolderControllerLow> bbfc2;
272 bbfc2.reset([[BookmarkBarFolderControllerLow alloc] 270 bbfc2.reset([[BookmarkBarFolderControllerLow alloc]
273 initWithParentButton:[[bbfc buttons] objectAtIndex:0] 271 initWithParentButton:[[bbfc buttons] objectAtIndex:0]
274 parentController:bbfc.get() 272 parentController:bbfc.get()
275 barController:parentBarController_]); 273 barController:bar_]);
276 [bbfc2 window]; 274 [bbfc2 window];
277 [bbfc2 setRealTopLeft:YES]; 275 [bbfc2 setRealTopLeft:YES];
278 pt = [bbfc2 windowTopLeftForWidth:0]; 276 pt = [bbfc2 windowTopLeftForWidth:0];
279 // We're now overlapping the window a bit. 277 // We're now overlapping the window a bit.
280 EXPECT_EQ(pt.x, NSMaxX([[bbfc.get() window] frame]) - 278 EXPECT_EQ(pt.x, NSMaxX([[bbfc.get() window] frame]) -
281 bookmarks::kBookmarkMenuOverlap); 279 bookmarks::kBookmarkMenuOverlap);
282 } 280 }
283 281
284 // Confirm we grow right until end of screen, then start growing left 282 // Confirm we grow right until end of screen, then start growing left
285 // until end of screen again, then right. 283 // until end of screen again, then right.
286 TEST_F(BookmarkBarFolderControllerTest, PositionRightLeftRight) { 284 TEST_F(BookmarkBarFolderControllerTest, PositionRightLeftRight) {
287 BookmarkModel* model = helper_.profile()->GetBookmarkModel(); 285 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
288 const BookmarkNode* parent = model->GetBookmarkBarNode(); 286 const BookmarkNode* parent = model->GetBookmarkBarNode();
289 const BookmarkNode* folder = parent; 287 const BookmarkNode* folder = parent;
290 288
291 const int count = 100; 289 const int count = 100;
292 int i; 290 int i;
293 // Make some super duper deeply nested folders. 291 // Make some super duper deeply nested folders.
294 for (i=0; i<count; i++) { 292 for (i=0; i<count; i++) {
295 folder = model->AddGroup(folder, 0, L"nested folder"); 293 folder = model->AddGroup(folder, 0, L"nested folder");
296 } 294 }
297 295
298 // Setup initial state for opening all folders. 296 // Setup initial state for opening all folders.
299 folder = parent; 297 folder = parent;
300 BookmarkButton* parentButton = [[parentBarController_ buttons] 298 BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0];
301 objectAtIndex:0];
302 BookmarkBarFolderController* parentController = nil; 299 BookmarkBarFolderController* parentController = nil;
303 EXPECT_TRUE(parentButton); 300 EXPECT_TRUE(parentButton);
304 301
305 // Open them all. 302 // Open them all.
306 scoped_nsobject<NSMutableArray> folder_controller_array; 303 scoped_nsobject<NSMutableArray> folder_controller_array;
307 folder_controller_array.reset([[NSMutableArray array] retain]); 304 folder_controller_array.reset([[NSMutableArray array] retain]);
308 for (i=0; i<count; i++) { 305 for (i=0; i<count; i++) {
309 BookmarkBarFolderControllerNoLevel* bbfcl = 306 BookmarkBarFolderControllerNoLevel* bbfcl =
310 [[BookmarkBarFolderControllerNoLevel alloc] 307 [[BookmarkBarFolderControllerNoLevel alloc]
311 initWithParentButton:parentButton 308 initWithParentButton:parentButton
312 parentController:parentController 309 parentController:parentController
313 barController:parentBarController_]; 310 barController:bar_];
314 [folder_controller_array addObject:bbfcl]; 311 [folder_controller_array addObject:bbfcl];
315 [bbfcl autorelease]; 312 [bbfcl autorelease];
316 [bbfcl window]; 313 [bbfcl window];
317 parentController = bbfcl; 314 parentController = bbfcl;
318 parentButton = [[bbfcl buttons] objectAtIndex:0]; 315 parentButton = [[bbfcl buttons] objectAtIndex:0];
319 } 316 }
320 317
321 // Make vector of all x positions. 318 // Make vector of all x positions.
322 std::vector<CGFloat> leftPositions; 319 std::vector<CGFloat> leftPositions;
323 for (i=0; i<count; i++) { 320 for (i=0; i<count; i++) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 402
406 // Close it --> all gone! 403 // Close it --> all gone!
407 [bbfc closeBookmarkFolder:nil]; 404 [bbfc closeBookmarkFolder:nil];
408 EXPECT_FALSE([bbfc folderController]); 405 EXPECT_FALSE([bbfc folderController]);
409 } 406 }
410 407
411 TEST_F(BookmarkBarFolderControllerTest, ChildFolderCallbacks) { 408 TEST_F(BookmarkBarFolderControllerTest, ChildFolderCallbacks) {
412 scoped_nsobject<BookmarkBarFolderControllerPong> bbfc; 409 scoped_nsobject<BookmarkBarFolderControllerPong> bbfc;
413 bbfc.reset(SimpleBookmarkBarFolderController()); 410 bbfc.reset(SimpleBookmarkBarFolderController());
414 EXPECT_TRUE(bbfc.get()); 411 EXPECT_TRUE(bbfc.get());
415 [parentBarController_ setChildFolderDelegate:bbfc.get()]; 412 [bar_ setChildFolderDelegate:bbfc.get()];
416 413
417 EXPECT_FALSE([bbfc childFolderWillShow]); 414 EXPECT_FALSE([bbfc childFolderWillShow]);
418 [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:0]]; 415 [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:0]];
419 EXPECT_TRUE([bbfc childFolderWillShow]); 416 EXPECT_TRUE([bbfc childFolderWillShow]);
420 417
421 EXPECT_FALSE([bbfc childFolderWillClose]); 418 EXPECT_FALSE([bbfc childFolderWillClose]);
422 [bbfc closeBookmarkFolder:nil]; 419 [bbfc closeBookmarkFolder:nil];
423 EXPECT_TRUE([bbfc childFolderWillClose]); 420 EXPECT_TRUE([bbfc childFolderWillClose]);
424 421
425 [parentBarController_ setChildFolderDelegate:nil]; 422 [bar_ setChildFolderDelegate:nil];
426 } 423 }
427 424
428 // Make sure bookmark folders have variable widths. 425 // Make sure bookmark folders have variable widths.
429 TEST_F(BookmarkBarFolderControllerTest, ChildFolderWidth) { 426 TEST_F(BookmarkBarFolderControllerTest, ChildFolderWidth) {
430 scoped_nsobject<BookmarkBarFolderController> bbfc; 427 scoped_nsobject<BookmarkBarFolderController> bbfc;
431 428
432 bbfc.reset(SimpleBookmarkBarFolderController()); 429 bbfc.reset(SimpleBookmarkBarFolderController());
433 EXPECT_TRUE(bbfc.get()); 430 EXPECT_TRUE(bbfc.get());
434 [bbfc showWindow:bbfc.get()]; 431 [bbfc showWindow:bbfc.get()];
435 CGFloat wideWidth = NSWidth([[bbfc window] frame]); 432 CGFloat wideWidth = NSWidth([[bbfc window] frame]);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 // way. 495 // way.
499 for (int i=0; i<nodecount+50; i++) { 496 for (int i=0; i<nodecount+50; i++) {
500 CGFloat height = NSHeight([[bbfc window] frame]); 497 CGFloat height = NSHeight([[bbfc window] frame]);
501 [bbfc performOneScroll:-60]; 498 [bbfc performOneScroll:-60];
502 EXPECT_EQ(height, NSHeight([[bbfc window] frame])); 499 EXPECT_EQ(height, NSHeight([[bbfc window] frame]));
503 EXPECT_TRUE(NSContainsRect(screenFrame, 500 EXPECT_TRUE(NSContainsRect(screenFrame,
504 [[bbfc window] frame])); 501 [[bbfc window] frame]));
505 } 502 }
506 } 503 }
507 504
505 // Folder menu sizing and placementwhile deleting bookmarks and scrolling tests.
506 TEST_F(BookmarkBarFolderControllerTest, MenuPlacementWhileScrollingDeleting) {
507 scoped_nsobject<BookmarkBarFolderController> bbfc;
508 AddLotsOfNodes();
509 bbfc.reset(SimpleBookmarkBarFolderController());
510 [bbfc showWindow:bbfc.get()];
511 NSWindow* menuWindow = [bbfc window];
512 BookmarkBarFolderController* folder = [bar_ folderController];
513 NSArray* buttons = [folder buttons];
514
515 // Before scrolling any, delete a bookmark and make sure the window top has
516 // not moved. Pick a button which is near the top and visible.
517 CGFloat oldTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
518 BookmarkButton* button = [buttons objectAtIndex:3];
519 [folder deleteBookmark:button];
520 CGFloat newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
521 EXPECT_CGFLOAT_EQ(oldTop, newTop);
522
523 // Scroll so that both the top and bottom scroll arrows show, make sure
524 // the top of the window has moved up, then delete a visible button and
525 // make sure the top has not moved.
526 oldTop = newTop;
527 const CGFloat scrollOneBookmark = bookmarks::kBookmarkButtonHeight +
528 bookmarks::kBookmarkVerticalPadding;
529 NSUInteger buttonCounter = 0;
530 NSUInteger extraButtonLimit = 3;
531 while (![bbfc canScrollDown] || extraButtonLimit > 0) {
532 [bbfc performOneScroll:scrollOneBookmark];
533 ++buttonCounter;
534 if ([bbfc canScrollDown])
535 --extraButtonLimit;
536 }
537 newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
538 EXPECT_NE(oldTop, newTop);
539 oldTop = newTop;
540 button = [buttons objectAtIndex:buttonCounter + 3];
541 [folder deleteBookmark:button];
542 newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
543 EXPECT_CGFLOAT_EQ(oldTop, newTop);
544
545 // Scroll so that the top scroll arrow is no longer showing, make sure
546 // the top of the window has not moved, then delete a visible button and
547 // make sure the top has not moved.
548 while ([bbfc canScrollDown]) {
549 [bbfc performOneScroll:-scrollOneBookmark];
550 --buttonCounter;
551 }
552 button = [buttons objectAtIndex:buttonCounter + 3];
553 [folder deleteBookmark:button];
554 newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
555 EXPECT_CGFLOAT_EQ(oldTop, newTop);
556 }
557
508 @interface FakedDragInfo : NSObject { 558 @interface FakedDragInfo : NSObject {
509 @public 559 @public
510 NSPoint dropLocation_; 560 NSPoint dropLocation_;
511 NSDragOperation sourceMask_; 561 NSDragOperation sourceMask_;
512 } 562 }
513 @property (nonatomic, assign) NSPoint dropLocation; 563 @property (nonatomic, assign) NSPoint dropLocation;
514 - (void)setDraggingSourceOperationMask:(NSDragOperation)mask; 564 - (void)setDraggingSourceOperationMask:(NSDragOperation)mask;
515 @end 565 @end
516 566
517 @implementation FakedDragInfo 567 @implementation FakedDragInfo
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 L"BIG"); 1123 L"BIG");
1074 1124
1075 // Pop open the new folder window and verify it has one (empty) item. 1125 // Pop open the new folder window and verify it has one (empty) item.
1076 BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"BIG"]; 1126 BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"BIG"];
1077 [[button target] performSelector:@selector(openBookmarkFolderFromButton:) 1127 [[button target] performSelector:@selector(openBookmarkFolderFromButton:)
1078 withObject:button]; 1128 withObject:button];
1079 BookmarkBarFolderController* folderController = [bar_ folderController]; 1129 BookmarkBarFolderController* folderController = [bar_ folderController];
1080 EXPECT_TRUE(folderController); 1130 EXPECT_TRUE(folderController);
1081 NSWindow* folderMenu = [folderController window]; 1131 NSWindow* folderMenu = [folderController window];
1082 EXPECT_TRUE(folderMenu); 1132 EXPECT_TRUE(folderMenu);
1083 CGFloat expectedHeight = (CGFloat)bookmarks::kBookmarkButtonHeight; 1133 CGFloat expectedHeight = (CGFloat)bookmarks::kBookmarkButtonHeight +
1134 bookmarks::kBookmarkVerticalPadding;
1084 NSRect menuFrame = [folderMenu frame]; 1135 NSRect menuFrame = [folderMenu frame];
1085 CGFloat menuHeight = NSHeight(menuFrame); 1136 CGFloat menuHeight = NSHeight(menuFrame);
1086 EXPECT_CGFLOAT_EQ(expectedHeight, menuHeight); 1137 EXPECT_CGFLOAT_EQ(expectedHeight, menuHeight);
1087 EXPECT_FALSE([folderController scrollable]); 1138 EXPECT_FALSE([folderController scrollable]);
1088 1139
1089 // Now add a real bookmark and reopen. 1140 // Now add a real bookmark and reopen.
1090 model.AddURL(folder, folder->GetChildCount(), L"a", GURL("http://a.com/")); 1141 model.AddURL(folder, folder->GetChildCount(), L"a", GURL("http://a.com/"));
1091 folderController = [bar_ folderController]; 1142 folderController = [bar_ folderController];
1092 EXPECT_TRUE(folderController); 1143 EXPECT_TRUE(folderController);
1093 folderMenu = [folderController window]; 1144 folderMenu = [folderController window];
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1363 [folder deleteBookmark:folder]; 1414 [folder deleteBookmark:folder];
1364 EXPECT_FALSE([folder folderController]); 1415 EXPECT_FALSE([folder folderController]);
1365 } 1416 }
1366 1417
1367 // TODO(jrg): draggingEntered: and draggingExited: trigger timers so 1418 // TODO(jrg): draggingEntered: and draggingExited: trigger timers so
1368 // they are hard to test. Factor out "fire timers" into routines 1419 // they are hard to test. Factor out "fire timers" into routines
1369 // which can be overridden to fire immediately to make behavior 1420 // which can be overridden to fire immediately to make behavior
1370 // confirmable. 1421 // confirmable.
1371 // There is a similar problem with mouseEnteredButton: and 1422 // There is a similar problem with mouseEnteredButton: and
1372 // mouseExitedButton:. 1423 // mouseExitedButton:.
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/bookmark_bar_folder_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698