Linux Mac OSX Windows

Implemented by

 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
 
 @status FROZEN
[scriptable, uuid(decb9cc7-c08f-4ea5-be91-a8fc637ce2d2)]
interface nsIPrefService : nsISupports

Methods

 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". nsnull 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". nsnull 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)
 Called to read in the preferences specified in a user preference file.

 @param aFile The file to be read.

 @note
 If nsnull is passed in for the aFile parameter the default preferences
 file(s) [prefs.js, user.js] will be read and processed.

 @return NS_OK File was read and processed.
 @return Other 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.

 @return NS_OK The preference service was re-initialized correctly.
 @return Other The preference service failed to restart correctly.
void resetPrefs()
 Called to reset all preferences with user set values back to the
 application default values.

 @return NS_OK Always.
void resetUserPrefs()
 Called to write current preferences state to a file.

 @param aFile The file to be written.

 @note
 If nsnull is passed in for the aFile parameter the preference data is
 written out to the current preferences file (usually prefs.js.)

 @return NS_OK File was written.
 @return Other File failed to write.

 @see readUserPrefs
 @see nsIFile
void savePrefFile(in nsIFile aFile)