/usr/share/idl/firefox/nsIPrefBranch2.idl is in firefox-dev 11.0+build1-0ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Alec Flett <alecf@netscape.com>
* Brian Nesse <bnesse@netscape.com>
* Benjamin Smedberg <benjamin@smedbergs.us>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsIPrefBranch.idl"
interface nsIObserver;
/**
* nsIPrefBranch2 allows clients to observe changes to pref values.
*
* @see nsIPrefBranch
*/
[scriptable, uuid(d9bb54df-daac-4ce6-a70c-95d87b770cd8)]
interface nsIPrefBranch2 : nsIPrefBranch
{
/**
* Add a preference change observer. On preference changes, the following
* arguments will be passed to the nsIObserver.observe() method:
* aSubject - The nsIPrefBranch object (this)
* aTopic - The string defined by NS_PREFBRANCH_PREFCHANGE_TOPIC_ID
* aData - The name of the preference which has changed, relative to
* the |root| of the aSubject branch.
*
* aSubject.get*Pref(aData) will get the new value of the modified
* preference. For example, if your observer is registered with
* addObserver("bar.", ...) on a branch with root "foo.", modifying
* the preference "foo.bar.baz" will trigger the observer, and aData
* parameter will be "bar.baz".
*
* @param aDomain The preference on which to listen for changes. This can
* be the name of an entire branch to observe.
* e.g. Holding the "root" prefbranch and calling
* addObserver("foo.bar.", ...) will observe changes to
* foo.bar.baz and foo.bar.bzip
* @param aObserver The object to be notified if the preference changes.
* @param aHoldWeak true Hold a weak reference to |aObserver|. The object
* must implement the nsISupportsWeakReference
* interface or this will fail.
* false Hold a strong reference to |aObserver|.
*
* @note
* Registering as a preference observer can open an object to potential
* cyclical references which will cause memory leaks. These cycles generally
* occur because an object both registers itself as an observer (causing the
* branch to hold a reference to the observer) and holds a reference to the
* branch object for the purpose of getting/setting preference values. There
* are 3 approaches which have been implemented in an attempt to avoid these
* situations.
* 1) The nsPrefBranch object supports nsISupportsWeakReference. Any consumer
* may hold a weak reference to it instead of a strong one.
* 2) The nsPrefBranch object listens for xpcom-shutdown and frees all of the
* objects currently in its observer list. This ensures that long lived
* objects (services for example) will be freed correctly.
* 3) The observer can request to be held as a weak reference when it is
* registered. This insures that shorter lived objects (say one tied to an
* open window) will not fall into the cyclical reference trap.
*
* @note
* The list of registered observers may be changed during the dispatch of
* nsPref:changed notification. However, the observers are not guaranteed
* to be notified in any particular order, so you can't be sure whether the
* added/removed observer will be called during the notification when it
* is added/removed.
*
* @note
* It is possible to change preferences during the notification.
*
* @note
* It is not safe to change observers during this callback in Gecko
* releases before 1.9. If you want a safe way to remove a pref observer,
* please use an nsITimer.
*
* @see nsIObserver
* @see removeObserver
*/
void addObserver(in string aDomain, in nsIObserver aObserver,
in boolean aHoldWeak);
/**
* Remove a preference change observer.
*
* @param aDomain The preference which is being observed for changes.
* @param aObserver An observer previously registered with addObserver().
*
* @note
* Note that you must call removeObserver() on the same nsIPrefBranch2
* instance on which you called addObserver() in order to remove aObserver;
* otherwise, the observer will not be removed.
*
* @see nsIObserver
* @see addObserver
*/
void removeObserver(in string aDomain, in nsIObserver aObserver);
};
%{C++
/**
* Notification sent when a preference changes.
*/
#define NS_PREFBRANCH_PREFCHANGE_TOPIC_ID "nsPref:changed"
%}
|