Index: chrome/browser/resources/options/search_engine_manager.js |
diff --git a/chrome/browser/resources/options/search_engine_manager.js b/chrome/browser/resources/options/search_engine_manager.js |
index 7a56bad1e6731bc2a54404d966c5ab0e377325e0..9a99f574ead3c52fbb316ded650ddb5066d40586 100644 |
--- a/chrome/browser/resources/options/search_engine_manager.js |
+++ b/chrome/browser/resources/options/search_engine_manager.js |
@@ -37,23 +37,19 @@ cr.define('options', function() { |
this.selectionChanged_.bind(this)); |
var self = this; |
- $('addSearchEngineButton').onclick = function(event) { |
- chrome.send('editSearchEngine', ["-1"]); |
- OptionsPage.showOverlay('editSearchEngineOverlay'); |
- }; |
- $('editSearchEngineButton').onclick = function(event) { |
- chrome.send('editSearchEngine', [self.selectedModelIndex_]); |
- OptionsPage.showOverlay('editSearchEngineOverlay'); |
+ // This is a temporary hack to allow the "Make Default" button to |
+ // continue working despite the new list behavior of removing selection |
+ // on focus loss. |
+ // Once drag-and-drop is supported, so items can be moved into the default |
+ // section, this button will go away entirely. |
+ $('makeDefaultSearchEngineButton').onmousedown = function(event) { |
+ self.pendingDefaultEngine_ = self.list_.selectedItem; |
}; |
$('makeDefaultSearchEngineButton').onclick = function(event) { |
chrome.send('managerSetDefaultSearchEngine', |
- [self.selectedModelIndex_]); |
+ [self.pendingDefaultEngine_['modelIndex']]); |
+ self.pendingDefaultEngine_ = null; |
}; |
- |
- // Remove Windows-style accelerators from button labels. |
- // TODO(stuartmorgan): Remove this once the strings are updated. |
- $('addSearchEngineButton').textContent = |
- localStrings.getStringWithoutAccelerator('addSearchEngineButton'); |
}, |
/** |
@@ -62,16 +58,11 @@ cr.define('options', function() { |
* @param {Array} engineList List of available search engines. |
*/ |
updateSearchEngineList_: function(engineList) { |
- this.list_.dataModel = new ArrayDataModel(engineList); |
- }, |
- |
- /** |
- * Returns the currently selected list item's underlying model index. |
- * @private |
- */ |
- get selectedModelIndex_() { |
- var listIndex = this.list_.selectionModel.selectedIndex; |
- return this.list_.dataModel.item(listIndex)['modelIndex']; |
+ var model = new ArrayDataModel(engineList); |
+ model.push({ |
+ 'modelIndex': '-1' |
+ }); |
+ this.list_.dataModel = model; |
}, |
/** |
@@ -80,11 +71,7 @@ cr.define('options', function() { |
* @param {!cr.Event} e Event with change info. |
*/ |
selectionChanged_: function(e) { |
- var selectedIndex = this.list_.selectionModel.selectedIndex; |
- var engine = selectedIndex != -1 ? |
- this.list_.dataModel.item(selectedIndex) : null; |
- |
- $('editSearchEngineButton').disabled = engine == null; |
+ var engine = this.list_.selectedItem || this.pendingDefaultEngine_; |
$('makeDefaultSearchEngineButton').disabled = |
!(engine && engine['canBeDefault']); |
}, |
@@ -94,6 +81,11 @@ cr.define('options', function() { |
SearchEngineManager.getInstance().updateSearchEngineList_(engineList); |
}; |
+ SearchEngineManager.validityCheckCallback = function(validity, modelIndex) { |
+ SearchEngineManager.getInstance().list_.validationComplete(validity, |
+ modelIndex); |
+ }; |
+ |
// Export |
return { |
SearchEngineManager: SearchEngineManager |