diff options
Diffstat (limited to 'modules/libpref/nsIPrefService.idl')
-rw-r--r-- | modules/libpref/nsIPrefService.idl | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/modules/libpref/nsIPrefService.idl b/modules/libpref/nsIPrefService.idl new file mode 100644 index 000000000..0db401996 --- /dev/null +++ b/modules/libpref/nsIPrefService.idl @@ -0,0 +1,160 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" +#include "nsIPrefBranch.idl" + +%{C++ +struct PrefTuple; +#include "nsTArrayForwardDeclare.h" +%} + +[ptr] native nsPreferencesArrayPtr(nsTArray<PrefTuple>); +[ptr] native nsPreferencePtr(PrefTuple); +[ptr] native nsPreferencePtrConst(const PrefTuple); + +interface nsIFile; + +/** + * The nsIPrefService interface is the main entry point into the back end + * preferences management library. The preference service is directly + * responsible for the management of the preferences files and also facilitates + * access to the preference branch object which allows the direct manipulation + * of the preferences themselves. + * + * @see nsIPrefBranch + */ + +[scriptable, uuid(1f84fd56-3956-40df-b86a-1ea01402ee96)] +interface nsIPrefService : nsISupports +{ + /** + * Called to read in the preferences specified in a user preference file. + * + * @param aFile The file to be read. + * + * @note + * If nullptr is passed in for the aFile parameter the default preferences + * file(s) [prefs.js, user.js] will be read and processed. + * + * @throws Error File failed to read or contained invalid data. + * + * @see savePrefFile + * @see nsIFile + */ + void readUserPrefs(in nsIFile aFile); + + /** + * Called to completely flush and re-initialize the preferences system. + * + * @throws Error The preference service failed to restart correctly. + */ + void resetPrefs(); + + /** + * Called to reset all preferences with user set values back to the + * application default values. + */ + void resetUserPrefs(); + + /** + * Called to write current preferences state to a file. + * + * @param aFile The file to be written. + * + * @note + * If nullptr is passed in for the aFile parameter the preference data is + * written out to the current preferences file (usually prefs.js.) + * + * @throws Error File failed to write. + * + * @see readUserPrefs + * @see nsIFile + */ + void savePrefFile(in nsIFile aFile); + + /** + * Call to get a Preferences "Branch" which accesses user preference data. + * Using a Set method on this object will always create or set a user + * preference value. When using a Get method a user set value will be + * returned if one exists, otherwise a default value will be returned. + * + * @param aPrefRoot The preference "root" on which to base this "branch". + * For example, if the root "browser.startup." is used, the + * branch will be able to easily access the preferences + * "browser.startup.page", "browser.startup.homepage", or + * "browser.startup.homepage_override" by simply requesting + * "page", "homepage", or "homepage_override". nullptr or "" + * may be used to access to the entire preference "tree". + * + * @return nsIPrefBranch The object representing the requested branch. + * + * @see getDefaultBranch + */ + nsIPrefBranch getBranch(in string aPrefRoot); + + /** + * Call to get a Preferences "Branch" which accesses only the default + * preference data. Using a Set method on this object will always create or + * set a default preference value. When using a Get method a default value + * will always be returned. + * + * @param aPrefRoot The preference "root" on which to base this "branch". + * For example, if the root "browser.startup." is used, the + * branch will be able to easily access the preferences + * "browser.startup.page", "browser.startup.homepage", or + * "browser.startup.homepage_override" by simply requesting + * "page", "homepage", or "homepage_override". nullptr or "" + * may be used to access to the entire preference "tree". + * + * @note + * Few consumers will want to create default branch objects. Many of the + * branch methods do nothing on a default branch because the operations only + * make sense when applied to user set preferences. + * + * @return nsIPrefBranch The object representing the requested default branch. + * + * @see getBranch + */ + nsIPrefBranch getDefaultBranch(in string aPrefRoot); + + /** + * The preference service is 'dirty' if there are changes to user preferences + * that have not been written to disk + */ + readonly attribute boolean dirty; +}; + +%{C++ + +#define NS_PREFSERVICE_CID \ + { /* {1cd91b88-1dd2-11b2-92e1-ed22ed298000} */ \ + 0x91ca2441, \ + 0x050f, \ + 0x4f7c, \ + { 0x9d, 0xf8, 0x75, 0xb4, 0x0e, 0xa4, 0x01, 0x56 } \ + } + +#define NS_PREFSERVICE_CONTRACTID "@mozilla.org/preferences-service;1" + +/** + * Notification sent before reading the default user preferences files. + */ +#define NS_PREFSERVICE_READ_TOPIC_ID "prefservice:before-read-userprefs" + +/** + * Notification sent when resetPrefs has been called, but before the actual + * reset process occurs. + */ +#define NS_PREFSERVICE_RESET_TOPIC_ID "prefservice:before-reset" + +/** + * Notification sent when after reading app-provided default + * preferences, but before user profile override defaults or extension + * defaults are loaded. + */ +#define NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID "prefservice:after-app-defaults" + +%} |