diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-07 23:40:53 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-07 23:40:53 +0000 |
commit | 68f02ab5e8f5b3c57dcb158eaf496e582f88bac8 (patch) | |
tree | f20ec0e07d36a42b2a3d67fdb00759120b463696 /chrome | |
parent | e4ac483827993a2bc4d3c8758a172da3fcaca025 (diff) | |
download | chromium_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.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_]; |