1 // Copyright (c) 2011 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_HTTP_HTTP_NETWORK_LAYER_H_ 6 #define NET_HTTP_HTTP_NETWORK_LAYER_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/memory/ref_counted.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "base/threading/non_thread_safe.h" 14 #include "net/base/net_export.h" 15 #include "net/http/http_transaction_factory.h" 16 17 namespace net { 18 19 class CertVerifier; 20 class ClientSocketFactory; 21 class DnsCertProvenanceChecker; 22 class DnsRRResolver; 23 class HostResolver; 24 class HttpAuthHandlerFactory; 25 class HttpNetworkSession; 26 class NetLog; 27 class NetworkDelegate; 28 class ProxyService; 29 class SpdySessionPool; 30 class SSLConfigService; 31 class SSLHostInfoFactory; 32 33 class NET_EXPORT HttpNetworkLayer : public HttpTransactionFactory, 34 public base::NonThreadSafe { 35 public: 36 // Construct a HttpNetworkLayer with an existing HttpNetworkSession which 37 // contains a valid ProxyService. 38 explicit HttpNetworkLayer(HttpNetworkSession* session); 39 virtual ~HttpNetworkLayer(); 40 41 // Create a transaction factory that instantiate a network layer over an 42 // existing network session. Network session contains some valuable 43 // information (e.g. authentication data) that we want to share across 44 // multiple network layers. This method exposes the implementation details 45 // of a network layer, use this method with an existing network layer only 46 // when network session is shared. 47 static HttpTransactionFactory* CreateFactory(HttpNetworkSession* session); 48 49 // Enable the spdy protocol. 50 // Without calling this function, SPDY is disabled. The mode can be: 51 // "" : (default) SSL and compression are enabled, flow 52 // control disabled. 53 // "no-ssl" : disables SSL. 54 // "no-compress" : disables compression. 55 // "flow-control": enables flow control. 56 // "none" : disables both SSL and compression. 57 static void EnableSpdy(const std::string& mode); 58 59 // HttpTransactionFactory methods: 60 virtual int CreateTransaction(scoped_ptr<HttpTransaction>* trans); 61 virtual HttpCache* GetCache(); 62 virtual HttpNetworkSession* GetSession(); 63 virtual void Suspend(bool suspend); 64 65 private: 66 const scoped_refptr<HttpNetworkSession> session_; 67 bool suspended_; 68 }; 69 70 } // namespace net 71 72 #endif // NET_HTTP_HTTP_NETWORK_LAYER_H_ 73