summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/cocoa/bookmark_editor_base_controller.mm4
-rw-r--r--chrome/browser/cocoa/bookmark_editor_base_controller_unittest.mm14
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_];