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 |