Commit c37e444e authored by Marti Wong's avatar Marti Wong Committed by Commit Bot

Exit selection mode after certain menu/editor actions (new iOS bookmark)

Exit selection mode after following actions:
1. Select single url -> More -> Copy URL
2. Select urls/folders -> More -> Move
3. Select single url/folder -> More -> Edit -> Edit title/url -> Done

And stay in selection mode after following actions:
1. Select single url/folder -> More -> Edit -> Cancel
2. Select single url/folder -> More -> Edit -> Move
3. Select single url/folder -> More -> Edit -> Delete

Egtests are modified accordingly to verify the above behavior.

Bug: 774385
Change-Id: I92fbff7613b910982163367d099dc3dc5ba4a021
Reviewed-on: https://chromium-review.googlesource.com/721222
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509421}
parent 7c599b65
......@@ -33,6 +33,10 @@ class ChromeBrowserState;
// Called when the controller should be dismissed.
- (void)bookmarkEditorWantsDismissal:(BookmarkEditViewController*)controller;
// Called when the controller is going to commit the title or URL change.
- (void)bookmarkEditorWillCommitTitleOrUrlChange:
(BookmarkEditViewController*)controller;
@end
// View controller for editing bookmarks. Allows editing of the title, URL and
......
......@@ -296,6 +296,15 @@ typedef NS_ENUM(NSInteger, ItemType) {
GURL url = ConvertUserDataToGURL([self inputURLString]);
// If the URL was not valid, the |save| message shouldn't have been sent.
DCHECK([self inputURLIsValid]);
// Tell delegate if bookmark name or title has been changed.
if (self.bookmark &&
(self.bookmark->GetTitle() !=
base::SysNSStringToUTF16([self inputBookmarkName]) ||
self.bookmark->url() != url)) {
[self.delegate bookmarkEditorWillCommitTitleOrUrlChange:self];
}
bookmark_utils_ios::CreateOrUpdateBookmarkWithUndoToast(
self.bookmark, [self inputBookmarkName], url, self.folder,
self.bookmarkModel, self.browserState);
......
......@@ -31,6 +31,9 @@ class ChromeBrowserState;
// Called when the user cancels the folder creation.
- (void)bookmarkFolderEditorDidCancel:
(BookmarkFolderEditorViewController*)folderEditor;
// Called when the controller is going to commit the title change.
- (void)bookmarkFolderEditorWillCommitTitleChange:
(BookmarkFolderEditorViewController*)folderEditor;
@end
// View controller for creating or editing a bookmark folder. Allows editing of
......
......@@ -245,6 +245,11 @@ folderEditorWithBookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel
if (self.editingExistingFolder) {
DCHECK(self.folder);
// Tell delegate if folder title has been changed.
if (self.folder->GetTitle() != folderTitle) {
[self.delegate bookmarkFolderEditorWillCommitTitleChange:self];
}
self.bookmarkModel->SetTitle(self.folder, folderTitle);
if (self.folder->parent() != self.parentFolder) {
base::AutoReset<BOOL> autoReset(&_ignoresOwnMove, YES);
......
......@@ -405,6 +405,11 @@ const NSInteger BookmarkFolderSectionCount = 2;
self.folderAddController = nil;
}
- (void)bookmarkFolderEditorWillCommitTitleChange:
(BookmarkFolderEditorViewController*)controller {
// Do nothing.
}
#pragma mark - BookmarkModelBridgeObserver
- (void)bookmarkModelLoaded {
......
......@@ -558,14 +558,22 @@ std::vector<GURL> GetUrlsToOpen(const std::vector<const BookmarkNode*>& nodes) {
bookmark_utils_ios::MoveBookmarksWithUndoToast(
folderPicker.editedNodes, self.bookmarks, folder, self.browserState);
[self setEditing:NO animated:NO];
if (base::FeatureList::IsEnabled(kBookmarkNewGeneration)) {
[self setTableViewEditing:NO];
} else {
[self setEditing:NO animated:NO];
}
[self dismissViewControllerAnimated:YES completion:NULL];
self.folderSelector.delegate = nil;
self.folderSelector = nil;
}
- (void)folderPickerDidCancel:(BookmarkFolderViewController*)folderPicker {
[self setEditing:NO animated:NO];
if (base::FeatureList::IsEnabled(kBookmarkNewGeneration)) {
[self setTableViewEditing:NO];
} else {
[self setEditing:NO animated:NO];
}
[self dismissViewControllerAnimated:YES completion:NULL];
self.folderSelector.delegate = nil;
self.folderSelector = nil;
......@@ -595,6 +603,11 @@ std::vector<GURL> GetUrlsToOpen(const std::vector<const BookmarkNode*>& nodes) {
self.folderEditor = nil;
}
- (void)bookmarkFolderEditorWillCommitTitleChange:
(BookmarkFolderEditorViewController*)controller {
[self setTableViewEditing:NO];
}
#pragma mark - BookmarkEditViewControllerDelegate
- (BOOL)bookmarkEditor:(BookmarkEditViewController*)controller
......@@ -613,6 +626,11 @@ std::vector<GURL> GetUrlsToOpen(const std::vector<const BookmarkNode*>& nodes) {
[self setEditing:NO animated:NO];
}
- (void)bookmarkEditorWillCommitTitleOrUrlChange:
(BookmarkEditViewController*)controller {
[self setTableViewEditing:NO];
}
#pragma mark - Edit
// Replaces |_editNodes| and |_editNodesOrdered| with new container objects.
......@@ -1434,6 +1452,7 @@ std::vector<GURL> GetUrlsToOpen(const std::vector<const BookmarkNode*>& nodes) {
UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
std::string urlString = node->url().possibly_invalid_spec();
pasteboard.string = base::SysUTF8ToNSString(urlString);
[self setTableViewEditing:NO];
};
UIAlertAction* copyAction = [UIAlertAction
actionWithTitle:l10n_util::GetNSString(IDS_IOS_CONTENT_CONTEXT_COPY)
......
......@@ -277,6 +277,11 @@ using bookmarks::BookmarkNode;
[self dismissBookmarkEditorAnimated:YES];
}
- (void)bookmarkEditorWillCommitTitleOrUrlChange:
(BookmarkEditViewController*)controller {
// Do nothing.
}
#pragma mark - BookmarkHomeViewControllerDelegate
- (void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment