| Index: chrome/browser/resources/options/preferences.js
|
| ===================================================================
|
| --- chrome/browser/resources/options/preferences.js (revision 0)
|
| +++ chrome/browser/resources/options/preferences.js (revision 0)
|
| @@ -0,0 +1,147 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| +// Preferences class:
|
| +
|
| +/**
|
| + * Preferences class manages access to Chrome profile preferences.
|
| + * @constructor
|
| + */
|
| +function Preferences() {
|
| +}
|
| +
|
| +/**
|
| + * Gets Preferences object instance.
|
| + * @return Preferences singleton instance.
|
| + * @type Preferences
|
| + */
|
| +Preferences.getInstance = function() {
|
| + if (Preferences.instance_)
|
| + return Preferences.instance_;
|
| + Preferences.instance_ = new Preferences();
|
| + return Preferences.instance_;
|
| +};
|
| +
|
| +/**
|
| + * Extracts preference value.
|
| + * @param {Object} dict Map of preference values passed to fetchPrefs callback.
|
| + * @param {string} name Preference name.
|
| + * @return preference value.
|
| + */
|
| +Preferences.getPref = function (dict, name) {
|
| + var parts = name.split('.');
|
| + var cur = dict;
|
| + for (var part; part = parts.shift(); ) {
|
| + if (cur[part]) {
|
| + cur = cur[part];
|
| + } else {
|
| + return null;
|
| + }
|
| + }
|
| + return cur;
|
| +};
|
| +
|
| +/**
|
| + * Sets value of a boolean preference.
|
| + * and signals its changed value.
|
| + * @param {string} name Preference name.
|
| + * @param {boolean} value New preference value.
|
| + */
|
| +Preferences.setBooleanPref = function (name, value) {
|
| + chrome.send('setBooleanPref', [name, value ? 'true' : 'false']);
|
| +};
|
| +
|
| +/**
|
| + * Sets value of an integer preference.
|
| + * and signals its changed value.
|
| + * @param {string} name Preference name.
|
| + * @param {number} value New preference value.
|
| + */
|
| +Preferences.setIntegerPref = function(name, value) {
|
| + chrome.send('setIntegerPref', [name, String(value)]);
|
| +};
|
| +
|
| +/**
|
| + * Sets value of a string preference.
|
| + * and signals its changed value.
|
| + * @param {string} name Preference name.
|
| + * @param {string} value New preference value.
|
| + */
|
| +Preferences.setStringPref = function(name, value) {
|
| + chrome.send('setStringPref', [name, value]);
|
| +};
|
| +
|
| +Preferences.prototype = {
|
| + __proto__: cr.EventTarget.prototype,
|
| +
|
| + // Map of registered preferences.
|
| + registeredPreferences_: {},
|
| +
|
| + /**
|
| + * Adds an event listener to the target.
|
| + * @param {string} type The name of the event.
|
| + * @param {!Function|{handleEvent:Function}} handler The handler for the
|
| + * event. This is called when the event is dispatched.
|
| + */
|
| + addEventListener: function(type, handler) {
|
| + cr.EventTarget.prototype.addEventListener.call(this, type, handler);
|
| + this.registeredPreferences_[type] = true;
|
| + },
|
| +
|
| + /**
|
| + * Initializes preference reading and change notifications.
|
| + */
|
| + initialize: function() {
|
| + var params1 = ['Preferences.prefsFetchedCallback'];
|
| + var params2 = ['Preferences.prefsChangedCallback'];
|
| + for (var prefName in this.registeredPreferences_) {
|
| + params1.push(prefName);
|
| + params2.push(prefName);
|
| + }
|
| + chrome.send('fetchPrefs', params1);
|
| + chrome.send('observePrefs', params2);
|
| + },
|
| +
|
| + /**
|
| + * Helper function for flattening of dictionary passed via fetchPrefs
|
| + * callback.
|
| + * @param {string} prefix Preference name prefix.
|
| + * @param {object} dict Map with preference values.
|
| + */
|
| + flattenMapAndDispatchEvent_: function(prefix, dict) {
|
| + for (var prefName in dict) {
|
| + if (typeof dict[prefName] == 'object') {
|
| + this.flattenMapAndDispatchEvent_(prefix + prefName + '.',
|
| + dict[prefName]);
|
| + } else {
|
| + var event = new cr.Event(prefix + prefName);
|
| + event.value = dict[prefName];
|
| + this.dispatchEvent(event);
|
| + }
|
| + }
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * Callback for fetchPrefs method.
|
| + * @param {object} dict Map of fetched property values.
|
| + */
|
| +Preferences.prefsFetchedCallback = function(dict) {
|
| + Preferences.getInstance().flattenMapAndDispatchEvent_('', dict);
|
| +};
|
| +
|
| +/**
|
| + * Callback for observePrefs method.
|
| + * @param {array} notification An array defining changed preference values.
|
| + * notification[0] contains name of the change preference while its new value
|
| + * is stored in notification[1].
|
| + */
|
| +Preferences.prefsChangedCallback = function(notification) {
|
| + var event = new cr.Event(notification[0]);
|
| + event.value = notification[1];
|
| + Preferences.getInstance().dispatchEvent(event);
|
| +};
|
| +
|
| +
|
|
|
| Property changes on: chrome/browser/resources/options/preferences.js
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|