author Gregory Szorc <>
Tue, 12 Mar 2013 10:17:46 -0700
changeset 131063 d54481a205e308b645e33d977e40fe753c9e5682
parent 118151 d86aa72c7dbf6ff76bea32db9079de93de53cf8d
child 140335 db76aa0123e9e752607075e0abfd98e6396fd1b3
permissions -rw-r--r--
Bug 818246 - Part 4: Move XPIDLSRCS into (auto); rs=glandium This is the result of running |mach mozbuild-migrate --list XPIDLSRCS SDK_XPIDLSRCS XPIDL_SOURCES| and reverting xpcom/sample/*.

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * 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 */

#include "nsISupports.idl"

interface nsIInterfaceRequestor;

#include "nsTArray.h"
class nsCString;
[ref] native nsCStringTArrayRef(nsTArray<nsCString>);

[scriptable, uuid(bb2bb490-3ba4-4254-b8f5-8b43c7b714ea)]
interface nsISSLSocketControl : nsISupports {
    attribute nsIInterfaceRequestor     notificationCallbacks;

    void proxyStartSSL();
    void StartTLS();

    /* NPN (Next Protocol Negotiation) is a mechanism for
       negotiating the protocol to be spoken inside the SSL
       tunnel during the SSL handshake. The NPNList is the list
       of offered client side protocols. setNPNList() needs to
       be called before any data is read or written (including the
       handshake to be setup correctly. */

    [noscript] void setNPNList(in nsCStringTArrayRef aNPNList);

    /* negotiatedNPN is '' if no NPN list was provided by the client,
     * or if the server did not select any protocol choice from that
     * list. That also includes the case where the server does not
     * implement NPN.
     * If negotiatedNPN is read before NPN has progressed to the point
     * where this information is available NS_ERROR_NOT_CONNECTED is
     * raised.
    readonly attribute ACString negotiatedNPN;

    /* Determine if a potential SSL connection to hostname:port with
     * a desired NPN negotiated protocol of npnProtocol can use the socket
     * associated with this object instead of making a new one.
    boolean joinConnection(
      in ACString npnProtocol, /* e.g. "spdy/2" */
      in ACString hostname,
      in long port);

     * The original flags from the socket provider.
    readonly attribute uint32_t providerFlags;