| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/websockets/websocket_stream.h" | 5 #include "net/websockets/websocket_stream.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "net/http/http_request_headers.h" | 10 #include "net/http/http_request_headers.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 UMA_HISTOGRAM_ENUMERATION( | 39 UMA_HISTOGRAM_ENUMERATION( |
| 40 "Net.WebSocket.HandshakeResult", result_, NUM_HANDSHAKE_RESULT_TYPES); | 40 "Net.WebSocket.HandshakeResult", result_, NUM_HANDSHAKE_RESULT_TYPES); |
| 41 } | 41 } |
| 42 | 42 |
| 43 // Implementation of URLRequest::Delegate methods. | 43 // Implementation of URLRequest::Delegate methods. |
| 44 virtual void OnResponseStarted(URLRequest* request) OVERRIDE; | 44 virtual void OnResponseStarted(URLRequest* request) OVERRIDE; |
| 45 | 45 |
| 46 virtual void OnAuthRequired(URLRequest* request, | 46 virtual void OnAuthRequired(URLRequest* request, |
| 47 AuthChallengeInfo* auth_info) OVERRIDE; | 47 AuthChallengeInfo* auth_info) OVERRIDE; |
| 48 | 48 |
| 49 virtual void OnCertificateRequested(URLRequest* request, | 49 virtual void OnCertificateRequested( |
| 50 SSLCertRequestInfo* cert_request_info) | 50 URLRequest* request, |
| 51 OVERRIDE; | 51 SSLCertRequestInfo* cert_request_info) OVERRIDE; |
| 52 | 52 |
| 53 virtual void OnSSLCertificateError(URLRequest* request, | 53 virtual void OnSSLCertificateError(URLRequest* request, |
| 54 const SSLInfo& ssl_info, | 54 const SSLInfo& ssl_info, |
| 55 bool fatal) OVERRIDE; | 55 bool fatal) OVERRIDE; |
| 56 | 56 |
| 57 virtual void OnReadCompleted(URLRequest* request, int bytes_read) OVERRIDE; | 57 virtual void OnReadCompleted(URLRequest* request, int bytes_read) OVERRIDE; |
| 58 | 58 |
| 59 private: | 59 private: |
| 60 StreamRequestImpl* owner_; | 60 StreamRequestImpl* owner_; |
| 61 HandshakeResult result_; | 61 HandshakeResult result_; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 89 failure_message = create_helper_->stream()->GetFailureMessage(); | 89 failure_message = create_helper_->stream()->GetFailureMessage(); |
| 90 } else { | 90 } else { |
| 91 switch (url_request_.status().status()) { | 91 switch (url_request_.status().status()) { |
| 92 case URLRequestStatus::SUCCESS: | 92 case URLRequestStatus::SUCCESS: |
| 93 case URLRequestStatus::IO_PENDING: | 93 case URLRequestStatus::IO_PENDING: |
| 94 break; | 94 break; |
| 95 case URLRequestStatus::CANCELED: | 95 case URLRequestStatus::CANCELED: |
| 96 failure_message = "WebSocket opening handshake was canceled"; | 96 failure_message = "WebSocket opening handshake was canceled"; |
| 97 break; | 97 break; |
| 98 case URLRequestStatus::FAILED: | 98 case URLRequestStatus::FAILED: |
| 99 failure_message = | 99 failure_message = std::string("Error in connection establishment: ") + |
| 100 std::string("Error in connection establishment: ") + | 100 ErrorToString(url_request_.status().error()); |
| 101 ErrorToString(url_request_.status().error()); | |
| 102 break; | 101 break; |
| 103 } | 102 } |
| 104 } | 103 } |
| 105 connect_delegate_->OnFailure(failure_message); | 104 connect_delegate_->OnFailure(failure_message); |
| 106 } | 105 } |
| 107 | 106 |
| 108 private: | 107 private: |
| 109 // |delegate_| needs to be declared before |url_request_| so that it gets | 108 // |delegate_| needs to be declared before |url_request_| so that it gets |
| 110 // initialised first. | 109 // initialised first. |
| 111 scoped_ptr<Delegate> delegate_; | 110 scoped_ptr<Delegate> delegate_; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 HttpRequestHeaders headers; | 173 HttpRequestHeaders headers; |
| 175 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); | 174 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); |
| 176 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); | 175 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); |
| 177 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.string()); | 176 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.string()); |
| 178 headers.SetHeader(websockets::kSecWebSocketVersion, | 177 headers.SetHeader(websockets::kSecWebSocketVersion, |
| 179 websockets::kSupportedVersion); | 178 websockets::kSupportedVersion); |
| 180 request->url_request()->SetExtraRequestHeaders(headers); | 179 request->url_request()->SetExtraRequestHeaders(headers); |
| 181 request->url_request()->SetUserData( | 180 request->url_request()->SetUserData( |
| 182 WebSocketHandshakeStreamBase::CreateHelper::DataKey(), | 181 WebSocketHandshakeStreamBase::CreateHelper::DataKey(), |
| 183 create_helper.release()); | 182 create_helper.release()); |
| 184 request->url_request()->SetLoadFlags(LOAD_DISABLE_CACHE | | 183 request->url_request()->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE | |
| 185 LOAD_BYPASS_CACHE | | |
| 186 LOAD_DO_NOT_PROMPT_FOR_LOGIN); | 184 LOAD_DO_NOT_PROMPT_FOR_LOGIN); |
| 187 request->url_request()->Start(); | 185 request->url_request()->Start(); |
| 188 return request.PassAs<WebSocketStreamRequest>(); | 186 return request.PassAs<WebSocketStreamRequest>(); |
| 189 } | 187 } |
| 190 | 188 |
| 191 } // namespace | 189 } // namespace |
| 192 | 190 |
| 193 WebSocketStreamRequest::~WebSocketStreamRequest() {} | 191 WebSocketStreamRequest::~WebSocketStreamRequest() { |
| 192 } |
| 194 | 193 |
| 195 WebSocketStream::WebSocketStream() {} | 194 WebSocketStream::WebSocketStream() { |
| 196 WebSocketStream::~WebSocketStream() {} | 195 } |
| 196 WebSocketStream::~WebSocketStream() { |
| 197 } |
| 197 | 198 |
| 198 WebSocketStream::ConnectDelegate::~ConnectDelegate() {} | 199 WebSocketStream::ConnectDelegate::~ConnectDelegate() { |
| 200 } |
| 199 | 201 |
| 200 scoped_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream( | 202 scoped_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream( |
| 201 const GURL& socket_url, | 203 const GURL& socket_url, |
| 202 const std::vector<std::string>& requested_subprotocols, | 204 const std::vector<std::string>& requested_subprotocols, |
| 203 const url::Origin& origin, | 205 const url::Origin& origin, |
| 204 URLRequestContext* url_request_context, | 206 URLRequestContext* url_request_context, |
| 205 const BoundNetLog& net_log, | 207 const BoundNetLog& net_log, |
| 206 scoped_ptr<ConnectDelegate> connect_delegate) { | 208 scoped_ptr<ConnectDelegate> connect_delegate) { |
| 207 scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper( | 209 scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper( |
| 208 new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(), | 210 new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(), |
| (...skipping 16 matching lines...) Expand all Loading... |
| 225 scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) { | 227 scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) { |
| 226 return CreateAndConnectStreamWithCreateHelper(socket_url, | 228 return CreateAndConnectStreamWithCreateHelper(socket_url, |
| 227 create_helper.Pass(), | 229 create_helper.Pass(), |
| 228 origin, | 230 origin, |
| 229 url_request_context, | 231 url_request_context, |
| 230 net_log, | 232 net_log, |
| 231 connect_delegate.Pass()); | 233 connect_delegate.Pass()); |
| 232 } | 234 } |
| 233 | 235 |
| 234 } // namespace net | 236 } // namespace net |
| OLD | NEW |