Index: net/websockets/websocket_stream.cc |
diff --git a/net/websockets/websocket_stream.cc b/net/websockets/websocket_stream.cc |
index 62ce35bb3e78921c6dab3f291fef3d3a7786cd92..9ec6f5c9344674b46ec0f87cbaa5d350465d6960 100644 |
--- a/net/websockets/websocket_stream.cc |
+++ b/net/websockets/websocket_stream.cc |
@@ -61,7 +61,7 @@ class Delegate : public URLRequest::Delegate { |
const RedirectInfo& redirect_info, |
bool* defer_redirect) override; |
- void OnResponseStarted(URLRequest* request) override; |
+ void OnResponseStarted(URLRequest* request, int net_error) override; |
void OnAuthRequired(URLRequest* request, |
AuthChallengeInfo* auth_info) override; |
@@ -153,9 +153,8 @@ class WebSocketStreamRequestImpl : public WebSocketStreamRequest { |
connect_delegate_->OnSuccess(handshake_stream->Upgrade()); |
} |
- std::string FailureMessageFromNetError() { |
- int error = url_request_->status().error(); |
- if (error == ERR_TUNNEL_CONNECTION_FAILED) { |
+ std::string FailureMessageFromNetError(int net_error) { |
+ if (net_error == ERR_TUNNEL_CONNECTION_FAILED) { |
// This error is common and confusing, so special-case it. |
// TODO(ricea): Include the HostPortPair of the selected proxy server in |
// the error message. This is not currently possible because it isn't set |
@@ -163,26 +162,26 @@ class WebSocketStreamRequestImpl : public WebSocketStreamRequest { |
return "Establishing a tunnel via proxy server failed."; |
} else { |
return std::string("Error in connection establishment: ") + |
- ErrorToString(url_request_->status().error()); |
+ ErrorToString(net_error); |
} |
} |
- void ReportFailure() { |
+ void ReportFailure(int net_error) { |
DCHECK(timer_); |
timer_->Stop(); |
if (failure_message_.empty()) { |
- switch (url_request_->status().status()) { |
- case URLRequestStatus::SUCCESS: |
- case URLRequestStatus::IO_PENDING: |
+ switch (net_error) { |
+ case OK: |
+ case ERR_IO_PENDING: |
break; |
- case URLRequestStatus::CANCELED: |
- if (url_request_->status().error() == ERR_TIMED_OUT) |
- failure_message_ = "WebSocket opening handshake timed out"; |
- else |
- failure_message_ = "WebSocket opening handshake was canceled"; |
+ case ERR_ABORTED: |
+ failure_message_ = "WebSocket opening handshake was canceled"; |
break; |
- case URLRequestStatus::FAILED: |
- failure_message_ = FailureMessageFromNetError(); |
+ case ERR_TIMED_OUT: |
+ failure_message_ = "WebSocket opening handshake timed out"; |
+ break; |
+ default: |
+ failure_message_ = FailureMessageFromNetError(net_error); |
break; |
} |
} |
@@ -282,14 +281,14 @@ void Delegate::OnReceivedRedirect(URLRequest* request, |
} |
} |
-void Delegate::OnResponseStarted(URLRequest* request) { |
+void Delegate::OnResponseStarted(URLRequest* request, int net_error) { |
+ DCHECK_NE(ERR_IO_PENDING, net_error); |
// All error codes, including OK and ABORTED, as with |
// Net.ErrorCodesForMainFrame3 |
- UMA_HISTOGRAM_SPARSE_SLOWLY("Net.WebSocket.ErrorCodes", |
- -request->status().error()); |
- if (!request->status().is_success()) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Net.WebSocket.ErrorCodes", -net_error); |
+ if (net_error != OK) { |
DVLOG(3) << "OnResponseStarted (request failed)"; |
- owner_->ReportFailure(); |
+ owner_->ReportFailure(net_error); |
return; |
} |
const int response_code = request->GetResponseCode(); |
@@ -315,7 +314,7 @@ void Delegate::OnResponseStarted(URLRequest* request) { |
default: |
result_ = FAILED; |
- owner_->ReportFailure(); |
+ owner_->ReportFailure(net_error); |
} |
} |