123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* 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 nsIProxyInfo;
- [ptr] native PRFileDescStar(struct PRFileDesc);
- native NeckoOriginAttributes(mozilla::NeckoOriginAttributes);
- [ref] native const_OriginAttributesRef(const mozilla::NeckoOriginAttributes);
- %{ C++
- #include "mozilla/BasePrincipal.h"
- %}
- /**
- * nsISocketProvider
- */
- [scriptable, uuid(508d5469-9e1e-4a08-b5b0-7cfebba1e51a)]
- interface nsISocketProvider : nsISupports
- {
- /**
- * newSocket
- *
- * @param aFamily
- * The address family for this socket (PR_AF_INET or PR_AF_INET6).
- * @param aHost
- * The origin hostname for this connection.
- * @param aPort
- * The origin port for this connection.
- * @param aProxyHost
- * If non-null, the proxy hostname for this connection.
- * @param aProxyPort
- * The proxy port for this connection.
- * @param aFlags
- * Control flags that govern this connection (see below.)
- * @param aFileDesc
- * The resulting PRFileDesc.
- * @param aSecurityInfo
- * Any security info that should be associated with aFileDesc. This
- * object typically implements nsITransportSecurityInfo.
- */
- [noscript]
- void newSocket(in long aFamily,
- in string aHost,
- in long aPort,
- in nsIProxyInfo aProxy,
- in const_OriginAttributesRef aOriginAttributes,
- in unsigned long aFlags,
- out PRFileDescStar aFileDesc,
- out nsISupports aSecurityInfo);
- /**
- * addToSocket
- *
- * This function is called to allow the socket provider to layer a
- * PRFileDesc on top of another PRFileDesc. For example, SSL via a SOCKS
- * proxy.
- *
- * Parameters are the same as newSocket with the exception of aFileDesc,
- * which is an in-param instead.
- */
- [noscript]
- void addToSocket(in long aFamily,
- in string aHost,
- in long aPort,
- in nsIProxyInfo aProxy,
- in const_OriginAttributesRef aOriginAttributes,
- in unsigned long aFlags,
- in PRFileDescStar aFileDesc,
- out nsISupports aSecurityInfo);
- /**
- * PROXY_RESOLVES_HOST
- *
- * This flag is set if the proxy is to perform hostname resolution instead
- * of the client. When set, the hostname parameter passed when in this
- * interface will be used instead of the address structure passed for a
- * later connect et al. request.
- */
- const long PROXY_RESOLVES_HOST = 1 << 0;
-
- /**
- * When setting this flag, the socket will not apply any
- * credentials when establishing a connection. For example,
- * an SSL connection would not send any client-certificates
- * if this flag is set.
- */
- const long ANONYMOUS_CONNECT = 1 << 1;
- /**
- * If set, indicates that the connection was initiated from a source
- * defined as being private in the sense of Private Browsing. Generally,
- * there should be no state shared between connections that are private
- * and those that are not; it is OK for multiple private connections
- * to share state with each other, and it is OK for multiple non-private
- * connections to share state with each other.
- */
- const unsigned long NO_PERMANENT_STORAGE = 1 << 2;
- /**
- * This flag is an explicit opt-in that allows a normally secure socket
- * provider to use, at its discretion, an insecure algorithm. e.g.
- * a TLS socket without authentication.
- */
- const unsigned long MITM_OK = 1 << 3;
- /**
- * If set, do not use newer protocol features that might have interop problems
- * on the Internet. Intended only for use with critical infra like the updater.
- * default is false.
- */
- const unsigned long BE_CONSERVATIVE = 1 << 4;
- };
- %{C++
- /**
- * nsISocketProvider implementations should be registered with XPCOM under a
- * contract ID of the form: "@mozilla.org/network/socket;2?type=foo"
- */
- #define NS_NETWORK_SOCKET_CONTRACTID_PREFIX \
- "@mozilla.org/network/socket;2?type="
- %}
|