Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm |
index e84f8da12979dc50e8d6fd817f232e11e0c30395..c6f06bda8ac322886529434aca498e1c275453d0 100644 |
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm |
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm |
@@ -16,13 +16,12 @@ |
#import "chrome/browser/ui/cocoa/animation_utils.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" |
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" |
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu.h" |
-#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" |
#include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
#import "chrome/browser/ui/cocoa/view_resizer_pong.h" |
#include "chrome/test/base/model_test_utils.h" |
@@ -577,6 +576,80 @@ TEST_F(BookmarkBarControllerTest, OffTheSideButtonHidden) { |
GURL("http://superfriends.hall-of-justice.edu")); |
} |
EXPECT_FALSE([bar_ offTheSideButtonIsHidden]); |
+ |
+ // Open the "off the side" and start deleting nodes. Make sure |
+ // deletion of the last node in "off the side" causes the folder to |
+ // close. |
+ EXPECT_FALSE([bar_ offTheSideButtonIsHidden]); |
+ NSButton* offTheSideButton = [bar_ offTheSideButton]; |
+ // Open "off the side" menu. |
+ [bar_ openOffTheSideFolderFromButton:offTheSideButton]; |
+ BookmarkBarFolderController* bbfc = [bar_ folderController]; |
+ EXPECT_TRUE(bbfc); |
+ [bbfc setIgnoreAnimations:YES]; |
+ while (!parent->empty()) { |
+ // We've completed the job so we're done. |
+ if ([bar_ offTheSideButtonIsHidden]) |
+ break; |
+ // Delete the last button. |
+ model->Remove(parent, parent->child_count() - 1); |
+ // If last one make sure the menu is closed and the button is hidden. |
+ // Else make sure menu stays open. |
+ if ([bar_ offTheSideButtonIsHidden]) { |
+ EXPECT_FALSE([bar_ folderController]); |
+ } else { |
+ EXPECT_TRUE([bar_ folderController]); |
+ } |
+ } |
+} |
+ |
+// http://crbug.com/46175 is a crash when deleting bookmarks from the |
+// off-the-side menu while it is open. This test tries to bang hard |
+// in this area to reproduce the crash. |
+TEST_F(BookmarkBarControllerTest, DeleteFromOffTheSideWhileItIsOpen) { |
+ BookmarkModel* model = profile()->GetBookmarkModel(); |
+ [bar_ setIgnoreAnimations:YES]; |
+ [bar_ loaded:model]; |
+ |
+ // Add a lot of bookmarks (per the bug). |
+ const BookmarkNode* parent = model->bookmark_bar_node(); |
+ for (int i = 0; i < 100; i++) { |
+ std::ostringstream title; |
+ title << "super duper wide title " << i; |
+ model->AddURL(parent, parent->child_count(), ASCIIToUTF16(title.str()), |
+ GURL("http://superfriends.hall-of-justice.edu")); |
+ } |
+ EXPECT_FALSE([bar_ offTheSideButtonIsHidden]); |
+ |
+ // Open "off the side" menu. |
+ NSButton* offTheSideButton = [bar_ offTheSideButton]; |
+ [bar_ openOffTheSideFolderFromButton:offTheSideButton]; |
+ BookmarkBarFolderController* bbfc = [bar_ folderController]; |
+ EXPECT_TRUE(bbfc); |
+ [bbfc setIgnoreAnimations:YES]; |
+ |
+ // Start deleting items; try and delete randomish ones in case it |
+ // makes a difference. |
+ int indices[] = { 2, 4, 5, 1, 7, 9, 2, 0, 10, 9 }; |
+ while (!parent->empty()) { |
+ for (unsigned int i = 0; i < arraysize(indices); i++) { |
+ if (indices[i] < parent->child_count()) { |
+ // First we mouse-enter the button to make things harder. |
+ NSArray* buttons = [bbfc buttons]; |
+ for (BookmarkButton* button in buttons) { |
+ if ([button bookmarkNode] == parent->GetChild(indices[i])) { |
+ [bbfc mouseEnteredButton:button event:nil]; |
+ break; |
+ } |
+ } |
+ // Then we remove the node. This triggers the button to get |
+ // deleted. |
+ model->Remove(parent, indices[i]); |
+ // Force visual update which is otherwise delayed. |
+ [[bbfc window] displayIfNeeded]; |
+ } |
+ } |
+ } |
} |
// Test whether |-dragShouldLockBarVisibility| returns NO iff the bar is |
@@ -1214,10 +1287,109 @@ TEST_F(BookmarkBarControllerTest, TestClearOnDealloc) { |
} |
} |
+TEST_F(BookmarkBarControllerTest, TestFolders) { |
+ BookmarkModel* model = profile()->GetBookmarkModel(); |
+ |
+ // Create some folder buttons. |
+ const BookmarkNode* parent = model->bookmark_bar_node(); |
+ const BookmarkNode* folder = model->AddFolder(parent, |
+ parent->child_count(), |
+ ASCIIToUTF16("folder")); |
+ model->AddURL(folder, folder->child_count(), |
+ ASCIIToUTF16("f1"), GURL("http://framma-lamma.com")); |
+ folder = model->AddFolder(parent, parent->child_count(), |
+ ASCIIToUTF16("empty")); |
+ |
+ EXPECT_EQ([[bar_ buttons] count], 2U); |
+ |
+ // First confirm mouseEntered does nothing if "menus" aren't active. |
+ NSEvent* event = cocoa_test_event_utils::MakeMouseEvent(NSOtherMouseUp, 0); |
+ [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:0] event:event]; |
+ EXPECT_FALSE([bar_ folderController]); |
+ |
+ // Make one active. Entering it is now a no-op. |
+ [bar_ openBookmarkFolderFromButton:[[bar_ buttons] objectAtIndex:0]]; |
+ BookmarkBarFolderController* bbfc = [bar_ folderController]; |
+ EXPECT_TRUE(bbfc); |
+ [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:0] event:event]; |
+ EXPECT_EQ(bbfc, [bar_ folderController]); |
+ |
+ // Enter a different one; a new folderController is active. |
+ [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:1] event:event]; |
+ EXPECT_NE(bbfc, [bar_ folderController]); |
+ |
+ // Confirm exited is a no-op. |
+ [bar_ mouseExitedButton:[[bar_ buttons] objectAtIndex:1] event:event]; |
+ EXPECT_NE(bbfc, [bar_ folderController]); |
+ |
+ // Clean up. |
+ [bar_ closeBookmarkFolder:nil]; |
+} |
+ |
+// Verify that the folder menu presentation properly tracks mouse movements |
+// over the bar. Until there is a click no folder menus should show. After a |
+// click on a folder folder menus should show until another click on a folder |
+// button, and a click outside the bar and its folder menus. |
+TEST_F(BookmarkBarControllerTest, TestFolderButtons) { |
+ BookmarkModel& model(*profile()->GetBookmarkModel()); |
+ const BookmarkNode* root = model.bookmark_bar_node(); |
+ const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b 4f:[ 4f1b 4f2b ] "); |
+ model_test_utils::AddNodesFromModelString(model, root, model_string); |
+ |
+ // Validate initial model and that we do not have a folder controller. |
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root); |
+ EXPECT_EQ(model_string, actualModelString); |
+ EXPECT_FALSE([bar_ folderController]); |
+ |
+ // Add a real bookmark so we can click on it. |
+ const BookmarkNode* folder = root->GetChild(3); |
+ model.AddURL(folder, folder->child_count(), ASCIIToUTF16("CLICK ME"), |
+ GURL("http://www.google.com/")); |
+ |
+ // Click on a folder button. |
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"4f"]; |
+ EXPECT_TRUE(button); |
+ [bar_ openBookmarkFolderFromButton:button]; |
+ BookmarkBarFolderController* bbfc = [bar_ folderController]; |
+ EXPECT_TRUE(bbfc); |
+ |
+ // Make sure a 2nd click on the same button closes things. |
+ [bar_ openBookmarkFolderFromButton:button]; |
+ EXPECT_FALSE([bar_ folderController]); |
+ |
+ // Next open is a different button. |
+ button = [bar_ buttonWithTitleEqualTo:@"2f"]; |
+ EXPECT_TRUE(button); |
+ [bar_ openBookmarkFolderFromButton:button]; |
+ EXPECT_TRUE([bar_ folderController]); |
+ |
+ // Mouse over a non-folder button and confirm controller has gone away. |
+ button = [bar_ buttonWithTitleEqualTo:@"1b"]; |
+ EXPECT_TRUE(button); |
+ NSEvent* event = cocoa_test_event_utils::MouseEventAtPoint([button center], |
+ NSMouseMoved, 0); |
+ [bar_ mouseEnteredButton:button event:event]; |
+ EXPECT_FALSE([bar_ folderController]); |
+ |
+ // Mouse over the original folder and confirm a new controller. |
+ button = [bar_ buttonWithTitleEqualTo:@"2f"]; |
+ EXPECT_TRUE(button); |
+ [bar_ mouseEnteredButton:button event:event]; |
+ BookmarkBarFolderController* oldBBFC = [bar_ folderController]; |
+ EXPECT_TRUE(oldBBFC); |
+ |
+ // 'Jump' over to a different folder and confirm a new controller. |
+ button = [bar_ buttonWithTitleEqualTo:@"4f"]; |
+ EXPECT_TRUE(button); |
+ [bar_ mouseEnteredButton:button event:event]; |
+ BookmarkBarFolderController* newBBFC = [bar_ folderController]; |
+ EXPECT_TRUE(newBBFC); |
+ EXPECT_NE(oldBBFC, newBBFC); |
+} |
+ |
// Make sure the "off the side" folder looks like a bookmark folder |
// but only contains "off the side" items. |
-// TODO(rsesek): Fix the off the side folder. |
-TEST_F(BookmarkBarControllerTest, DISABLED_OffTheSideFolder) { |
+TEST_F(BookmarkBarControllerTest, OffTheSideFolder) { |
// It starts hidden. |
EXPECT_TRUE([bar_ offTheSideButtonIsHidden]); |
@@ -1250,15 +1422,54 @@ TEST_F(BookmarkBarControllerTest, DISABLED_OffTheSideFolder) { |
// making sure that none of the nodes in the off-the-side folder are |
// found in bar buttons. Be careful since not all the bar buttons |
// may be currently displayed. |
- NSArray* folderItems = [[[bbfc menuBridge]->controller() menu] itemArray]; |
+ NSArray* folderButtons = [bbfc buttons]; |
NSArray* barButtons = [bar_ buttons]; |
- for (NSMenuItem* folderItem in folderItems) { |
+ for (BookmarkButton* folderButton in folderButtons) { |
for (BookmarkButton* barButton in barButtons) { |
if ([barButton superview]) { |
- EXPECT_NE([folderItem tag], [barButton bookmarkNode]->id()); |
+ EXPECT_NE([folderButton bookmarkNode], [barButton bookmarkNode]); |
} |
} |
} |
+ |
+ // Delete a bookmark in the off-the-side and verify it's gone. |
+ BookmarkButton* button = [bbfc buttonWithTitleEqualTo:@"DELETE_ME"]; |
+ EXPECT_TRUE(button); |
+ model->Remove(parent, parent->child_count() - 2); |
+ button = [bbfc buttonWithTitleEqualTo:@"DELETE_ME"]; |
+ EXPECT_FALSE(button); |
+} |
+ |
+TEST_F(BookmarkBarControllerTest, EventToExitCheck) { |
+ NSEvent* event = cocoa_test_event_utils::MakeMouseEvent(NSMouseMoved, 0); |
+ EXPECT_FALSE([bar_ isEventAnExitEvent:event]); |
+ |
+ BookmarkBarFolderWindow* folderWindow = [[[BookmarkBarFolderWindow alloc] |
+ init] autorelease]; |
+ [[[bar_ view] window] addChildWindow:folderWindow |
+ ordered:NSWindowAbove]; |
+ event = cocoa_test_event_utils::LeftMouseDownAtPointInWindow(NSMakePoint(1,1), |
+ folderWindow); |
+ EXPECT_FALSE([bar_ isEventAnExitEvent:event]); |
+ |
+ event = cocoa_test_event_utils::LeftMouseDownAtPointInWindow( |
+ NSMakePoint(100,100), test_window()); |
+ EXPECT_TRUE([bar_ isEventAnExitEvent:event]); |
+ |
+ // Many components are arbitrary (e.g. location, keycode). |
+ event = [NSEvent keyEventWithType:NSKeyDown |
+ location:NSMakePoint(1,1) |
+ modifierFlags:0 |
+ timestamp:0 |
+ windowNumber:0 |
+ context:nil |
+ characters:@"x" |
+ charactersIgnoringModifiers:@"x" |
+ isARepeat:NO |
+ keyCode:87]; |
+ EXPECT_FALSE([bar_ isEventAnExitEvent:event]); |
+ |
+ [[[bar_ view] window] removeChildWindow:folderWindow]; |
} |
TEST_F(BookmarkBarControllerTest, DropDestination) { |
@@ -1300,6 +1511,45 @@ TEST_F(BookmarkBarControllerTest, DropDestination) { |
} |
} |
+TEST_F(BookmarkBarControllerTest, NodeDeletedWhileMenuIsOpen) { |
+ BookmarkModel* model = profile()->GetBookmarkModel(); |
+ [bar_ loaded:model]; |
+ |
+ const BookmarkNode* parent = model->bookmark_bar_node(); |
+ const BookmarkNode* initialNode = model->AddURL( |
+ parent, parent->child_count(), |
+ ASCIIToUTF16("initial"), |
+ GURL("http://www.google.com")); |
+ |
+ NSMenuItem* item = ItemForBookmarkBarMenu(initialNode); |
+ EXPECT_EQ(0U, noOpenBar()->urls_.size()); |
+ |
+ // Basic check of the menu item and an IBOutlet it can call. |
+ EXPECT_EQ(initialNode, [bar_ nodeFromMenuItem:item]); |
+ [bar_ openBookmarkInNewWindow:item]; |
+ EXPECT_EQ(1U, noOpenBar()->urls_.size()); |
+ [bar_ clear]; |
+ |
+ // Now delete the node and make sure things are happy (no crash, |
+ // NULL node caught). |
+ model->Remove(parent, parent->GetIndexOf(initialNode)); |
+ EXPECT_EQ(nil, [bar_ nodeFromMenuItem:item]); |
+ // Should not crash by referencing a deleted node. |
+ [bar_ openBookmarkInNewWindow:item]; |
+ // Confirm the above did nothing in case it somehow didn't crash. |
+ EXPECT_EQ(0U, noOpenBar()->urls_.size()); |
+ |
+ // Confirm some more non-crashes. |
+ [bar_ openBookmarkInNewForegroundTab:item]; |
+ [bar_ openBookmarkInIncognitoWindow:item]; |
+ [bar_ editBookmark:item]; |
+ [bar_ copyBookmark:item]; |
+ [bar_ deleteBookmark:item]; |
+ [bar_ openAllBookmarks:item]; |
+ [bar_ openAllBookmarksNewWindow:item]; |
+ [bar_ openAllBookmarksIncognitoWindow:item]; |
+} |
+ |
TEST_F(BookmarkBarControllerTest, NodeDeletedWhileContextMenuIsOpen) { |
BookmarkModel* model = profile()->GetBookmarkModel(); |
[bar_ loaded:model]; |
@@ -1326,6 +1576,39 @@ TEST_F(BookmarkBarControllerTest, NodeDeletedWhileContextMenuIsOpen) { |
EXPECT_OCMOCK_VERIFY(fakeMenu); |
} |
+TEST_F(BookmarkBarControllerTest, CloseFolderOnAnimate) { |
+ BookmarkModel* model = profile()->GetBookmarkModel(); |
+ const BookmarkNode* parent = model->bookmark_bar_node(); |
+ const BookmarkNode* folder = model->AddFolder(parent, |
+ parent->child_count(), |
+ ASCIIToUTF16("folder")); |
+ model->AddFolder(parent, parent->child_count(), |
+ ASCIIToUTF16("sibbling folder")); |
+ model->AddURL(folder, folder->child_count(), ASCIIToUTF16("title a"), |
+ GURL("http://www.google.com/a")); |
+ model->AddURL(folder, folder->child_count(), |
+ ASCIIToUTF16("title super duper long long whoa momma title you betcha"), |
+ GURL("http://www.google.com/b")); |
+ BookmarkButton* button = [[bar_ buttons] objectAtIndex:0]; |
+ EXPECT_FALSE([bar_ folderController]); |
+ [bar_ openBookmarkFolderFromButton:button]; |
+ BookmarkBarFolderController* bbfc = [bar_ folderController]; |
+ // The following tells us that the folder menu is showing. We want to make |
+ // sure the folder menu goes away if the bookmark bar is hidden. |
+ EXPECT_TRUE(bbfc); |
+ EXPECT_TRUE([bar_ isVisible]); |
+ |
+ // Hide the bookmark bar. |
+ [bar_ updateAndShowNormalBar:NO |
+ showDetachedBar:YES |
+ withAnimation:YES]; |
+ EXPECT_TRUE([bar_ isAnimationRunning]); |
+ |
+ // Now that we've closed the bookmark bar (with animation) the folder menu |
+ // should have been closed thus releasing the folderController. |
+ EXPECT_FALSE([bar_ folderController]); |
+} |
+ |
TEST_F(BookmarkBarControllerTest, MoveRemoveAddButtons) { |
BookmarkModel& model(*profile()->GetBookmarkModel()); |
const BookmarkNode* root = model.bookmark_bar_node(); |
@@ -1587,9 +1870,7 @@ class BookmarkBarControllerDragDropTest : public BookmarkBarControllerTestBase { |
} |
}; |
-// TODO(rsesek): Fix off the side menu for new-style menus. |
-TEST_F(BookmarkBarControllerDragDropTest, |
- DISABLED_DragMoveBarBookmarkToOffTheSide) { |
+TEST_F(BookmarkBarControllerDragDropTest, DragMoveBarBookmarkToOffTheSide) { |
BookmarkModel& model(*profile()->GetBookmarkModel()); |
const BookmarkNode* root = model.bookmark_bar_node(); |
const std::string model_string("1bWithLongName 2fWithLongName:[ " |
@@ -1614,33 +1895,90 @@ TEST_F(BookmarkBarControllerDragDropTest, |
// Pop up the off-the-side menu. |
BookmarkButton* otsButton = (BookmarkButton*)[bar_ offTheSideButton]; |
ASSERT_TRUE(otsButton); |
- |
+ [[otsButton target] performSelector:@selector(openOffTheSideFolderFromButton:) |
+ withObject:otsButton]; |
BookmarkBarFolderController* otsController = [bar_ folderController]; |
EXPECT_TRUE(otsController); |
- |
+ NSWindow* toWindow = [otsController window]; |
+ EXPECT_TRUE(toWindow); |
BookmarkButton* draggedButton = |
[bar_ buttonWithTitleEqualTo:@"3bWithLongName"]; |
ASSERT_TRUE(draggedButton); |
- |
- int oldOTSCount = NumberOfMenuItems(otsController); |
+ int oldOTSCount = (int)[[otsController buttons] count]; |
EXPECT_EQ(oldOTSCount, oldChildCount - oldDisplayedButtons); |
- |
- NSRect frame = [otsButton frame]; |
- [bar_ dragButton:draggedButton |
- to:NSMakePoint(NSMidX(frame), NSMidY(frame)) |
- copy:YES]; |
- |
+ BookmarkButton* targetButton = [[otsController buttons] objectAtIndex:0]; |
+ ASSERT_TRUE(targetButton); |
+ [otsController dragButton:draggedButton |
+ to:[targetButton center] |
+ copy:YES]; |
// There should still be the same number of buttons in the bar |
// and off-the-side should have one more. |
int newDisplayedButtons = [bar_ displayedButtonCount]; |
int newChildCount = root->child_count(); |
- int newOTSCount = NumberOfMenuItems(otsController); |
+ int newOTSCount = (int)[[otsController buttons] count]; |
EXPECT_EQ(oldDisplayedButtons, newDisplayedButtons); |
EXPECT_EQ(oldChildCount + 1, newChildCount); |
EXPECT_EQ(oldOTSCount + 1, newOTSCount); |
EXPECT_EQ(newOTSCount, newChildCount - newDisplayedButtons); |
} |
+TEST_F(BookmarkBarControllerDragDropTest, DragOffTheSideToOther) { |
+ BookmarkModel& model(*profile()->GetBookmarkModel()); |
+ const BookmarkNode* root = model.bookmark_bar_node(); |
+ const std::string model_string("1bWithLongName 2bWithLongName " |
+ "3bWithLongName 4bWithLongName 5bWithLongName 6bWithLongName " |
+ "7bWithLongName 8bWithLongName 9bWithLongName 10bWithLongName " |
+ "11bWithLongName 12bWithLongName 13bWithLongName 14bWithLongName " |
+ "15bWithLongName 16bWithLongName 17bWithLongName 18bWithLongName " |
+ "19bWithLongName 20bWithLongName "); |
+ model_test_utils::AddNodesFromModelString(model, root, model_string); |
+ |
+ const BookmarkNode* other = model.other_node(); |
+ const std::string other_string("1other 2other 3other "); |
+ model_test_utils::AddNodesFromModelString(model, other, other_string); |
+ |
+ // Validate initial model. |
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root); |
+ EXPECT_EQ(model_string, actualModelString); |
+ std::string actualOtherString = model_test_utils::ModelStringFromNode(other); |
+ EXPECT_EQ(other_string, actualOtherString); |
+ |
+ // Insure that the off-the-side is showing. |
+ ASSERT_FALSE([bar_ offTheSideButtonIsHidden]); |
+ |
+ // Remember how many buttons are showing and are available. |
+ int oldDisplayedButtons = [bar_ displayedButtonCount]; |
+ int oldRootCount = root->child_count(); |
+ int oldOtherCount = other->child_count(); |
+ |
+ // Pop up the off-the-side menu. |
+ BookmarkButton* otsButton = (BookmarkButton*)[bar_ offTheSideButton]; |
+ ASSERT_TRUE(otsButton); |
+ [[otsButton target] performSelector:@selector(openOffTheSideFolderFromButton:) |
+ withObject:otsButton]; |
+ BookmarkBarFolderController* otsController = [bar_ folderController]; |
+ EXPECT_TRUE(otsController); |
+ int oldOTSCount = (int)[[otsController buttons] count]; |
+ EXPECT_EQ(oldOTSCount, oldRootCount - oldDisplayedButtons); |
+ |
+ // Pick an off-the-side button and drag it to the other bookmarks. |
+ BookmarkButton* draggedButton = |
+ [otsController buttonWithTitleEqualTo:@"20bWithLongName"]; |
+ ASSERT_TRUE(draggedButton); |
+ BookmarkButton* targetButton = [bar_ otherBookmarksButton]; |
+ ASSERT_TRUE(targetButton); |
+ [bar_ dragButton:draggedButton to:[targetButton center] copy:NO]; |
+ |
+ // There should one less button in the bar, one less in off-the-side, |
+ // and one more in other bookmarks. |
+ int newRootCount = root->child_count(); |
+ int newOTSCount = (int)[[otsController buttons] count]; |
+ int newOtherCount = other->child_count(); |
+ EXPECT_EQ(oldRootCount - 1, newRootCount); |
+ EXPECT_EQ(oldOTSCount - 1, newOTSCount); |
+ EXPECT_EQ(oldOtherCount + 1, newOtherCount); |
+} |
+ |
TEST_F(BookmarkBarControllerDragDropTest, DragBookmarkData) { |
BookmarkModel& model(*profile()->GetBookmarkModel()); |
const BookmarkNode* root = model.bookmark_bar_node(); |