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 "net/http/http_request_headers.h" | 9 #include "net/http/http_request_headers.h" |
10 #include "net/http/http_status_code.h" | 10 #include "net/http/http_status_code.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 // and so terminates the handshake if it is incomplete. | 63 // and so terminates the handshake if it is incomplete. |
64 virtual ~StreamRequestImpl() {} | 64 virtual ~StreamRequestImpl() {} |
65 | 65 |
66 URLRequest* url_request() { return &url_request_; } | 66 URLRequest* url_request() { return &url_request_; } |
67 | 67 |
68 void PerformUpgrade() { | 68 void PerformUpgrade() { |
69 connect_delegate_->OnSuccess(create_helper_->stream()->Upgrade()); | 69 connect_delegate_->OnSuccess(create_helper_->stream()->Upgrade()); |
70 } | 70 } |
71 | 71 |
72 void ReportFailure() { | 72 void ReportFailure() { |
73 connect_delegate_->OnFailure(kWebSocketErrorAbnormalClosure); | 73 std::string failure_message; |
| 74 if (create_helper_->stream()) { |
| 75 failure_message = create_helper_->stream()->GetFailureMessage(); |
| 76 } else { |
| 77 const URLRequestStatus& status = url_request_.status(); |
| 78 if (status.status() == URLRequestStatus::CANCELED) { |
| 79 failure_message = "WebSocket opening handshake was canceled"; |
| 80 } else if (status.status() == URLRequestStatus::FAILED) { |
| 81 failure_message = |
| 82 std::string("Error in connection establishment: ") + |
| 83 ErrorToString(status.error()); |
| 84 } |
| 85 } |
| 86 connect_delegate_->OnFailure(failure_message); |
74 } | 87 } |
75 | 88 |
76 private: | 89 private: |
77 // |delegate_| needs to be declared before |url_request_| so that it gets | 90 // |delegate_| needs to be declared before |url_request_| so that it gets |
78 // initialised first. | 91 // initialised first. |
79 scoped_ptr<Delegate> delegate_; | 92 scoped_ptr<Delegate> delegate_; |
80 | 93 |
81 // Deleting the StreamRequestImpl object deletes this URLRequest object, | 94 // Deleting the StreamRequestImpl object deletes this URLRequest object, |
82 // cancelling the whole connection. | 95 // cancelling the whole connection. |
83 URLRequest url_request_; | 96 URLRequest url_request_; |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) { | 203 scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate) { |
191 return CreateAndConnectStreamWithCreateHelper(socket_url, | 204 return CreateAndConnectStreamWithCreateHelper(socket_url, |
192 create_helper.Pass(), | 205 create_helper.Pass(), |
193 origin, | 206 origin, |
194 url_request_context, | 207 url_request_context, |
195 net_log, | 208 net_log, |
196 connect_delegate.Pass()); | 209 connect_delegate.Pass()); |
197 } | 210 } |
198 | 211 |
199 } // namespace net | 212 } // namespace net |
OLD | NEW |