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

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

Issue 1310843010: Add Polymer tests for cr-settings-prefs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clarify test Created 5 years, 3 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 6 * @fileoverview
7 * 'cr-settings-prefs' models Chrome settings and preferences, listening for 7 * 'cr-settings-prefs' models Chrome settings and preferences, listening for
8 * changes to Chrome prefs whitelisted in chrome.settingsPrivate. 8 * changes to Chrome prefs whitelisted in chrome.settingsPrivate.
9 * When changing prefs in this element's 'prefs' property via the UI, this 9 * When changing prefs in this element's 'prefs' property via the UI, this
10 * element tries to set those preferences in Chrome. Whether or not the calls to 10 * element tries to set those preferences in Chrome. Whether or not the calls to
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 prefWrappers_: { 99 prefWrappers_: {
100 type: Object, 100 type: Object,
101 value: function() { return {}; }, 101 value: function() { return {}; },
102 }, 102 },
103 }, 103 },
104 104
105 observers: [ 105 observers: [
106 'prefsChanged_(prefs.*)', 106 'prefsChanged_(prefs.*)',
107 ], 107 ],
108 108
109 settingsApi_: chrome.settingsPrivate,
110
109 /** @override */ 111 /** @override */
110 created: function() { 112 ready: function() {
113 // Set window.mockApi to pass a custom settings API, i.e. for tests.
114 // TODO(michaelpg): don't use a global.
115 if (window.mockApi)
116 this.settingsApi_ = window.mockApi;
111 CrSettingsPrefs.isInitialized = false; 117 CrSettingsPrefs.isInitialized = false;
112 118
113 chrome.settingsPrivate.onPrefsChanged.addListener( 119 this.settingsApi_.onPrefsChanged.addListener(
114 this.onSettingsPrivatePrefsChanged_.bind(this)); 120 this.onSettingsPrivatePrefsChanged_.bind(this));
115 chrome.settingsPrivate.getAllPrefs( 121 this.settingsApi_.getAllPrefs(
116 this.onSettingsPrivatePrefsFetched_.bind(this)); 122 this.onSettingsPrivatePrefsFetched_.bind(this));
117 }, 123 },
118 124
119 /** 125 /**
120 * Polymer callback for changes to this.prefs. 126 * Polymer callback for changes to this.prefs.
121 * @param {!{path: string, value: *}} change 127 * @param {!{path: string, value: *}} change
122 * @private 128 * @private
123 */ 129 */
124 prefsChanged_: function(change) { 130 prefsChanged_: function(change) {
125 if (!CrSettingsPrefs.isInitialized) 131 if (!CrSettingsPrefs.isInitialized)
126 return; 132 return;
127 133
128 var key = this.getPrefKeyFromPath_(change.path); 134 var key = this.getPrefKeyFromPath_(change.path);
129 var prefWrapper = this.prefWrappers_[key]; 135 var prefWrapper = this.prefWrappers_[key];
130 if (!prefWrapper) 136 if (!prefWrapper)
131 return; 137 return;
132 138
133 var prefObj = /** @type {chrome.settingsPrivate.PrefObject} */( 139 var prefObj = /** @type {chrome.settingsPrivate.PrefObject} */(
134 this.get(key, this.prefs)); 140 this.get(key, this.prefs));
135 141
136 // If settingsPrivate already has this value, do nothing. (Otherwise, 142 // If settingsPrivate already has this value, do nothing. (Otherwise,
137 // a change event from settingsPrivate could make us call 143 // a change event from settingsPrivate could make us call
138 // settingsPrivate.setPref and potentially trigger an IPC loop.) 144 // settingsPrivate.setPref and potentially trigger an IPC loop.)
139 if (prefWrapper.equals(this.createPrefWrapper_(prefObj))) 145 if (prefWrapper.equals(this.createPrefWrapper_(prefObj)))
140 return; 146 return;
141 147
142 chrome.settingsPrivate.setPref( 148 this.settingsApi_.setPref(
143 key, 149 key,
144 prefObj.value, 150 prefObj.value,
145 /* pageId */ '', 151 /* pageId */ '',
146 /* callback */ this.setPrefCallback_.bind(this, key)); 152 /* callback */ this.setPrefCallback_.bind(this, key));
147 }, 153 },
148 154
149 /** 155 /**
150 * Called when prefs in the underlying Chrome pref store are changed. 156 * Called when prefs in the underlying Chrome pref store are changed.
151 * @param {!Array<!chrome.settingsPrivate.PrefObject>} prefs 157 * @param {!Array<!chrome.settingsPrivate.PrefObject>} prefs
152 * The prefs that changed. 158 * The prefs that changed.
(...skipping 21 matching lines...) Expand all
174 * @param {string} key The key used in the call to setPref. 180 * @param {string} key The key used in the call to setPref.
175 * @param {boolean} success True if setting the pref succeeded. 181 * @param {boolean} success True if setting the pref succeeded.
176 * @private 182 * @private
177 */ 183 */
178 setPrefCallback_: function(key, success) { 184 setPrefCallback_: function(key, success) {
179 if (success) 185 if (success)
180 return; 186 return;
181 187
182 // Get the current pref value from chrome.settingsPrivate to ensure the 188 // Get the current pref value from chrome.settingsPrivate to ensure the
183 // UI stays up to date. 189 // UI stays up to date.
184 chrome.settingsPrivate.getPref(key, function(pref) { 190 this.settingsApi_.getPref(key, function(pref) {
185 this.updatePrefs_([pref]); 191 this.updatePrefs_([pref]);
186 }.bind(this)); 192 }.bind(this));
187 }, 193 },
188 194
189 /** 195 /**
190 * Updates the prefs model with the given prefs. 196 * Updates the prefs model with the given prefs.
191 * @param {!Array<!chrome.settingsPrivate.PrefObject>} newPrefs 197 * @param {!Array<!chrome.settingsPrivate.PrefObject>} newPrefs
192 * @private 198 * @private
193 */ 199 */
194 updatePrefs_: function(newPrefs) { 200 updatePrefs_: function(newPrefs) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 * @return {PrefWrapper} An object containing a copy of the PrefObject's 246 * @return {PrefWrapper} An object containing a copy of the PrefObject's
241 * value. 247 * value.
242 * @private 248 * @private
243 */ 249 */
244 createPrefWrapper_: function(prefObj) { 250 createPrefWrapper_: function(prefObj) {
245 return prefObj.type == chrome.settingsPrivate.PrefType.LIST ? 251 return prefObj.type == chrome.settingsPrivate.PrefType.LIST ?
246 new ListPrefWrapper(prefObj) : new PrefWrapper(prefObj); 252 new ListPrefWrapper(prefObj) : new PrefWrapper(prefObj);
247 }, 253 },
248 }); 254 });
249 })(); 255 })();
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/settings/prefs/prefs_types.js » ('j') | chrome/test/data/webui/settings/prefs_tests.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698