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

Side by Side Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm

Issue 14262013: On Mac, ensure messages displayed in the bookmark bar do not overlap with the Apps bookmark button. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Answered comments, added tests. Created 7 years, 8 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/ui/cocoa/bookmarks/bookmark_bar_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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/scoped_nsobject.h" 9 #include "base/memory/scoped_nsobject.h"
10 #include "base/string16.h" 10 #include "base/string16.h"
11 #include "base/string_util.h" 11 #include "base/string_util.h"
12 #include "base/strings/sys_string_conversions.h" 12 #include "base/strings/sys_string_conversions.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "chrome/browser/bookmarks/bookmark_model.h" 14 #include "chrome/browser/bookmarks/bookmark_model.h"
15 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 15 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
16 #include "chrome/browser/bookmarks/bookmark_utils.h" 16 #include "chrome/browser/bookmarks/bookmark_utils.h"
17 #include "chrome/browser/extensions/test_extension_system.h" 17 #include "chrome/browser/extensions/test_extension_system.h"
18 #import "chrome/browser/ui/cocoa/animation_utils.h" 18 #import "chrome/browser/ui/cocoa/animation_utils.h"
19 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" 19 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
20 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" 20 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
21 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" 21 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
22 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h" 22 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h"
23 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h" 23 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h"
24 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" 24 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
25 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" 25 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h"
26 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 26 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
27 #import "chrome/browser/ui/cocoa/view_resizer_pong.h" 27 #import "chrome/browser/ui/cocoa/view_resizer_pong.h"
28 #include "chrome/common/chrome_switches.h"
29 #include "chrome/common/pref_names.h"
28 #include "chrome/test/base/model_test_utils.h" 30 #include "chrome/test/base/model_test_utils.h"
29 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
30 #import "testing/gtest_mac.h" 32 #import "testing/gtest_mac.h"
31 #include "testing/platform_test.h" 33 #include "testing/platform_test.h"
32 #include "third_party/ocmock/gtest_support.h" 34 #include "third_party/ocmock/gtest_support.h"
33 #import "third_party/ocmock/OCMock/OCMock.h" 35 #import "third_party/ocmock/OCMock/OCMock.h"
34 #include "ui/base/test/cocoa_test_event_utils.h" 36 #include "ui/base/test/cocoa_test_event_utils.h"
35 #include "ui/base/theme_provider.h" 37 #include "ui/base/theme_provider.h"
36 #include "ui/gfx/image/image_skia.h" 38 #include "ui/gfx/image/image_skia.h"
37 39
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 }; 334 };
333 335
334 class BookmarkBarControllerTest : public BookmarkBarControllerTestBase { 336 class BookmarkBarControllerTest : public BookmarkBarControllerTestBase {
335 public: 337 public:
336 scoped_nsobject<NSButtonCell> cell_; 338 scoped_nsobject<NSButtonCell> cell_;
337 scoped_nsobject<BookmarkBarControllerNoOpen> bar_; 339 scoped_nsobject<BookmarkBarControllerNoOpen> bar_;
338 340
339 virtual void SetUp() { 341 virtual void SetUp() {
340 BookmarkBarControllerTestBase::SetUp(); 342 BookmarkBarControllerTestBase::SetUp();
341 ASSERT_TRUE(browser()); 343 ASSERT_TRUE(browser());
344 AddCommandLineSwitches();
342 345
343 bar_.reset( 346 bar_.reset(
344 [[BookmarkBarControllerNoOpen alloc] 347 [[BookmarkBarControllerNoOpen alloc]
345 initWithBrowser:browser() 348 initWithBrowser:browser()
346 initialWidth:NSWidth([parent_view_ frame]) 349 initialWidth:NSWidth([parent_view_ frame])
347 delegate:nil 350 delegate:nil
348 resizeDelegate:resizeDelegate_.get()]); 351 resizeDelegate:resizeDelegate_.get()]);
349 352
350 InstallAndToggleBar(bar_.get()); 353 InstallAndToggleBar(bar_.get());
351 } 354 }
352 355
356 virtual void AddCommandLineSwitches() {}
357
353 BookmarkBarControllerNoOpen* noOpenBar() { 358 BookmarkBarControllerNoOpen* noOpenBar() {
354 return (BookmarkBarControllerNoOpen*)bar_.get(); 359 return (BookmarkBarControllerNoOpen*)bar_.get();
355 } 360 }
356 }; 361 };
357 362
358 TEST_F(BookmarkBarControllerTest, ShowWhenShowBookmarkBarTrue) { 363 TEST_F(BookmarkBarControllerTest, ShowWhenShowBookmarkBarTrue) {
359 [bar_ updateState:BookmarkBar::SHOW 364 [bar_ updateState:BookmarkBar::SHOW
360 changeType:BookmarkBar::DONT_ANIMATE_STATE_CHANGE]; 365 changeType:BookmarkBar::DONT_ANIMATE_STATE_CHANGE];
361 EXPECT_TRUE([bar_ isInState:BookmarkBar::SHOW]); 366 EXPECT_TRUE([bar_ isInState:BookmarkBar::SHOW]);
362 EXPECT_FALSE([bar_ isInState:BookmarkBar::DETACHED]); 367 EXPECT_FALSE([bar_ isInState:BookmarkBar::DETACHED]);
(...skipping 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 ++i) { 1540 ++i) {
1536 NSRect frame = [[bar_ view] frame]; 1541 NSRect frame = [[bar_ view] frame];
1537 frame.size.width = viewWidths[i] + bookmarks::kBookmarkRightMargin; 1542 frame.size.width = viewWidths[i] + bookmarks::kBookmarkRightMargin;
1538 [[bar_ view] setFrame:frame]; 1543 [[bar_ view] setFrame:frame];
1539 EXPECT_EQ(offTheSideButtonIsHiddenResults[i], 1544 EXPECT_EQ(offTheSideButtonIsHiddenResults[i],
1540 [bar_ offTheSideButtonIsHidden]); 1545 [bar_ offTheSideButtonIsHidden]);
1541 EXPECT_EQ(displayedButtonCountResults[i], [bar_ displayedButtonCount]); 1546 EXPECT_EQ(displayedButtonCountResults[i], [bar_ displayedButtonCount]);
1542 } 1547 }
1543 } 1548 }
1544 1549
1550 class BookmarkBarControllerWithInstantExtendedTest :
1551 public BookmarkBarControllerTest {
1552 public:
1553 virtual void AddCommandLineSwitches() {
Alexei Svitkine (slow) 2013/04/16 16:29:13 Nit: OVERRIDE
beaudoin 2013/04/16 20:49:56 Done.
1554 CommandLine::ForCurrentProcess()->AppendSwitch(
1555 switches::kEnableInstantExtendedAPI);
1556 }
1557 };
1558
1559 TEST_F(BookmarkBarControllerWithInstantExtendedTest,
1560 BookmarksWithAppsPageShortcut) {
1561 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
1562 const BookmarkNode* root = model->bookmark_bar_node();
1563 const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b ");
1564 model_test_utils::AddNodesFromModelString(model, root, model_string);
1565 [bar_ frameDidChange];
1566
1567 // Apps page shortcut button should be visible.
1568 ASSERT_FALSE([bar_ appsPageShortcutButtonIsHidden]);
1569
1570 // Bookmarks should be to the right of the Apps page shortcut button.
1571 CGFloat apps_button_right = NSMaxX([[bar_ appsPageShortcutButton] frame]);
1572 CGFloat right = apps_button_right;
1573 NSArray* buttons = [bar_ buttons];
1574 for (size_t i = 0; i < [buttons count]; ++i) {
1575 EXPECT_LE(right, NSMinX([[buttons objectAtIndex:i] frame]));
1576 right = NSMaxX([[buttons objectAtIndex:i] frame]);
1577 }
1578
1579 // Removing the Apps button should move every bookmark to the left.
1580 profile()->GetPrefs()->SetBoolean(prefs::kShowAppsShortcutInBookmarkBar,
1581 false);
1582 ASSERT_TRUE([bar_ appsPageShortcutButtonIsHidden]);
1583 EXPECT_GT(apps_button_right, NSMinX([[buttons objectAtIndex:0] frame]));
1584 for (size_t i = 1; i < [buttons count]; ++i) {
1585 EXPECT_LE(NSMaxX([[buttons objectAtIndex:i - 1] frame]),
1586 NSMinX([[buttons objectAtIndex:i] frame]));
1587 }
1588 }
1589
1590 TEST_F(BookmarkBarControllerWithInstantExtendedTest,
1591 BookmarksWithoutAppsPageShortcut) {
1592 // The no item containers should be to the right of the Apps button.
1593 ASSERT_FALSE([bar_ appsPageShortcutButtonIsHidden]);
1594 CGFloat apps_button_right = NSMaxX([[bar_ appsPageShortcutButton] frame]);
1595 EXPECT_LE(apps_button_right,
1596 NSMinX([[[bar_ buttonView] noItemTextfield] frame]));
1597 EXPECT_LE(NSMaxX([[[bar_ buttonView] noItemTextfield] frame]),
1598 NSMinX([[[bar_ buttonView] importBookmarksButton] frame]));
1599
1600 // Removing the Apps button should move the no item containers to the left.
1601 profile()->GetPrefs()->SetBoolean(prefs::kShowAppsShortcutInBookmarkBar,
1602 false);
1603 ASSERT_TRUE([bar_ appsPageShortcutButtonIsHidden]);
1604 EXPECT_GT(apps_button_right,
1605 NSMinX([[[bar_ buttonView] noItemTextfield] frame]));
1606 EXPECT_LE(NSMaxX([[[bar_ buttonView] noItemTextfield] frame]),
1607 NSMinX([[[bar_ buttonView] importBookmarksButton] frame]));
1608 }
1609
1545 class BookmarkBarControllerOpenAllTest : public BookmarkBarControllerTest { 1610 class BookmarkBarControllerOpenAllTest : public BookmarkBarControllerTest {
1546 public: 1611 public:
1547 virtual void SetUp() { 1612 virtual void SetUp() {
1548 BookmarkBarControllerTest::SetUp(); 1613 BookmarkBarControllerTest::SetUp();
1549 ASSERT_TRUE(profile()); 1614 ASSERT_TRUE(profile());
1550 1615
1551 resizeDelegate_.reset([[ViewResizerPong alloc] init]); 1616 resizeDelegate_.reset([[ViewResizerPong alloc] init]);
1552 NSRect parent_frame = NSMakeRect(0, 0, 800, 50); 1617 NSRect parent_frame = NSMakeRect(0, 0, 800, 50);
1553 bar_.reset( 1618 bar_.reset(
1554 [[BookmarkBarControllerOpenAllPong alloc] 1619 [[BookmarkBarControllerOpenAllPong alloc]
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
2004 "2f3b ] 4b "); 2069 "2f3b ] 4b ");
2005 actual = model_test_utils::ModelStringFromNode(root); 2070 actual = model_test_utils::ModelStringFromNode(root);
2006 EXPECT_EQ(expected, actual); 2071 EXPECT_EQ(expected, actual);
2007 2072
2008 // Verify that the other bookmark folder can't be deleted. 2073 // Verify that the other bookmark folder can't be deleted.
2009 BookmarkButton *otherButton = [bar_ otherBookmarksButton]; 2074 BookmarkButton *otherButton = [bar_ otherBookmarksButton];
2010 EXPECT_FALSE([bar_ canDragBookmarkButtonToTrash:otherButton]); 2075 EXPECT_FALSE([bar_ canDragBookmarkButtonToTrash:otherButton]);
2011 } 2076 }
2012 2077
2013 } // namespace 2078 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698