Linux Mac OSX Windows
 An instance of |nsIWeakReference| is a proxy object that cooperates with
 its referent to give clients a non-owning, non-dangling reference.  Clients
 own the proxy, and should generally manage it with an |nsCOMPtr| (see the
 type |nsWeakPtr| for a |typedef| name that stands out) as they would any
 other XPCOM object.  The |QueryReferent| member function provides a
 (hopefully short-lived) owning reference on demand, through which clients
 can get useful access to the referent, while it still exists.

 @status FROZEN
 @version 1.0
 @see nsISupportsWeakReference
 @see nsWeakReference
 @see nsWeakPtr
[scriptable, uuid(9188bc85-f92e-11d2-81ef-0060083a0bcf)]
interface nsIWeakReference : nsISupports

Methods

 |QueryReferent| queries the referent, if it exists, and like |QueryInterface|, produces
 an owning reference to the desired interface.  It is designed to look and act exactly
 like (a proxied) |QueryInterface|.  Don't hold on to the produced interface permanently;
 that would defeat the purpose of using a non-owning |nsIWeakReference| in the first place.
void QueryReferent(in nsIIDRef uuid, [iid_is(uuid), retval] out nsQIResult result)