dom/interfaces/base/nsIContentPrefService2.idl

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #include "nsISupports.idl"
     7 interface nsIVariant;
     8 interface nsIContentPrefObserver;
     9 interface nsIContentPrefCallback2;
    10 interface nsILoadContext;
    11 interface nsIContentPref;
    13 /**
    14  * Content Preferences
    15  *
    16  * Content preferences allow the application to associate arbitrary data, or
    17  * "preferences", with specific domains, or web "content".  Specifically, a
    18  * content preference is a structure with three values: a domain with which the
    19  * preference is associated, a name that identifies the preference within its
    20  * domain, and a value.  (See nsIContentPref below.)
    21  *
    22  * For example, if you want to remember the user's preference for a certain zoom
    23  * level on www.mozilla.org pages, you might store a preference whose domain is
    24  * "www.mozilla.org", whose name is "zoomLevel", and whose value is the numeric
    25  * zoom level.
    26  *
    27  * A preference need not have a domain, and in that case the preference is
    28  * called a "global" preference.  This interface doesn't impart any special
    29  * significance to global preferences; they're simply name-value pairs that
    30  * aren't associated with any particular domain.  As a consumer of this
    31  * interface, you might choose to let a global preference override all non-
    32  * global preferences of the same name, for example, for whatever definition of
    33  * "override" is appropriate for your use case.
    34  *
    35  *
    36  * Domain Parameters
    37  *
    38  * Many methods of this interface accept a "domain" parameter.  Domains may be
    39  * specified either exactly, like "example.com", or as full URLs, like
    40  * "http://example.com/foo/bar".  In the latter case the API extracts the full
    41  * domain from the URL, so if you specify "http://foo.bar.example.com/baz", the
    42  * domain is taken to be "foo.bar.example.com", not "example.com".
    43  *
    44  *
    45  * Private-Browsing Context Parameters
    46  *
    47  * Many methods also accept a "context" parameter.  This parameter relates to
    48  * private browsing and determines the kind of storage that a method uses,
    49  * either the usual permanent storage or temporary storage set aside for private
    50  * browsing sessions.
    51  *
    52  * Pass null to unconditionally use permanent storage.  Pass an nsILoadContext
    53  * to use storage appropriate to the context's usePrivateBrowsing attribute: if
    54  * usePrivateBrowsing is true, temporary private-browsing storage is used, and
    55  * otherwise permanent storage is used.  A context can be obtained from the
    56  * window or channel whose content pertains to the preferences being modified or
    57  * retrieved.
    58  *
    59  *
    60  * Callbacks
    61  *
    62  * The methods of callback objects are always called asynchronously.
    63  *
    64  * Observers are called after callbacks are called, but they are called in the
    65  * same turn of the event loop as callbacks.
    66  *
    67  * See nsIContentPrefCallback2 below for more information about callbacks.
    68  */
    70 [scriptable, uuid(f2507add-dc39-48e0-9147-e0270376148b)]
    71 interface nsIContentPrefService2 : nsISupports
    72 {
    73   /**
    74    * Gets all the preferences with the given name.
    75    *
    76    * @param name      The preferences' name.
    77    * @param context   The private-browsing context, if any.
    78    * @param callback  handleResult is called once for each preference unless
    79    *                  no such preferences exist, in which case handleResult
    80    *                  is not called at all.
    81    */
    82   void getByName(in AString name,
    83                  in nsILoadContext context,
    84                  in nsIContentPrefCallback2 callback);
    86   /**
    87    * Gets the preference with the given domain and name.
    88    *
    89    * @param domain    The preference's domain.
    90    * @param name      The preference's name.
    91    * @param context   The private-browsing context, if any.
    92    * @param callback  handleResult is called once unless no such preference
    93    *                  exists, in which case handleResult is not called at all.
    94    */
    95   void getByDomainAndName(in AString domain,
    96                           in AString name,
    97                           in nsILoadContext context,
    98                           in nsIContentPrefCallback2 callback);
   100   /**
   101    * Gets all preferences with the given name whose domains are either the same
   102    * as or subdomains of the given domain.
   103    *
   104    * @param domain    The preferences' domain.
   105    * @param name      The preferences' name.
   106    * @param context   The private-browsing context, if any.
   107    * @param callback  handleResult is called once for each preference.  If no
   108    *                  such preferences exist, handleResult is not called at all.
   109    */
   110   void getBySubdomainAndName(in AString domain,
   111                              in AString name,
   112                              in nsILoadContext context,
   113                              in nsIContentPrefCallback2 callback);
   115   /**
   116    * Gets the preference with no domain and the given name.
   117    *
   118    * @param name      The preference's name.
   119    * @param context   The private-browsing context, if any.
   120    * @param callback  handleResult is called once unless no such preference
   121    *                  exists, in which case handleResult is not called at all.
   122    */
   123   void getGlobal(in AString name,
   124                  in nsILoadContext context,
   125                  in nsIContentPrefCallback2 callback);
   127   /**
   128    * Synchronously retrieves from the in-memory cache the preference with the
   129    * given domain and name.
   130    *
   131    * In addition to caching preference values, the cache also keeps track of
   132    * preferences that are known not to exist.  If the preference is known not to
   133    * exist, the value attribute of the returned object will be undefined
   134    * (nsIDataType::VTYPE_VOID).
   135    *
   136    * If the preference is neither cached nor known not to exist, then null is
   137    * returned, and get() must be called to determine whether the preference
   138    * exists.
   139    *
   140    * @param domain   The preference's domain.
   141    * @param name     The preference's name.
   142    * @param context  The private-browsing context, if any.
   143    * @return         The preference, or null if no such preference is known to
   144    *                 exist.
   145    */
   146   nsIContentPref getCachedByDomainAndName(in AString domain,
   147                                           in AString name,
   148                                           in nsILoadContext context);
   150   /**
   151    * Synchronously retrieves from the in-memory cache all preferences with the
   152    * given name whose domains are either the same as or subdomains of the given
   153    * domain.
   154    *
   155    * The preferences are returned in an array through the out-parameter.  If a
   156    * preference for a particular subdomain is known not to exist, then an object
   157    * corresponding to that preference will be present in the array, and, as with
   158    * getCachedByDomainAndName, its value attribute will be undefined.
   159    *
   160    * @param domain   The preferences' domain.
   161    * @param name     The preferences' name.
   162    * @param context  The private-browsing context, if any.
   163    * @param len      The length of the returned array.
   164    * @param prefs    The array of preferences.
   165    */
   166   void getCachedBySubdomainAndName(in AString domain,
   167                                    in AString name,
   168                                    in nsILoadContext context,
   169                                    [optional] out unsigned long len,
   170                                    [retval,array,size_is(len)] out nsIContentPref prefs);
   172   /**
   173    * Synchronously retrieves from the in-memory cache the preference with no
   174    * domain and the given name.
   175    *
   176    * As with getCachedByDomainAndName, if the preference is cached then it is
   177    * returned; if the preference is known not to exist, then the value attribute
   178    * of the returned object will be undefined; if the preference is neither
   179    * cached nor known not to exist, then null is returned.
   180    *
   181    * @param name     The preference's name.
   182    * @param context  The private-browsing context, if any.
   183    * @return         The preference, or null if no such preference is known to
   184    *                 exist.
   185    */
   186   nsIContentPref getCachedGlobal(in AString name,
   187                                  in nsILoadContext context);
   189   /**
   190    * Sets a preference.
   191    *
   192    * @param domain    The preference's domain.
   193    * @param name      The preference's name.
   194    * @param value     The preference's value.
   195    * @param context   The private-browsing context, if any.
   196    * @param callback  handleCompletion is called when the preference has been
   197    *                  stored.
   198    */
   199   void set(in AString domain,
   200            in AString name,
   201            in nsIVariant value,
   202            in nsILoadContext context,
   203            [optional] in nsIContentPrefCallback2 callback);
   205   /**
   206    * Sets a preference with no domain.
   207    *
   208    * @param name      The preference's name.
   209    * @param value     The preference's value.
   210    * @param context   The private-browsing context, if any.
   211    * @param callback  handleCompletion is called when the preference has been
   212    *                  stored.
   213    */
   214   void setGlobal(in AString name,
   215                  in nsIVariant value,
   216                  in nsILoadContext context,
   217                  [optional] in nsIContentPrefCallback2 callback);
   219   /**
   220    * Removes the preference with the given domain and name.
   221    *
   222    * @param domain    The preference's domain.
   223    * @param name      The preference's name.
   224    * @param context   The private-browsing context, if any.
   225    * @param callback  handleCompletion is called when the operation completes.
   226    */
   227   void removeByDomainAndName(in AString domain,
   228                              in AString name,
   229                              in nsILoadContext context,
   230                              [optional] in nsIContentPrefCallback2 callback);
   232   /**
   233    * Removes all the preferences with the given name whose domains are either
   234    * the same as or subdomains of the given domain.
   235    *
   236    * @param domain    The preferences' domain.
   237    * @param name      The preferences' name.
   238    * @param context   The private-browsing context, if any.
   239    * @param callback  handleCompletion is called when the operation completes.
   240    */
   241   void removeBySubdomainAndName(in AString domain,
   242                                 in AString name,
   243                                 in nsILoadContext context,
   244                                 [optional] in nsIContentPrefCallback2 callback);
   246   /**
   247    * Removes the preference with no domain and the given name.
   248    *
   249    * @param name      The preference's name.
   250    * @param context   The private-browsing context, if any.
   251    * @param callback  handleCompletion is called when the operation completes.
   252    */
   253   void removeGlobal(in AString name,
   254                     in nsILoadContext context,
   255                     [optional] in nsIContentPrefCallback2 callback);
   257   /**
   258    * Removes all preferences with the given domain.
   259    *
   260    * @param domain    The preferences' domain.
   261    * @param context   The private-browsing context, if any.
   262    * @param callback  handleCompletion is called when the operation completes.
   263    */
   264   void removeByDomain(in AString domain,
   265                       in nsILoadContext context,
   266                       [optional] in nsIContentPrefCallback2 callback);
   268   /**
   269    * Removes all preferences whose domains are either the same as or subdomains
   270    * of the given domain.
   271    *
   272    * @param domain    The preferences' domain.
   273    * @param context   The private-browsing context, if any.
   274    * @param callback  handleCompletion is called when the operation completes.
   275    */
   276   void removeBySubdomain(in AString domain,
   277                          in nsILoadContext context,
   278                          [optional] in nsIContentPrefCallback2 callback);
   280   /**
   281    * Removes all preferences with the given name regardless of domain, including
   282    * global preferences with the given name.
   283    *
   284    * @param name      The preferences' name.
   285    * @param context   The private-browsing context, if any.
   286    * @param callback  handleCompletion is called when the operation completes.
   287    */
   288   void removeByName(in AString name,
   289                     in nsILoadContext context,
   290                     [optional] in nsIContentPrefCallback2 callback);
   292   /**
   293    * Removes all non-global preferences -- in other words, all preferences that
   294    * have a domain.
   295    *
   296    * @param context   The private-browsing context, if any.
   297    * @param callback  handleCompletion is called when the operation completes.
   298    */
   299   void removeAllDomains(in nsILoadContext context,
   300                         [optional] in nsIContentPrefCallback2 callback);
   302   /**
   303    * Removes all global preferences -- in other words, all preferences that have
   304    * no domain.
   305    *
   306    * @param context   The private-browsing context, if any.
   307    * @param callback  handleCompletion is called when the operation completes.
   308    */
   309   void removeAllGlobals(in nsILoadContext context,
   310                         [optional] in nsIContentPrefCallback2 callback);
   312   /**
   313    * Registers an observer that will be notified whenever a preference with the
   314    * given name is set or removed.
   315    *
   316    * When a set or remove method is called, observers are called after the set
   317    * or removal completes and after the method's callback is called, and they
   318    * are called in the same turn of the event loop as the callback.
   319    *
   320    * The service holds a strong reference to the observer, so the observer must
   321    * be removed later to avoid leaking it.
   322    *
   323    * @param name      The name of the preferences to observe.  Pass null to
   324    *                  observe all preference changes regardless of name.
   325    * @param observer  The observer.
   326    */
   327   void addObserverForName(in AString name,
   328                           in nsIContentPrefObserver observer);
   330   /**
   331    * Unregisters an observer for the given name.
   332    *
   333    * @param name      The name for which the observer was registered.  Pass null
   334    *                  if the observer was added with a null name.
   335    * @param observer  The observer.
   336    */
   337   void removeObserverForName(in AString name,
   338                              in nsIContentPrefObserver observer);
   340   /**
   341    * Extracts and returns the domain from the given string representation of a
   342    * URI.  This is how the API extracts domains from URIs passed to it.
   343    *
   344    * @param str  The string representation of a URI, like
   345    *             "http://example.com/foo/bar".
   346    * @return     If the given string is a valid URI, the domain of that URI is
   347    *             returned.  Otherwise, the string itself is returned.
   348    */
   349   AString extractDomain(in AString str);
   350 };
   352 /**
   353  * The callback used by the above methods.
   354  */
   355 [scriptable, uuid(1a12cf41-79e8-4d0f-9899-2f7b27c5d9a1)]
   356 interface nsIContentPrefCallback2 : nsISupports
   357 {
   358   /**
   359    * For the retrieval methods, this is called once for each retrieved
   360    * preference.  It is not called for other methods.
   361    *
   362    * @param pref  The retrieved preference.
   363    */
   364   void handleResult(in nsIContentPref pref);
   366   /**
   367    * Called when an error occurs.  This may be called multiple times before
   368    * handleCompletion is called.
   369    *
   370    * @param error  A number in Components.results describing the error.
   371    */
   372   void handleError(in nsresult error);
   374   /**
   375    * Called when the method finishes.  This will be called exactly once for
   376    * each method invocation, and afterward no other callback methods will be
   377    * called.
   378    *
   379    * @param reason  One of the COMPLETE_* values indicating the manner in which
   380    *                the method completed.
   381    */
   382   void handleCompletion(in unsigned short reason);
   384   const unsigned short COMPLETE_OK = 0;
   385   const unsigned short COMPLETE_ERROR = 1;
   386 };
   388 [scriptable, function, uuid(9f24948d-24b5-4b1b-b554-7dbd58c1d792)]
   389 interface nsIContentPref : nsISupports
   390 {
   391   readonly attribute AString domain;
   392   readonly attribute AString name;
   393   readonly attribute nsIVariant value;
   394 };

mercurial