1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5cr.define('options', function() { 6 const OptionsPage = options.OptionsPage; 7 const ArrayDataModel = cr.ui.ArrayDataModel; 8 9 /** 10 * Encapsulated handling of search engine management page. 11 * @constructor 12 */ 13 function SearchEngineManager() { 14 this.activeNavTab = null; 15 OptionsPage.call(this, 'searchEngines', 16 templateData.searchEngineManagerPageTabTitle, 17 'searchEngineManagerPage'); 18 } 19 20 cr.addSingletonGetter(SearchEngineManager); 21 22 SearchEngineManager.prototype = { 23 __proto__: OptionsPage.prototype, 24 25 /** 26 * List for default search engine options 27 * @type {boolean} 28 * @private 29 */ 30 defaultsList_: null, 31 32 /** 33 * List for other search engine options 34 * @type {boolean} 35 * @private 36 */ 37 othersList_: null, 38 39 /** inheritDoc */ 40 initializePage: function() { 41 OptionsPage.prototype.initializePage.call(this); 42 43 this.defaultsList_ = $('defaultSearchEngineList'); 44 this.setUpList_(this.defaultsList_); 45 46 this.othersList_ = $('otherSearchEngineList'); 47 this.setUpList_(this.othersList_); 48 }, 49 50 /** 51 * Sets up the given list as a search engine list 52 * @param {List} list The list to set up. 53 * @private 54 */ 55 setUpList_: function(list) { 56 options.search_engines.SearchEngineList.decorate(list); 57 list.autoExpands = true; 58 }, 59 60 /** 61 * Updates the search engine list with the given entries. 62 * @private 63 * @param {Array} defaultEngines List of possible default search engines. 64 * @param {Array} otherEngines List of other search engines. 65 */ 66 updateSearchEngineList_: function(defaultEngines, otherEngines) { 67 this.defaultsList_.dataModel = new ArrayDataModel(defaultEngines); 68 var othersModel = new ArrayDataModel(otherEngines); 69 // Add a "new engine" row. 70 othersModel.push({ 71 'modelIndex': '-1' 72 }); 73 this.othersList_.dataModel = othersModel; 74 }, 75 }; 76 77 SearchEngineManager.updateSearchEngineList = function(defaultEngines, 78 otherEngines) { 79 SearchEngineManager.getInstance().updateSearchEngineList_(defaultEngines, 80 otherEngines); 81 }; 82 83 SearchEngineManager.validityCheckCallback = function(validity, modelIndex) { 84 // Forward to both lists; the one without a matching modelIndex will ignore 85 // it. 86 SearchEngineManager.getInstance().defaultsList_.validationComplete( 87 validity, modelIndex); 88 SearchEngineManager.getInstance().othersList_.validationComplete( 89 validity, modelIndex); 90 }; 91 92 // Export 93 return { 94 SearchEngineManager: SearchEngineManager 95 }; 96 97}); 98 99