netwerk/socket/nsISSLSocketControl.idl
author Gaia Pushbot <release+gaiajson@mozilla.com>
Tue, 01 Oct 2013 03:55:23 -0700
changeset 149487 95044a2054536643e3ddcc2f89fe6ea374bea406
parent 148234 2b66295c3d202ba8a0260f6cf3ab744c893d8526
child 157682 288b02c2e5d1cce0d4e8a88ff7c6e394d5322308
permissions -rw-r--r--
Bumping gaia.json for 2 gaia-central revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/e718a6b92432 Author: Amir Nissim <amirnissim@gmail.com> Desc: Merge pull request #12532 from EverythingMe/911022-save-search Bug 911022 - [e.me][feature] Enable search saving ======== https://hg.mozilla.org/integration/gaia-central/rev/e359357987b7 Author: Amir Nissim <amirn@everything.me> Desc: Bug 911022 - [e.me][feature] Enable search saving [r=ranbena]

/* -*- 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 http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIInterfaceRequestor;

%{C++
template<class T> class nsTArray;
class nsCString;
%}
[ref] native nsCStringTArrayRef(nsTArray<nsCString>);

[scriptable, builtinclass, uuid(c5eb9af4-238c-4fc6-bdec-d5ab5e7dce68)]
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. The server determines the
       priority when multiple matches occur, but if there is no overlap
       the first protocol in the list is used. */

    [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 Key Exchange Algorithm and Symmetric Cipher
       is used when determining whether or not to do false start.
       After a handshake is complete it can be read from *Used,
       before a handshake is started it may be set through *Expected.
       The values correspond to the SSLKEAType and SSLCipherAlgorithm
       enums in NSS or the *_UNKNOWN constant defined below.
    */

    [infallible] readonly attribute short KEAUsed;
    [infallible] attribute short KEAExpected;
    [infallible] readonly attribute short SymmetricCipherUsed;
    [infallible] attribute short SymmetricCipherExpected;

    const short KEY_EXCHANGE_UNKNOWN = -1;
    const short SYMMETRIC_CIPHER_UNKNOWN = -1;

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