Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: chrome/browser/resources/md_bookmarks/edit_dialog.js

Issue 2769863002: MD Bookmarks: Validate URL input when editing a bookmark (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 Polymer({ 5 Polymer({
6 is: 'bookmarks-edit-dialog', 6 is: 'bookmarks-edit-dialog',
7 7
8 properties: { 8 properties: {
9 /** @private {BookmarkNode} */ 9 /** @private {BookmarkNode} */
10 editItem_: Object, 10 editItem_: Object,
11 11
12 /** @private */ 12 /** @private */
13 isFolder_: Boolean, 13 isFolder_: Boolean,
14 14
15 /** @private */ 15 /** @private */
16 titleValue_: String, 16 titleValue_: String,
17 17
18 /** @private */ 18 /** @private */
19 urlValue_: String, 19 urlValue_: String,
20 }, 20 },
21 21
22 /** @param {BookmarkNode} editItem */ 22 /** @param {BookmarkNode} editItem */
23 showEditDialog: function(editItem) { 23 showEditDialog: function(editItem) {
24 this.editItem_ = editItem; 24 this.editItem_ = editItem;
25 this.isFolder_ = !editItem.url; 25 this.isFolder_ = !editItem.url;
26 26
27 this.titleValue_ = editItem.title; 27 this.titleValue_ = editItem.title;
28 if (!this.isFolder_) 28 if (!this.isFolder_) {
29 this.$.url.invalid = false;
29 this.urlValue_ = assert(editItem.url); 30 this.urlValue_ = assert(editItem.url);
31 }
30 32
31 this.$.dialog.showModal(); 33 this.$.dialog.showModal();
32 }, 34 },
33 35
34 /** 36 /**
35 * @param {boolean} isFolder 37 * @param {boolean} isFolder
36 * @return {string} 38 * @return {string}
37 * @private 39 * @private
38 */ 40 */
39 getDialogTitle_: function(isFolder) { 41 getDialogTitle_: function(isFolder) {
40 return loadTimeData.getString( 42 return loadTimeData.getString(
41 isFolder ? 'renameFolderTitle' : 'editBookmarkTitle'); 43 isFolder ? 'renameFolderTitle' : 'editBookmarkTitle');
42 }, 44 },
43 45
46 /**
47 * Validates the value of the URL field, returning true if it is a valid URL.
48 * May modify the value by prepending 'http://' in order to make it valid.
49 * @return {boolean}
50 * @private
51 */
52 validateUrl_: function() {
53 var urlInput = /** @type {PaperInputElement} */ (this.$.url);
54 var originalValue = this.urlValue_;
55
56 if (urlInput.validate())
57 return true;
58
59 this.urlValue_ = 'http://' + originalValue;
60
61 if (urlInput.validate())
62 return true;
63
64 this.urlValue_ = originalValue;
calamity 2017/03/24 04:57:44 Urgh. This is a bit unfortunate. It's a shame you
tsergeant 2017/03/27 05:31:44 Yeah, it's a pity, but at least the URL field vali
65 return false;
66 },
67
44 /** @private */ 68 /** @private */
45 onSaveButtonTap_: function() { 69 onSaveButtonTap_: function() {
46 // TODO(tsergeant): Save changes when enter is pressed. 70 // TODO(tsergeant): Save changes when enter is pressed.
47 // TODO(tsergeant): Verify values.
48 var edit = {'title': this.titleValue_}; 71 var edit = {'title': this.titleValue_};
49 if (!this.isFolder_) 72 if (!this.isFolder_) {
73 if (!this.validateUrl_())
74 return;
75
50 edit['url'] = this.urlValue_; 76 edit['url'] = this.urlValue_;
77 }
51 78
52 chrome.bookmarks.update(this.editItem_.id, edit); 79 chrome.bookmarks.update(this.editItem_.id, edit);
53 this.$.dialog.close(); 80 this.$.dialog.close();
54 }, 81 },
55 82
56 /** @private */ 83 /** @private */
57 onCancelButtonTap_: function() { 84 onCancelButtonTap_: function() {
58 this.$.dialog.cancel(); 85 this.$.dialog.cancel();
59 }, 86 },
60 }); 87 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/md_bookmarks/edit_dialog.html ('k') | chrome/browser/ui/webui/md_bookmarks/md_bookmarks_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698