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

Side by Side Diff: chrome/browser/resources/options/pref_ui.js

Issue 3190004: dom-ui options: record user metrics for pref changes.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Rebase to r56963. Created 10 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 cr.define('options', function() { 5 cr.define('options', function() {
6 6
7 var Preferences = options.Preferences; 7 var Preferences = options.Preferences;
8 ///////////////////////////////////////////////////////////////////////////// 8 /////////////////////////////////////////////////////////////////////////////
9 // PrefCheckbox class: 9 // PrefCheckbox class:
10 10
(...skipping 15 matching lines...) Expand all
26 Preferences.getInstance().addEventListener(this.pref, 26 Preferences.getInstance().addEventListener(this.pref,
27 function(event) { 27 function(event) {
28 self.managed = event.value['managed'] 28 self.managed = event.value['managed']
29 self.disabled = self.managed; 29 self.disabled = self.managed;
30 self.checked = event.value['value']; 30 self.checked = event.value['value'];
31 }); 31 });
32 32
33 // Listen to user events. 33 // Listen to user events.
34 this.addEventListener('click', 34 this.addEventListener('click',
35 function(e) { 35 function(e) {
36 Preferences.setBooleanPref(self.pref, self.checked); 36 Preferences.setBooleanPref(self.pref, self.checked, self.metric);
37 }); 37 });
38 } 38 }
39 }; 39 };
40 40
41 /** 41 /**
42 * The preference name. 42 * The preference name.
43 * @type {string} 43 * @type {string}
44 */ 44 */
45 cr.defineProperty(PrefCheckbox, 'pref', cr.PropertyKind.ATTR); 45 cr.defineProperty(PrefCheckbox, 'pref', cr.PropertyKind.ATTR);
46 46
47 /**
48 * The user metric string.
49 * @type {string}
50 */
51 cr.defineProperty(PrefCheckbox, 'metric', cr.PropertyKind.ATTR);
52
47 ///////////////////////////////////////////////////////////////////////////// 53 /////////////////////////////////////////////////////////////////////////////
48 // PrefRadio class: 54 // PrefRadio class:
49 55
50 //Define a constructor that uses an input element as its underlying element. 56 //Define a constructor that uses an input element as its underlying element.
51 var PrefRadio = cr.ui.define('input'); 57 var PrefRadio = cr.ui.define('input');
52 58
53 PrefRadio.prototype = { 59 PrefRadio.prototype = {
54 // Set up the prototype chain 60 // Set up the prototype chain
55 __proto__: HTMLInputElement.prototype, 61 __proto__: HTMLInputElement.prototype,
56 62
(...skipping 10 matching lines...) Expand all
67 self.managed = event.value['managed'] 73 self.managed = event.value['managed']
68 self.disabled = self.managed; 74 self.disabled = self.managed;
69 self.checked = String(event.value['value']) == self.value; 75 self.checked = String(event.value['value']) == self.value;
70 }); 76 });
71 77
72 // Listen to user events. 78 // Listen to user events.
73 this.addEventListener('change', 79 this.addEventListener('change',
74 function(e) { 80 function(e) {
75 if(self.value == 'true' || self.value == 'false') { 81 if(self.value == 'true' || self.value == 'false') {
76 Preferences.setBooleanPref(self.pref, 82 Preferences.setBooleanPref(self.pref,
77 self.value == 'true'); 83 self.value == 'true', self.metric);
78 } else { 84 } else {
79 Preferences.setIntegerPref(self.pref, 85 Preferences.setIntegerPref(self.pref,
80 parseInt(self.value, 10)); 86 parseInt(self.value, 10), self.metric);
81 } 87 }
82 }); 88 });
83 }, 89 },
84 90
85 /** 91 /**
86 * Getter for preference name attribute. 92 * Getter for preference name attribute.
87 */ 93 */
88 get pref() { 94 get pref() {
89 return this.getAttribute('pref'); 95 return this.getAttribute('pref');
90 }, 96 },
91 97
92 /** 98 /**
93 * Setter for preference name attribute. 99 * Setter for preference name attribute.
94 */ 100 */
95 set pref(name) { 101 set pref(name) {
96 this.setAttribute('pref', name); 102 this.setAttribute('pref', name);
97 } 103 }
98 }; 104 };
99 105
106 /**
107 * The user metric string.
108 * @type {string}
109 */
110 cr.defineProperty(PrefRadio, 'metric', cr.PropertyKind.ATTR);
100 111
101 ///////////////////////////////////////////////////////////////////////////// 112 /////////////////////////////////////////////////////////////////////////////
102 // PrefNumeric class: 113 // PrefNumeric class:
103 114
104 // Define a constructor that uses an input element as its underlying element. 115 // Define a constructor that uses an input element as its underlying element.
105 var PrefNumeric = function() {}; 116 var PrefNumeric = function() {};
106 PrefNumeric.prototype = { 117 PrefNumeric.prototype = {
107 // Set up the prototype chain 118 // Set up the prototype chain
108 __proto__: HTMLInputElement.prototype, 119 __proto__: HTMLInputElement.prototype,
109 120
110 /** 121 /**
111 * Initialization function for the cr.ui framework. 122 * Initialization function for the cr.ui framework.
112 */ 123 */
113 decorate: function() { 124 decorate: function() {
114 var self = this; 125 var self = this;
115 126
116 // Listen to pref changes. 127 // Listen to pref changes.
117 Preferences.getInstance().addEventListener(this.pref, 128 Preferences.getInstance().addEventListener(this.pref,
118 function(event) { 129 function(event) {
119 self.managed = event.value['managed'] 130 self.managed = event.value['managed']
120 self.disabled = self.managed; 131 self.disabled = self.managed;
121 self.value = event.value['value']; 132 self.value = event.value['value'];
122 }); 133 });
123 134
124 // Listen to user events. 135 // Listen to user events.
125 this.addEventListener('change', 136 this.addEventListener('change',
126 function(e) { 137 function(e) {
127 Preferences.setIntegerPref(self.pref, self.value); 138 Preferences.setIntegerPref(self.pref, self.value, self.metric);
128 }); 139 });
129 } 140 }
130 }; 141 };
131 142
132 /** 143 /**
133 * The preference name. 144 * The preference name.
134 * @type {string} 145 * @type {string}
135 */ 146 */
136 cr.defineProperty(PrefNumeric, 'pref', cr.PropertyKind.ATTR); 147 cr.defineProperty(PrefNumeric, 'pref', cr.PropertyKind.ATTR);
137 148
149 /**
150 * The user metric string.
151 * @type {string}
152 */
153 cr.defineProperty(PrefNumeric, 'metric', cr.PropertyKind.ATTR);
154
138 ///////////////////////////////////////////////////////////////////////////// 155 /////////////////////////////////////////////////////////////////////////////
139 // PrefNumber class: 156 // PrefNumber class:
140 157
141 // Define a constructor that uses an input element as its underlying element. 158 // Define a constructor that uses an input element as its underlying element.
142 var PrefNumber = cr.ui.define('input'); 159 var PrefNumber = cr.ui.define('input');
143 160
144 PrefNumber.prototype = { 161 PrefNumber.prototype = {
145 // Set up the prototype chain 162 // Set up the prototype chain
146 __proto__: PrefNumeric.prototype, 163 __proto__: PrefNumeric.prototype,
147 164
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 // Item not found, select first item. 219 // Item not found, select first item.
203 self.selectedIndex = 0; 220 self.selectedIndex = 0;
204 }); 221 });
205 222
206 // Listen to user events. 223 // Listen to user events.
207 this.addEventListener('change', 224 this.addEventListener('change',
208 function(e) { 225 function(e) {
209 switch(self.dataType) { 226 switch(self.dataType) {
210 case 'number': 227 case 'number':
211 Preferences.setIntegerPref(self.pref, 228 Preferences.setIntegerPref(self.pref,
212 self.options[self.selectedIndex].value); 229 self.options[self.selectedIndex].value, self.metric);
213 break; 230 break;
214 case 'boolean': 231 case 'boolean':
215 Preferences.setBooleanValue(self.pref, 232 Preferences.setBooleanValue(self.pref,
216 self.options[self.selectedIndex].value); 233 self.options[self.selectedIndex].value, self.metric);
217 break; 234 break;
218 case 'string': 235 case 'string':
219 Preferences.setStringPref(self.pref, 236 Preferences.setStringPref(self.pref,
220 self.options[self.selectedIndex].value); 237 self.options[self.selectedIndex].value, self.metric);
221 break; 238 break;
222 } 239 }
223 }); 240 });
224 241
225 // Initialize options. 242 // Initialize options.
226 this.ownerDocument.addEventListener('DOMContentLoaded', 243 this.ownerDocument.addEventListener('DOMContentLoaded',
227 function() { 244 function() {
228 var values = self.getAttribute('data-values'); 245 var values = self.getAttribute('data-values');
229 if (values) { 246 if (values) {
230 self.initializeValues(templateData[values]); 247 self.initializeValues(templateData[values]);
(...skipping 17 matching lines...) Expand all
248 }, this); 265 }, this);
249 } 266 }
250 }; 267 };
251 268
252 /** 269 /**
253 * The preference name. 270 * The preference name.
254 * @type {string} 271 * @type {string}
255 */ 272 */
256 cr.defineProperty(PrefSelect, 'pref', cr.PropertyKind.ATTR); 273 cr.defineProperty(PrefSelect, 'pref', cr.PropertyKind.ATTR);
257 274
275 /**
276 * The user metric string.
277 * @type {string}
278 */
279 cr.defineProperty(PrefSelect, 'metric', cr.PropertyKind.ATTR);
280
258 ///////////////////////////////////////////////////////////////////////////// 281 /////////////////////////////////////////////////////////////////////////////
259 // PrefTextField class: 282 // PrefTextField class:
260 283
261 // Define a constructor that uses an input element as its underlying element. 284 // Define a constructor that uses an input element as its underlying element.
262 var PrefTextField = cr.ui.define('input'); 285 var PrefTextField = cr.ui.define('input');
263 286
264 PrefTextField.prototype = { 287 PrefTextField.prototype = {
265 // Set up the prototype chain 288 // Set up the prototype chain
266 __proto__: HTMLInputElement.prototype, 289 __proto__: HTMLInputElement.prototype,
267 290
268 /** 291 /**
269 * Initialization function for the cr.ui framework. 292 * Initialization function for the cr.ui framework.
270 */ 293 */
271 decorate: function() { 294 decorate: function() {
272 var self = this; 295 var self = this;
273 296
274 // Listen to pref changes. 297 // Listen to pref changes.
275 Preferences.getInstance().addEventListener(this.pref, 298 Preferences.getInstance().addEventListener(this.pref,
276 function(event) { 299 function(event) {
277 self.managed = event.value['managed'] 300 self.managed = event.value['managed']
278 self.disabled = self.managed; 301 self.disabled = self.managed;
279 self.value = event.value['value']; 302 self.value = event.value['value'];
280 }); 303 });
281 304
282 // Listen to user events. 305 // Listen to user events.
283 this.addEventListener('change', 306 this.addEventListener('change',
284 function(e) { 307 function(e) {
285 Preferences.setStringPref(self.pref, self.value); 308 Preferences.setStringPref(self.pref, self.value, self.metric);
286 }); 309 });
287 310
288 window.addEventListener('unload', 311 window.addEventListener('unload',
289 function() { 312 function() {
290 if (document.activeElement == self) 313 if (document.activeElement == self)
291 self.blur(); 314 self.blur();
292 }); 315 });
293 } 316 }
294 }; 317 };
295 318
296 /** 319 /**
297 * The preference name. 320 * The preference name.
298 * @type {string} 321 * @type {string}
299 */ 322 */
300 cr.defineProperty(PrefTextField, 'pref', cr.PropertyKind.ATTR); 323 cr.defineProperty(PrefTextField, 'pref', cr.PropertyKind.ATTR);
301 324
325 /**
326 * The user metric string.
327 * @type {string}
328 */
329 cr.defineProperty(PrefTextField, 'metric', cr.PropertyKind.ATTR);
330
302 // Export 331 // Export
303 return { 332 return {
304 PrefCheckbox: PrefCheckbox, 333 PrefCheckbox: PrefCheckbox,
305 PrefNumber: PrefNumber, 334 PrefNumber: PrefNumber,
306 PrefNumeric: PrefNumeric, 335 PrefNumeric: PrefNumeric,
307 PrefRadio: PrefRadio, 336 PrefRadio: PrefRadio,
308 PrefRange: PrefRange, 337 PrefRange: PrefRange,
309 PrefSelect: PrefSelect, 338 PrefSelect: PrefSelect,
310 PrefTextField: PrefTextField 339 PrefTextField: PrefTextField
311 }; 340 };
312 341
313 }); 342 });
314 343
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/personal_options.js ('k') | chrome/browser/resources/options/preferences.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698