summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-07 23:40:53 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-07 23:40:53 +0000
commit68f02ab5e8f5b3c57dcb158eaf496e582f88bac8 (patch)
treef20ec0e07d36a42b2a3d67fdb00759120b463696 /chrome
parente4ac483827993a2bc4d3c8758a172da3fcaca025 (diff)
downloadchromium_src-68f02ab5e8f5b3c57dcb158eaf496e582f88bac8.zip
chromium_src-68f02ab5e8f5b3c57dcb158eaf496e582f88bac8.tar.gz
chromium_src-68f02ab5e8f5b3c57dcb158eaf496e582f88bac8.tar.bz2
Fix muli-folder add in Add Page... sheet.
BUG=http://crbug.com/47877 TEST=On Bookmark Bar, "Add Page...". Click Bookmark Bar node, then click "Add Folder". Click Bookmark Bar node again, then click "Add Folder". Add any name/URL (e.g. "x" and "x"), then click "OK". Fix is to make crash into a success. Review URL: http://codereview.chromium.org/2836050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51799 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-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_];