diff options
-rw-r--r-- | chrome/browser/cocoa/bookmark_editor_base_controller.mm | 4 | ||||
-rw-r--r-- | chrome/browser/cocoa/bookmark_editor_base_controller_unittest.mm | 14 |
2 files changed, 18 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/bookmark_editor_base_controller.mm b/chrome/browser/cocoa/bookmark_editor_base_controller.mm index 2770807..af88ea7 100644 --- a/chrome/browser/cocoa/bookmark_editor_base_controller.mm +++ b/chrome/browser/cocoa/bookmark_editor_base_controller.mm @@ -511,12 +511,16 @@ class BookmarkEditorBaseControllerBridge : public BookmarkModelObserver { } - (void)createNewFolders { + // Turn off notifications while "importing" folders (as created in the sheet). + observer_->BookmarkImportBeginning([self bookmarkModel]); // Scan the tree looking for nodes marked 'newFolder' and create those nodes. NSArray* folderTreeArray = [self folderTreeArray]; for (BookmarkFolderInfo *folderInfo in folderTreeArray) { [self createNewFoldersForFolder:folderInfo selectedFolderInfo:[self selectedFolder]]; } + // Notifications back on. + observer_->BookmarkImportEnding([self bookmarkModel]); } #pragma mark For Unit Test Use Only diff --git a/chrome/browser/cocoa/bookmark_editor_base_controller_unittest.mm b/chrome/browser/cocoa/bookmark_editor_base_controller_unittest.mm index ed074a5..17159db 100644 --- a/chrome/browser/cocoa/bookmark_editor_base_controller_unittest.mm +++ b/chrome/browser/cocoa/bookmark_editor_base_controller_unittest.mm @@ -161,6 +161,20 @@ TEST_F(BookmarkEditorBaseControllerTest, CreateFolder) { [controller_ cancel:nil]; } +TEST_F(BookmarkEditorBaseControllerTest, CreateTwoFolders) { + BookmarkModel* model = browser_helper_.profile()->GetBookmarkModel(); + const BookmarkNode* bar = model->GetBookmarkBarNode(); + // Create 2 folders which are children of the bar. + [controller_ selectTestNodeInBrowser:bar]; + [controller_ newFolder:nil]; + [controller_ selectTestNodeInBrowser:bar]; + [controller_ newFolder:nil]; + // If we do NOT crash on createNewFolders, success! + // (e.g. http://crbug.com/47877 is fixed). + [controller_ createNewFolders]; + [controller_ cancel:nil]; +} + TEST_F(BookmarkEditorBaseControllerTest, SelectedFolderDeleted) { BookmarkModel& model(*(browser_helper_.profile()->GetBookmarkModel())); [controller_ selectTestNodeInBrowser:group_b_3_]; |