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

Side by Side Diff: chrome/browser/resources/settings/search_engines_page/search_engines_page.js

Issue 1702063003: MD Settings: Creating WebUIListenerBehavior helper. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@manage_search_engines_ui1
Patch Set: Resolve conflicts with ToT Created 4 years, 10 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 /** 5 /**
6 * @fileoverview 'settings-search-engines-page' is the settings page 6 * @fileoverview 'settings-search-engines-page' is the settings page
7 * containing search engines settings. 7 * containing search engines settings.
8 * 8 *
9 * @group Chrome Settings Elements 9 * @group Chrome Settings Elements
10 * @element settings-search-engines-page 10 * @element settings-search-engines-page
11 */ 11 */
12 Polymer({ 12 Polymer({
13 is: 'settings-search-engines-page', 13 is: 'settings-search-engines-page',
14 14
15 behaviors: [settings.WebUIListenerBehavior],
16
15 properties: { 17 properties: {
16 /** @type {!Array<!SearchEngine>} */ 18 /** @type {!Array<!SearchEngine>} */
17 defaultEngines: { 19 defaultEngines: {
18 type: Array, 20 type: Array,
19 value: function() { return []; } 21 value: function() { return []; }
20 }, 22 },
21 23
22 /** @type {!Array<!SearchEngine>} */ 24 /** @type {!Array<!SearchEngine>} */
23 otherEngines: { 25 otherEngines: {
24 type: Array, 26 type: Array,
25 value: function() { return []; } 27 value: function() { return []; }
26 }, 28 },
27 29
28 /** @private {boolean} */ 30 /** @private {boolean} */
29 showAddSearchEngineDialog_: Boolean, 31 showAddSearchEngineDialog_: Boolean,
30 32
31 /** @private {boolean} */ 33 /** @private {boolean} */
32 otherSearchEnginesExpanded_: { 34 otherSearchEnginesExpanded_: {
33 type: Boolean, 35 type: Boolean,
34 value: true, 36 value: true,
35 }, 37 },
36 }, 38 },
37 39
38 /**
39 * Holds WebUI listeners that need to be removed when this element is
40 * destroyed.
41 * TODO(dpapad): Move listener tracking logic to a Polymer behavior class,
42 * such that it can be re-used.
43 * @private {!Array<!WebUIListener>}
44 */
45 webUIListeners_: [],
46
47 /** @override */ 40 /** @override */
48 ready: function() { 41 ready: function() {
49 settings.SearchEnginesBrowserProxyImpl.getInstance(). 42 settings.SearchEnginesBrowserProxyImpl.getInstance().
50 getSearchEnginesList().then(this.enginesChanged_.bind(this)); 43 getSearchEnginesList().then(this.enginesChanged_.bind(this));
51 this.webUIListeners_.push(cr.addWebUIListener( 44 this.addWebUIListener(
52 'search-engines-changed', this.enginesChanged_.bind(this))); 45 'search-engines-changed', this.enginesChanged_.bind(this));
53 },
54
55 /** @override */
56 detached: function() {
57 this.webUIListeners_.forEach(function(listener) {
58 cr.removeWebUIListener(listener);
59 });
60 }, 46 },
61 47
62 /** 48 /**
63 * @param {!SearchEnginesInfo} searchEnginesInfo 49 * @param {!SearchEnginesInfo} searchEnginesInfo
64 * @private 50 * @private
65 */ 51 */
66 enginesChanged_: function(searchEnginesInfo) { 52 enginesChanged_: function(searchEnginesInfo) {
67 this.defaultEngines = searchEnginesInfo['defaults']; 53 this.defaultEngines = searchEnginesInfo['defaults'];
68 this.otherEngines = searchEnginesInfo['others']; 54 this.otherEngines = searchEnginesInfo['others'];
69 // TODO(dpapad): Use searchEnginesInfo['extensions'] once UI mocks are 55 // TODO(dpapad): Use searchEnginesInfo['extensions'] once UI mocks are
70 // provided. 56 // provided.
71 }, 57 },
72 58
73 /** @private */ 59 /** @private */
74 onAddSearchEngineTap_: function() { 60 onAddSearchEngineTap_: function() {
75 this.showAddSearchEngineDialog_ = true; 61 this.showAddSearchEngineDialog_ = true;
76 this.async(function() { 62 this.async(function() {
77 var dialog = this.$$('settings-search-engine-dialog'); 63 var dialog = this.$$('settings-search-engine-dialog');
78 // Register listener to detect when the dialog is closed. Flip the boolean 64 // Register listener to detect when the dialog is closed. Flip the boolean
79 // once closed to force a restamp next time it is shown such that the 65 // once closed to force a restamp next time it is shown such that the
80 // previous dialog's contents are cleared. 66 // previous dialog's contents are cleared.
81 dialog.addEventListener('iron-overlay-closed', function() { 67 dialog.addEventListener('iron-overlay-closed', function() {
82 this.showAddSearchEngineDialog_ = false; 68 this.showAddSearchEngineDialog_ = false;
83 }.bind(this)); 69 }.bind(this));
84 }.bind(this)); 70 }.bind(this));
85 }, 71 },
86 }); 72 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698