summaryrefslogtreecommitdiffstats
path: root/dom/interfaces/base/nsIContentPrefService.idl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/interfaces/base/nsIContentPrefService.idl')
-rw-r--r--dom/interfaces/base/nsIContentPrefService.idl263
1 files changed, 263 insertions, 0 deletions
diff --git a/dom/interfaces/base/nsIContentPrefService.idl b/dom/interfaces/base/nsIContentPrefService.idl
new file mode 100644
index 000000000..9c3cf3665
--- /dev/null
+++ b/dom/interfaces/base/nsIContentPrefService.idl
@@ -0,0 +1,263 @@
+/* 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"
+
+interface nsIVariant;
+interface nsIPropertyBag2;
+interface nsIContentURIGrouper;
+interface nsILoadContext;
+interface mozIStorageConnection;
+
+[scriptable, uuid(43635c53-b445-4c4e-8cc5-562697299b55)]
+interface nsIContentPrefObserver : nsISupports
+{
+ /**
+ * Called when a content pref is set to a different value.
+ *
+ * @param aGroup the group to which the pref belongs, or null
+ * if it's a global pref (applies to all sites)
+ * @param aName the name of the pref that was set
+ * @param aValue the new value of the pref
+ * @param aIsPrivate an optional flag determining whether the
+ * original context is private or not
+ */
+ void onContentPrefSet(in AString aGroup,
+ in AString aName,
+ in nsIVariant aValue,
+ [optional] in boolean aIsPrivate);
+
+ /**
+ * Called when a content pref is removed.
+ *
+ * @param aGroup the group to which the pref belongs, or null
+ * if it's a global pref (applies to all sites)
+ * @param aName the name of the pref that was removed
+ * @param aIsPrivate an optional flag determining whether the
+ * original context is private or not
+ */
+ void onContentPrefRemoved(in AString aGroup,
+ in AString aName,
+ [optional] in boolean aIsPrivate);
+};
+
+[scriptable, function, uuid(c1b3d6df-5373-4606-8494-8bcf14a7fc62)]
+interface nsIContentPrefCallback : nsISupports
+{
+ void onResult(in nsIVariant aResult);
+};
+
+/**
+ * @deprecated Please use nsIContentPrefService2 instead.
+ */
+[scriptable, uuid(e3f772f3-023f-4b32-b074-36cf0fd5d414)]
+interface nsIContentPrefService : nsISupports
+{
+ /**
+ * Get a pref.
+ *
+ * Besides the regular string, integer, boolean, etc. values, this method
+ * may return null (nsIDataType::VTYPE_EMPTY), which means the pref is set
+ * to NULL in the database, as well as undefined (nsIDataType::VTYPE_VOID),
+ * which means there is no record for this pref in the database.
+ *
+ * This method can be called from content processes in electrolysis builds.
+ * We have a whitelist of values that can be read in such a way.
+ *
+ * @param aGroup the group for which to get the pref, as an nsIURI
+ * from which the hostname will be used, a string
+ * (typically in the format of a hostname), or null
+ * to get the global pref (applies to all sites)
+ * @param aName the name of the pref to get
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to search in memory or in
+ * permanent storage for it), obtained from a relevant
+ * window or channel.
+ * @param aCallback an optional nsIContentPrefCallback to receive the
+ * result. If desired, JavaScript callers can instead
+ * provide a function to call upon completion
+ *
+ * @returns the value of the pref
+ * @throws NS_ERROR_ILLEGAL_VALUE if aGroup is not a string, nsIURI, or null
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ nsIVariant getPref(in nsIVariant aGroup, in AString aName,
+ in nsILoadContext aPrivacyContext,
+ [optional] in nsIContentPrefCallback aCallback);
+
+ /**
+ * Set a pref.
+ *
+ * This method can be called from content processes in electrolysis builds.
+ * We have a whitelist of values that can be set in such a way.
+ *
+ * @param aGroup the group for which to set the pref, as an nsIURI
+ * from which the hostname will be used, a string
+ * (typically in the format of a hostname), or null
+ * to set the global pref (applies to all sites)
+ * @param aName the name of the pref to set
+ * @param aValue the new value of the pref
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to store it in memory or in
+ * permanent storage), obtained from a relevant
+ * window or channel.
+ * @throws NS_ERROR_ILLEGAL_VALUE if aGroup is not a string, nsIURI, or null
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ void setPref(in nsIVariant aGroup, in AString aName, in nsIVariant aValue, in nsILoadContext aPrivacyContext);
+
+ /**
+ * Check whether or not a pref exists.
+ *
+ * @param aGroup the group for which to check for the pref, as an nsIURI
+ * from which the hostname will be used, a string
+ * (typically in the format of a hostname), or null
+ * to check for the global pref (applies to all sites)
+ * @param aName the name of the pref to check for
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to search in memory or in
+ * permanent storage for it), obtained from a relevant
+ * window or channel.
+ * @throws NS_ERROR_ILLEGAL_VALUE if aGroup is not a string, nsIURI, or null
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ boolean hasPref(in nsIVariant aGroup, in AString aName, in nsILoadContext aContext);
+
+ /**
+ * Check whether or not the value of a pref (or its non-existance) is cached.
+ *
+ * @param aGroup the group for which to check for the pref, as an nsIURI
+ * from which the hostname will be used, a string
+ * (typically in the format of a hostname), or null
+ * to check for the global pref (applies to all sites)
+ * @param aName the name of the pref to check for
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to search in memory or in
+ * permanent storage for it), obtained from a relevant
+ * window or channel.
+ * @throws NS_ERROR_ILLEGAL_VALUE if aGroup is not a string, nsIURI, or null
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ boolean hasCachedPref(in nsIVariant aGroup, in AString aName, in nsILoadContext aContext);
+
+ /**
+ * Remove a pref.
+ *
+ * @param aGroup the group for which to remove the pref, as an nsIURI
+ * from which the hostname will be used, a string
+ * (typically in the format of a hostname), or null
+ * to remove the global pref (applies to all sites)
+ * @param aName the name of the pref to remove
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to search in memory or in
+ * permanent storage for it), obtained from a relevant
+ * window or channel.
+ * @throws NS_ERROR_ILLEGAL_VALUE if aGroup is not a string, nsIURI, or null
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ void removePref(in nsIVariant aGroup, in AString aName, in nsILoadContext aContext);
+
+ /**
+ * Remove all grouped prefs. Useful for removing references to the sites
+ * the user has visited when the user clears their private data.
+ *
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to remove prefs in memory or
+ * in permanent storage), obtained from a relevant
+ * window or channel.
+ */
+ void removeGroupedPrefs(in nsILoadContext aContext);
+
+ /**
+ * Remove all prefs with the given name.
+ *
+ * @param aName the setting name for which to remove prefs
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the prefs (ie. whether to remove prefs in memory or
+ * in permanent storage), obtained from a relevant
+ * window or channel.
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ void removePrefsByName(in AString aName, in nsILoadContext aContext);
+
+ /**
+ * Get the prefs that apply to the given site.
+ *
+ * @param aGroup the group for which to retrieve prefs, as an nsIURI
+ * from which the hostname will be used, a string
+ * (typically in the format of a hostname), or null
+ * to get the global prefs (apply to all sites)
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to search for prefs in memory
+ * or in permanent storage), obtained from a relevant
+ * window or channel.
+ *
+ * @returns a property bag of prefs
+ * @throws NS_ERROR_ILLEGAL_VALUE if aGroup is not a string, nsIURI, or null
+ */
+ nsIPropertyBag2 getPrefs(in nsIVariant aGroup, in nsILoadContext aContext);
+
+ /**
+ * Get the prefs with the given name.
+ *
+ * @param aName the setting name for which to retrieve prefs
+ * @param aPrivacyContext
+ * a context from which to determine the privacy status
+ * of the pref (ie. whether to search for prefs in memory
+ * or in permanent storage), obtained from a relevant
+ * window or channel.
+ *
+ * @returns a property bag of prefs
+ * @throws NS_ERROR_ILLEGAL_VALUE if aName is null or an empty string
+ */
+ nsIPropertyBag2 getPrefsByName(in AString aName, in nsILoadContext aContext);
+
+ /**
+ * Add an observer.
+ *
+ * @param aName the setting to observe, or null to add
+ * a generic observer that observes all settings
+ * @param aObserver the observer to add
+ */
+ void addObserver(in AString aName, in nsIContentPrefObserver aObserver);
+
+ /**
+ * Remove an observer.
+ *
+ * @param aName the setting being observed, or null to remove
+ * a generic observer that observes all settings
+ * @param aObserver the observer to remove
+ */
+ void removeObserver(in AString aName, in nsIContentPrefObserver aObserver);
+
+ /**
+ * The component that the service uses to determine the groups to which
+ * URIs belong. By default this is the "hostname grouper", which groups
+ * URIs by full hostname (a.k.a. site).
+ */
+ readonly attribute nsIContentURIGrouper grouper;
+
+ /**
+ * The database connection to the content preferences database.
+ * Useful for accessing and manipulating preferences in ways that are caller-
+ * specific or for which there is not yet a generic method, although generic
+ * functionality useful to multiple callers should generally be added to this
+ * unfrozen interface. Also useful for testing the database creation
+ * and migration code.
+ */
+ readonly attribute mozIStorageConnection DBConnection;
+};
+
+%{C++
+// The contractID for the generic implementation built in to xpcom.
+#define NS_CONTENT_PREF_SERVICE_CONTRACTID "@mozilla.org/content-pref/service;1"
+%}