| OLD | NEW |
| 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 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/mac/scoped_nsobject.h" | 6 #include "base/mac/scoped_nsobject.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 8 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" | 9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" |
| 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" | 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
| (...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 [folder removeButton:1 animate:NO]; | 1159 [folder removeButton:1 animate:NO]; |
| 1160 EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]); | 1160 EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]); |
| 1161 EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:1] title]); | 1161 EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:1] title]); |
| 1162 EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:2] title]); | 1162 EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:2] title]); |
| 1163 EXPECT_EQ(oldDisplayedButtons, [buttons count]); | 1163 EXPECT_EQ(oldDisplayedButtons, [buttons count]); |
| 1164 | 1164 |
| 1165 // Check button spacing. | 1165 // Check button spacing. |
| 1166 [folder validateMenuSpacing]; | 1166 [folder validateMenuSpacing]; |
| 1167 } | 1167 } |
| 1168 | 1168 |
| 1169 TEST_F(BookmarkBarFolderControllerMenuTest, RemoveLastButtonOtherBookmarks) { |
| 1170 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile()); |
| 1171 const BookmarkNode* otherBookmarks = model->other_node(); |
| 1172 |
| 1173 BookmarkButton* otherButton = [bar_ otherBookmarksButton]; |
| 1174 ASSERT_TRUE(otherButton); |
| 1175 |
| 1176 // Open the folder to get the folderController_. |
| 1177 [[otherButton target] openBookmarkFolderFromButton:otherButton]; |
| 1178 BookmarkBarFolderController* folder = [bar_ folderController]; |
| 1179 EXPECT_TRUE(folder); |
| 1180 |
| 1181 // Initially there is only (empty) placeholder button, hence buttonCount |
| 1182 // should be 1. |
| 1183 NSArray* buttons = [folder buttons]; |
| 1184 EXPECT_TRUE(buttons); |
| 1185 EXPECT_EQ(1U, [buttons count]); |
| 1186 |
| 1187 // Add a new bookmark into 'Other bookmarks' folder. |
| 1188 model->AddURL(otherBookmarks, otherBookmarks->child_count(), |
| 1189 ASCIIToUTF16("TheOther"), |
| 1190 GURL("http://www.other.com")); |
| 1191 |
| 1192 // buttonCount still should be 1, as we remove the (empty) placeholder button |
| 1193 // when adding a new button to an empty folder. |
| 1194 EXPECT_EQ(1U, [buttons count]); |
| 1195 |
| 1196 // Now we have only 1 button; remove it so that 'Other bookmarks' folder |
| 1197 // is hidden. |
| 1198 [folder removeButton:0 animate:NO]; |
| 1199 EXPECT_EQ(0U, [buttons count]); |
| 1200 |
| 1201 // 'Other bookmarks' folder gets closed once we remove the last button. Hence |
| 1202 // folderController_ should be NULL. |
| 1203 EXPECT_FALSE([bar_ folderController]); |
| 1204 } |
| 1205 |
| 1169 TEST_F(BookmarkBarFolderControllerMenuTest, ControllerForNode) { | 1206 TEST_F(BookmarkBarFolderControllerMenuTest, ControllerForNode) { |
| 1170 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile()); | 1207 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile()); |
| 1171 const BookmarkNode* root = model->bookmark_bar_node(); | 1208 const BookmarkNode* root = model->bookmark_bar_node(); |
| 1172 const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b "); | 1209 const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b "); |
| 1173 test::AddNodesFromModelString(model, root, model_string); | 1210 test::AddNodesFromModelString(model, root, model_string); |
| 1174 | 1211 |
| 1175 // Validate initial model. | 1212 // Validate initial model. |
| 1176 std::string actualModelString = test::ModelStringFromNode(root); | 1213 std::string actualModelString = test::ModelStringFromNode(root); |
| 1177 EXPECT_EQ(model_string, actualModelString); | 1214 EXPECT_EQ(model_string, actualModelString); |
| 1178 | 1215 |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1603 DeleteBookmark([folder parentButton], profile()); | 1640 DeleteBookmark([folder parentButton], profile()); |
| 1604 EXPECT_FALSE([folder folderController]); | 1641 EXPECT_FALSE([folder folderController]); |
| 1605 } | 1642 } |
| 1606 | 1643 |
| 1607 // TODO(jrg): draggingEntered: and draggingExited: trigger timers so | 1644 // TODO(jrg): draggingEntered: and draggingExited: trigger timers so |
| 1608 // they are hard to test. Factor out "fire timers" into routines | 1645 // they are hard to test. Factor out "fire timers" into routines |
| 1609 // which can be overridden to fire immediately to make behavior | 1646 // which can be overridden to fire immediately to make behavior |
| 1610 // confirmable. | 1647 // confirmable. |
| 1611 // There is a similar problem with mouseEnteredButton: and | 1648 // There is a similar problem with mouseEnteredButton: and |
| 1612 // mouseExitedButton:. | 1649 // mouseExitedButton:. |
| OLD | NEW |