/* 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" %{ C++ #include "mozilla/BasePrincipal.h" %} interface nsICancelable; interface nsIEventTarget; interface nsIDNSRecord; interface nsIDNSListener; %{C++ #include "nsTArrayForwardDeclare.h" namespace mozilla { namespace net { struct DNSCacheEntries; } } %} [ptr] native EntriesArray(nsTArray); [ref] native OriginAttributes(const mozilla::OriginAttributes); /** * nsIDNSService */ [scriptable, uuid(de5642c6-61fc-4fcf-9a47-03226b0d4e21)] interface nsIDNSService : nsISupports { /** * kicks off an asynchronous host lookup. * * @param aHostName * the hostname or IP-address-literal to resolve. * @param aFlags * a bitwise OR of the RESOLVE_ prefixed constants defined below. * @param aListener * the listener to be notified when the result is available. * @param aListenerTarget * optional parameter (may be null). if non-null, this parameter * specifies the nsIEventTarget of the thread on which the * listener's onLookupComplete should be called. however, if this * parameter is null, then onLookupComplete will be called on an * unspecified thread (possibly recursively). * @param aOriginAttributes * the originAttribute for this resolving, the DNS cache will be * separated according to this originAttributes. This attribute is * optional to avoid breaking add-ons. * * @return An object that can be used to cancel the host lookup. */ [implicit_jscontext, optional_argc] nsICancelable asyncResolve(in AUTF8String aHostName, in unsigned long aFlags, in nsIDNSListener aListener, in nsIEventTarget aListenerTarget, [optional] in jsval aOriginAttributes); [notxpcom] nsresult asyncResolveNative(in AUTF8String aHostName, in unsigned long aFlags, in nsIDNSListener aListener, in nsIEventTarget aListenerTarget, in OriginAttributes aOriginAttributes, out nsICancelable aResult); /** * Attempts to cancel a previously requested async DNS lookup * * @param aHostName * the hostname or IP-address-literal to resolve. * @param aFlags * a bitwise OR of the RESOLVE_ prefixed constants defined below. * @param aListener * the original listener which was to be notified about the host lookup * result - used to match request information to requestor. * @param aReason * nsresult reason for the cancellation * @param aOriginAttributes * the originAttribute for this resolving. This attribute is optional * to avoid breaking add-ons. * * @return An object that can be used to cancel the host lookup. */ [implicit_jscontext, optional_argc] void cancelAsyncResolve(in AUTF8String aHostName, in unsigned long aFlags, in nsIDNSListener aListener, in nsresult aReason, [optional] in jsval aOriginAttributes); [notxpcom] nsresult cancelAsyncResolveNative(in AUTF8String aHostName, in unsigned long aFlags, in nsIDNSListener aListener, in nsresult aReason, in OriginAttributes aOriginAttributes); /** * called to synchronously resolve a hostname. warning this method may * block the calling thread for a long period of time. it is extremely * unwise to call this function on the UI thread of an application. * * @param aHostName * the hostname or IP-address-literal to resolve. * @param aFlags * a bitwise OR of the RESOLVE_ prefixed constants defined below. * @param aOriginAttributes * the originAttribute for this resolving, the DNS cache will be * separated according to this originAttributes. This attribute is * optional to avoid breaking add-ons. * * @return DNS record corresponding to the given hostname. * @throws NS_ERROR_UNKNOWN_HOST if host could not be resolved. */ [implicit_jscontext, optional_argc] nsIDNSRecord resolve(in AUTF8String aHostName, in unsigned long aFlags, [optional] in jsval aOriginAttributes); [notxpcom] nsresult resolveNative(in AUTF8String aHostName, in unsigned long aFlags, in OriginAttributes aOriginAttributes, out nsIDNSRecord aResult); /** * kicks off an asynchronous host lookup. * * This function is identical to asyncResolve except an additional * parameter aNetwortInterface. If parameter aNetworkInterface is an empty * string function will return the same result as asyncResolve. * Setting aNetworkInterface value make only sense for gonk,because it * an per networking interface query is possible. */ [implicit_jscontext, optional_argc] nsICancelable asyncResolveExtended(in AUTF8String aHostName, in unsigned long aFlags, in AUTF8String aNetworkInterface, in nsIDNSListener aListener, in nsIEventTarget aListenerTarget, [optional] in jsval aOriginAttributes); [notxpcom] nsresult asyncResolveExtendedNative(in AUTF8String aHostName, in unsigned long aFlags, in AUTF8String aNetworkInterface, in nsIDNSListener aListener, in nsIEventTarget aListenerTarget, in OriginAttributes aOriginAttributes, out nsICancelable aResult); /** * Attempts to cancel a previously requested async DNS lookup * This is an extended versin with a additional parameter aNetworkInterface */ [implicit_jscontext, optional_argc] void cancelAsyncResolveExtended(in AUTF8String aHostName, in unsigned long aFlags, in AUTF8String aNetworkInterface, in nsIDNSListener aListener, in nsresult aReason, [optional] in jsval aOriginAttributes); [notxpcom] nsresult cancelAsyncResolveExtendedNative(in AUTF8String aHostName, in unsigned long aFlags, in AUTF8String aNetworkInterface, in nsIDNSListener aListener, in nsresult aReason, in OriginAttributes aOriginAttributes); /** * The method takes a pointer to an nsTArray * and fills it with cache entry data * Called by the networking dashboard */ [noscript] void getDNSCacheEntries(in EntriesArray args); /** * @return the hostname of the operating system. */ readonly attribute AUTF8String myHostName; /************************************************************************* * Listed below are the various flags that may be OR'd together to form * the aFlags parameter passed to asyncResolve() and resolve(). */ /** * if set, this flag suppresses the internal DNS lookup cache. */ const unsigned long RESOLVE_BYPASS_CACHE = (1 << 0); /** * if set, the canonical name of the specified host will be queried. */ const unsigned long RESOLVE_CANONICAL_NAME = (1 << 1); /** * if set, the query is given lower priority. Medium takes precedence * if both are used. */ const unsigned long RESOLVE_PRIORITY_MEDIUM = (1 << 2); const unsigned long RESOLVE_PRIORITY_LOW = (1 << 3); /** * if set, indicates request is speculative. Speculative requests * return errors if prefetching is disabled by configuration. */ const unsigned long RESOLVE_SPECULATE = (1 << 4); /** * If set, only IPv4 addresses will be returned from resolve/asyncResolve. */ const unsigned long RESOLVE_DISABLE_IPV6 = (1 << 5); /** * If set, only literals and cached entries will be returned from resolve/ * asyncResolve. */ const unsigned long RESOLVE_OFFLINE = (1 << 6); /** * If set, only IPv6 addresses will be returned from resolve/asyncResolve. */ const unsigned long RESOLVE_DISABLE_IPV4 = (1 << 7); /** * If set, allow name collision results (127.0.53.53) which are normally filtered. */ const unsigned long RESOLVE_ALLOW_NAME_COLLISION = (1 << 8); };