1 // Copyright 2013 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_PROXY_CONNECT_REDIRECT_HTTP_STREAM_H_ 6 #define NET_HTTP_PROXY_CONNECT_REDIRECT_HTTP_STREAM_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "net/base/load_timing_info.h" 11 #include "net/http/http_stream.h" 12 13 namespace net { 14 15 // A dummy HttpStream with no body used when a redirect is returned 16 // from a proxy. 17 class ProxyConnectRedirectHttpStream : public HttpStream { 18 public: 19 // |load_timing_info| is the info that should be returned by 20 // GetLoadTimingInfo(), or NULL if there is none. Does not take 21 // ownership of |load_timing_info|. 22 explicit ProxyConnectRedirectHttpStream(LoadTimingInfo* load_timing_info); 23 virtual ~ProxyConnectRedirectHttpStream(); 24 25 // All functions below are expected not to be called except for the 26 // marked one. 27 28 virtual int InitializeStream(const HttpRequestInfo* request_info, 29 RequestPriority priority, 30 const BoundNetLog& net_log, 31 const CompletionCallback& callback) OVERRIDE; 32 virtual int SendRequest(const HttpRequestHeaders& request_headers, 33 HttpResponseInfo* response, 34 const CompletionCallback& callback) OVERRIDE; 35 virtual int ReadResponseHeaders(const CompletionCallback& callback) OVERRIDE; 36 virtual int ReadResponseBody(IOBuffer* buf, 37 int buf_len, 38 const CompletionCallback& callback) OVERRIDE; 39 40 // This function may be called. 41 virtual void Close(bool not_reusable) OVERRIDE; 42 43 virtual bool IsResponseBodyComplete() const OVERRIDE; 44 45 // This function may be called. 46 virtual bool CanFindEndOfResponse() const OVERRIDE; 47 48 virtual bool IsConnectionReused() const OVERRIDE; 49 virtual void SetConnectionReused() OVERRIDE; 50 virtual bool IsConnectionReusable() const OVERRIDE; 51 52 virtual int64 GetTotalReceivedBytes() const OVERRIDE; 53 54 // This function may be called. 55 virtual bool GetLoadTimingInfo( 56 LoadTimingInfo* load_timing_info) const OVERRIDE; 57 58 virtual void GetSSLInfo(SSLInfo* ssl_info) OVERRIDE; 59 virtual void GetSSLCertRequestInfo( 60 SSLCertRequestInfo* cert_request_info) OVERRIDE; 61 virtual bool IsSpdyHttpStream() const OVERRIDE; 62 virtual void Drain(HttpNetworkSession* session) OVERRIDE; 63 64 // This function may be called. 65 virtual void SetPriority(RequestPriority priority) OVERRIDE; 66 67 virtual UploadProgress GetUploadProgress() const OVERRIDE; 68 virtual HttpStream* RenewStreamForAuth() OVERRIDE; 69 70 private: 71 bool has_load_timing_info_; 72 LoadTimingInfo load_timing_info_; 73 }; 74 75 } // namespace net 76 77 #endif // NET_HTTP_PROXY_CONNECT_REDIRECT_HTTP_STREAM_H_ 78