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

Unified Diff: chrome/browser/resources/options2/search_engine_manager.js

Issue 8895023: Options2: Pull the trigger. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DIAF. Created 9 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/options2/search_engine_manager.js
diff --git a/chrome/browser/resources/options2/search_engine_manager.js b/chrome/browser/resources/options2/search_engine_manager.js
new file mode 100644
index 0000000000000000000000000000000000000000..57826d89921f09be19974ea73d3a3f5ed2cd6cb1
--- /dev/null
+++ b/chrome/browser/resources/options2/search_engine_manager.js
@@ -0,0 +1,125 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+cr.define('options', function() {
+ const OptionsPage = options.OptionsPage;
+ const ArrayDataModel = cr.ui.ArrayDataModel;
+
+ /**
+ * Encapsulated handling of search engine management page.
+ * @constructor
+ */
+ function SearchEngineManager() {
+ this.activeNavTab = null;
+ OptionsPage.call(this, 'searchEngines',
+ templateData.searchEngineManagerPageTabTitle,
+ 'search-engine-manager-page');
+ }
+
+ cr.addSingletonGetter(SearchEngineManager);
+
+ SearchEngineManager.prototype = {
+ __proto__: OptionsPage.prototype,
+
+ /**
+ * List for default search engine options.
+ * @private
+ */
+ defaultsList_: null,
+
+ /**
+ * List for other search engine options.
+ * @private
+ */
+ othersList_: null,
+
+ /**
+ * List for extension keywords.
+ * @private
+ extensionList_ : null,
+
+ /** inheritDoc */
+ initializePage: function() {
+ OptionsPage.prototype.initializePage.call(this);
+
+ this.defaultsList_ = $('default-search-engine-list');
+ this.setUpList_(this.defaultsList_);
+
+ this.othersList_ = $('other-search-engine-list');
+ this.setUpList_(this.othersList_);
+
+ this.extensionList_ = $('extension-keyword-list');
+ this.setUpList_(this.extensionList_);
+ },
+
+ /**
+ * Sets up the given list as a search engine list
+ * @param {List} list The list to set up.
+ * @private
+ */
+ setUpList_: function(list) {
+ options.search_engines.SearchEngineList.decorate(list);
+ list.autoExpands = true;
+ },
+
+ /**
+ * Updates the search engine list with the given entries.
+ * @private
+ * @param {Array} defaultEngines List of possible default search engines.
+ * @param {Array} otherEngines List of other search engines.
+ * @param {Array} keywords List of keywords from extensions.
+ */
+ updateSearchEngineList_: function(defaultEngines, otherEngines, keywords) {
+ this.defaultsList_.dataModel = new ArrayDataModel(defaultEngines);
+
+ otherEngines = otherEngines.map(function(x) {
+ return [x, x['name'].toLocaleLowerCase()];
+ }).sort(function(a,b){
+ return a[1].localeCompare(b[1]);
+ }).map(function(x){
+ return x[0];
+ });
+
+ var othersModel = new ArrayDataModel(otherEngines);
+ // Add a "new engine" row.
+ othersModel.push({
+ 'modelIndex': '-1',
+ 'canBeEdited': true
+ });
+ this.othersList_.dataModel = othersModel;
+
+ if (keywords.length > 0) {
+ $('extension-keyword-div').hidden = false;
+ var extensionsModel = new ArrayDataModel(keywords);
+ this.extensionList_.dataModel = extensionsModel;
+ } else {
+ $('extension-keyword-div').hidden = true;
+ }
+ },
+ };
+
+ SearchEngineManager.updateSearchEngineList = function(defaultEngines,
+ otherEngines,
+ keywords) {
+ SearchEngineManager.getInstance().updateSearchEngineList_(defaultEngines,
+ otherEngines,
+ keywords);
+ };
+
+ SearchEngineManager.validityCheckCallback = function(validity, modelIndex) {
+ // Forward to both lists; the one without a matching modelIndex will ignore
+ // it.
+ SearchEngineManager.getInstance().defaultsList_.validationComplete(
+ validity, modelIndex);
+ SearchEngineManager.getInstance().othersList_.validationComplete(
+ validity, modelIndex);
+ };
+
+ // Export
+ return {
+ SearchEngineManager: SearchEngineManager
+ };
+
+});
+

Powered by Google App Engine
This is Rietveld 408576698