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.  Do not change or reuse values, because they
     18 // are used to collect statistics on UMA.
     19 enum NextProto {
     20   kProtoUnknown = 0,
     21   kProtoHTTP11 = 1,
     22   kProtoMinimumVersion = kProtoHTTP11,
     23 
     24   kProtoDeprecatedSPDY2 = 100,
     25   kProtoSPDYMinimumVersion = kProtoDeprecatedSPDY2,
     26   kProtoSPDY3 = 101,
     27   kProtoSPDY31 = 102,
     28   kProtoSPDY4 = 103,  // SPDY4 is HTTP/2.
     29   kProtoSPDYMaximumVersion = kProtoSPDY4,
     30 
     31   kProtoQUIC1SPDY3 = 200,
     32 
     33   kProtoMaximumVersion = kProtoQUIC1SPDY3,
     34 };
     35 
     36 // List of protocols to use for NPN, used for configuring HttpNetworkSessions.
     37 typedef std::vector<NextProto> NextProtoVector;
     38 
     39 // Convenience functions to create NextProtoVector.
     40 
     41 NET_EXPORT NextProtoVector NextProtosHttpOnly();
     42 
     43 // Default values, which are subject to change over time.  Currently just
     44 // SPDY 3 and 3.1.
     45 NET_EXPORT NextProtoVector NextProtosDefaults();
     46 
     47 NET_EXPORT NextProtoVector NextProtosWithSpdyAndQuic(bool spdy_enabled,
     48                                                      bool quic_enabled);
     49 
     50 // All of these also enable QUIC.
     51 NET_EXPORT NextProtoVector NextProtosSpdy3();
     52 NET_EXPORT NextProtoVector NextProtosSpdy31();
     53 NET_EXPORT NextProtoVector NextProtosSpdy31WithSpdy2();
     54 NET_EXPORT NextProtoVector NextProtosSpdy4Http2();
     55 
     56 }  // namespace net
     57 
     58 #endif  // NET_SOCKET_NEXT_PROTO_H_
     59