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

Unified Diff: chrome/browser/resources/options2/preferences.js

Issue 8895023: Options2: Pull the trigger. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DIAF. Created 9 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/options2/preferences.js
diff --git a/chrome/browser/resources/options2/preferences.js b/chrome/browser/resources/options2/preferences.js
new file mode 100644
index 0000000000000000000000000000000000000000..807e45e2ffd6e878e292d294b199e9a4c4254a28
--- /dev/null
+++ b/chrome/browser/resources/options2/preferences.js
@@ -0,0 +1,185 @@
+// Copyright (c) 2011 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.
+
+cr.define('options', function() {
+
+ /////////////////////////////////////////////////////////////////////////////
+ // Preferences class:
+
+ /**
+ * Preferences class manages access to Chrome profile preferences.
+ * @constructor
+ */
+ function Preferences() {
+ }
+
+ cr.addSingletonGetter(Preferences);
+
+ /**
+ * Sets value of a boolean preference.
+ * and signals its changed value.
+ * @param {string} name Preference name.
+ * @param {boolean} value New preference value.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.setBooleanPref = function(name, value, metric) {
+ var argumentList = [name, Boolean(value)];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('setBooleanPref', argumentList);
+ };
+
+ /**
+ * Sets value of an integer preference.
+ * and signals its changed value.
+ * @param {string} name Preference name.
+ * @param {number} value New preference value.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.setIntegerPref = function(name, value, metric) {
+ var argumentList = [name, Number(value)];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('setIntegerPref', argumentList);
+ };
+
+ /**
+ * Sets value of a double-valued preference.
+ * and signals its changed value.
+ * @param {string} name Preference name.
+ * @param {number} value New preference value.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.setDoublePref = function(name, value, metric) {
+ var argumentList = [name, Number(value)];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('setDoublePref', argumentList);
+ };
+
+ /**
+ * Sets value of a string preference.
+ * and signals its changed value.
+ * @param {string} name Preference name.
+ * @param {string} value New preference value.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.setStringPref = function(name, value, metric) {
+ var argumentList = [name, String(value)];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('setStringPref', argumentList);
+ };
+
+ /**
+ * Sets value of a string preference that represents a URL
+ * and signals its changed value. The value will be fixed to be a valid URL.
+ * @param {string} name Preference name.
+ * @param {string} value New preference value.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.setURLPref = function(name, value, metric) {
+ var argumentList = [name, String(value)];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('setURLPref', argumentList);
+ };
+
+ /**
+ * Sets value of a JSON list preference.
+ * and signals its changed value.
+ * @param {string} name Preference name.
+ * @param {Array} value New preference value.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.setListPref = function(name, value, metric) {
+ var argumentList = [name, JSON.stringify(value)];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('setListPref', argumentList);
+ };
+
+ /**
+ * Clears value of a JSON preference.
+ * @param {string} name Preference name.
+ * @param {string} metric User metrics identifier.
+ */
+ Preferences.clearPref = function(name, metric) {
+ var argumentList = [name];
+ if (metric != undefined) argumentList.push(metric);
+ chrome.send('clearPref', argumentList);
+ };
+
+ 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.registeredPreferences_[prefix + prefName]) {
+ 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);
+ };
+
+ // Export
+ return {
+ Preferences: Preferences
+ };
+
+});
« no previous file with comments | « chrome/browser/resources/options2/pref_ui.js ('k') | chrome/browser/resources/options2/profiles_icon_grid.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698