Home | History | Annotate | Download | only in socket
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_SOCKET_NEXT_PROTO_H_
      6 #define NET_SOCKET_NEXT_PROTO_H_
      7 
      8 #include <vector>
      9 
     10 #include "net/base/net_export.h"
     11 
     12 namespace net {
     13 
     14 // Next Protocol Negotiation (NPN), if successful, results in agreement on an
     15 // application-level string that specifies the application level protocol to
     16 // use over the TLS connection. NextProto enumerates the application level
     17 // protocols that we recognise.
     18 enum NextProto {
     19   kProtoUnknown = 0,
     20   kProtoHTTP11,
     21   kProtoMinimumVersion = kProtoHTTP11,
     22 
     23   kProtoDeprecatedSPDY2,
     24   kProtoSPDYMinimumVersion = kProtoDeprecatedSPDY2,
     25   kProtoSPDY3,
     26   kProtoSPDY31,
     27   kProtoSPDY4,  // SPDY4 is HTTP/2.
     28   kProtoSPDYMaximumVersion = kProtoSPDY4,
     29 
     30   kProtoQUIC1SPDY3,
     31 
     32   kProtoMaximumVersion = kProtoQUIC1SPDY3,
     33 };
     34 
     35 // List of protocols to use for NPN, used for configuring HttpNetworkSessions.
     36 typedef std::vector<NextProto> NextProtoVector;
     37 
     38 // Convenience functions to create NextProtoVector.
     39 
     40 NET_EXPORT NextProtoVector NextProtosHttpOnly();
     41 
     42 // Default values, which are subject to change over time.  Currently just
     43 // SPDY 3 and 3.1.
     44 NET_EXPORT NextProtoVector NextProtosDefaults();
     45 
     46 NET_EXPORT NextProtoVector NextProtosWithSpdyAndQuic(bool spdy_enabled,
     47                                                      bool quic_enabled);
     48 
     49 // All of these also enable QUIC.
     50 NET_EXPORT NextProtoVector NextProtosSpdy3();
     51 NET_EXPORT NextProtoVector NextProtosSpdy31();
     52 NET_EXPORT NextProtoVector NextProtosSpdy31WithSpdy2();
     53 NET_EXPORT NextProtoVector NextProtosSpdy4Http2();
     54 
     55 }  // namespace net
     56 
     57 #endif  // NET_SOCKET_NEXT_PROTO_H_
     58