| Index: chrome/browser/resources/options/search_engine_manager_engine_list.js
|
| diff --git a/chrome/browser/resources/options/search_engine_manager_engine_list.js b/chrome/browser/resources/options/search_engine_manager_engine_list.js
|
| index b375337c3ff3adacb85f3d6d12dd13eceefe2d6f..9f156756c5bb946c8c2aab3f93db78ba0dc049e3 100644
|
| --- a/chrome/browser/resources/options/search_engine_manager_engine_list.js
|
| +++ b/chrome/browser/resources/options/search_engine_manager_engine_list.js
|
| @@ -123,16 +123,17 @@ cr.define('options.search_engines', function() {
|
| nameColEl.appendChild(faviconDivEl);
|
| }
|
|
|
| - var nameEl = this.createEditableTextCell_(nameText);
|
| + var nameEl = this.createEditableTextCell(nameText, this.isPlaceholder_);
|
| nameColEl.appendChild(nameEl);
|
|
|
| // Then the keyword column.
|
| - var keywordEl = this.createEditableTextCell_(keywordText);
|
| + var keywordEl = this.createEditableTextCell(keywordText,
|
| + this.isPlaceholder_);
|
| keywordEl.className = 'keyword-column';
|
| this.contentElement.appendChild(keywordEl);
|
|
|
| // And the URL column.
|
| - var urlEl = this.createEditableTextCell_(urlText);
|
| + var urlEl = this.createEditableTextCell(urlText, this.isPlaceholder_);
|
| urlEl.className = 'url-column';
|
| this.contentElement.appendChild(urlEl);
|
|
|
| @@ -166,47 +167,13 @@ cr.define('options.search_engines', function() {
|
| this.addEventListener('commitedit', this.onEditCommitted_.bind(this));
|
| },
|
|
|
| - /**
|
| - * Returns a div containing an <input>, as well as static text if needed.
|
| - * @param {string} text The text of the cell.
|
| - * @return {HTMLElement} The HTML element for the cell.
|
| - * @private
|
| - */
|
| - createEditableTextCell_: function(text) {
|
| - var container = this.ownerDocument.createElement('div');
|
| -
|
| - if (!this.isPlaceholder_) {
|
| - var textEl = this.ownerDocument.createElement('div');
|
| - textEl.className = 'static-text';
|
| - textEl.textContent = text;
|
| - textEl.setAttribute('editmode', false);
|
| - container.appendChild(textEl);
|
| - }
|
| -
|
| - var inputEl = this.ownerDocument.createElement('input');
|
| - inputEl.type = 'text';
|
| - inputEl.value = text;
|
| - if (!this.isPlaceholder_) {
|
| - inputEl.setAttribute('editmode', true);
|
| - inputEl.staticVersion = textEl;
|
| - }
|
| - container.appendChild(inputEl);
|
| -
|
| - return container;
|
| - },
|
| -
|
| - /** @inheritDoc */
|
| - get initialFocusElement() {
|
| - return this.nameField_;
|
| - },
|
| -
|
| /** @inheritDoc */
|
| get currentInputIsValid() {
|
| return !this.waitingForValidation_ && this.currentlyValid_;
|
| },
|
|
|
| /** @inheritDoc */
|
| - hasBeenEdited: function(e) {
|
| + get hasBeenEdited() {
|
| var engine = this.searchEngine_;
|
| return this.nameField_.value != engine['name'] ||
|
| this.keywordField_.value != engine['keyword'] ||
|
| @@ -221,6 +188,7 @@ cr.define('options.search_engines', function() {
|
| onEditStarted_: function(e) {
|
| var editIndex = this.searchEngine_['modelIndex'];
|
| chrome.send('editSearchEngine', [String(editIndex)]);
|
| + this.startFieldValidation_();
|
| },
|
|
|
| /**
|
| @@ -230,14 +198,6 @@ cr.define('options.search_engines', function() {
|
| */
|
| onEditCommitted_: function(e) {
|
| chrome.send('searchEngineEditCompleted', this.getInputFieldValues_());
|
| - // Update the static version immediately to prevent flickering before
|
| - // the model update callback updates the UI.
|
| - var editFields = [ this.nameField_, this.keywordField_, this.urlField_ ];
|
| - for (var i = 0; i < editFields.length; i++) {
|
| - var staticLabel = editFields[i].staticVersion;
|
| - if (staticLabel)
|
| - staticLabel.textContent = editFields[i].value;
|
| - }
|
| },
|
|
|
| /**
|
| @@ -248,14 +208,12 @@ cr.define('options.search_engines', function() {
|
| */
|
| onEditCancelled_: function() {
|
| chrome.send('searchEngineEditCancelled');
|
| - var engine = this.searchEngine_;
|
| - this.nameField_.value = engine['name'];
|
| - this.keywordField_.value = engine['keyword'];
|
| - this.urlField_.value = engine['url'];
|
|
|
| - var editFields = [ this.nameField_, this.keywordField_, this.urlField_ ];
|
| - for (var i = 0; i < editFields.length; i++) {
|
| - editFields[i].classList.remove('invalid');
|
| + if (this.isPlaceholder_) {
|
| + var engine = this.searchEngine_;
|
| + this.nameField_.value = '';
|
| + this.keywordField_.value = '';
|
| + this.urlField_.value = '';
|
| }
|
| this.currentlyValid_ = !this.isPlaceholder_;
|
| },
|
| @@ -290,21 +248,27 @@ cr.define('options.search_engines', function() {
|
| validationComplete: function(validity) {
|
| this.waitingForValidation_ = false;
|
| // TODO(stuartmorgan): Implement the full validation UI with
|
| - // checkmark/exclamation mark icons and tooltips.
|
| - if (validity['name'])
|
| - this.nameField_.classList.remove('invalid');
|
| - else
|
| - this.nameField_.classList.add('invalid');
|
| -
|
| - if (validity['keyword'])
|
| - this.keywordField_.classList.remove('invalid');
|
| - else
|
| - this.keywordField_.classList.add('invalid');
|
| -
|
| - if (validity['url'])
|
| - this.urlField_.classList.remove('invalid');
|
| - else
|
| - this.urlField_.classList.add('invalid');
|
| + // checkmark/exclamation mark icons and tooltips showing the errors.
|
| + if (validity['name']) {
|
| + this.nameField_.setCustomValidity('');
|
| + } else {
|
| + this.nameField_.setCustomValidity(
|
| + templateData.editSearchEngineInvalidTitleToolTip);
|
| + }
|
| +
|
| + if (validity['keyword']) {
|
| + this.keywordField_.setCustomValidity('');
|
| + } else {
|
| + this.keywordField_.setCustomValidity(
|
| + templateData.editSearchEngineInvalidKeywordToolTip);
|
| + }
|
| +
|
| + if (validity['url']) {
|
| + this.urlField_.setCustomValidity('');
|
| + } else {
|
| + this.urlField_.setCustomValidity(
|
| + templateData.editSearchEngineInvalidURLToolTip);
|
| + }
|
|
|
| this.currentlyValid_ = validity['name'] && validity['keyword'] &&
|
| validity['url'];
|
|
|