Index: webkit/tools/test_shell/simple_socket_stream_bridge.cc |
diff --git a/webkit/tools/test_shell/simple_socket_stream_bridge.cc b/webkit/tools/test_shell/simple_socket_stream_bridge.cc |
index 05c9e74d7b811b6038ab28b3085285eea6e3ce31..f4577a231a5e6400121b27c7b149bdc4807f1b90 100644 |
--- a/webkit/tools/test_shell/simple_socket_stream_bridge.cc |
+++ b/webkit/tools/test_shell/simple_socket_stream_bridge.cc |
@@ -48,6 +48,7 @@ class WebSocketStreamHandleBridgeImpl |
virtual void OnReceivedData(net::SocketStream* req, |
const char* data, int len); |
virtual void OnClose(net::SocketStream* req); |
+ virtual void OnError(const net::SocketStream* req, int error_code); |
private: |
virtual ~WebSocketStreamHandleBridgeImpl(); |
@@ -62,6 +63,7 @@ class WebSocketStreamHandleBridgeImpl |
void DoOnSentData(int amount_sent); |
void DoOnReceivedData(std::vector<char>* data); |
void DoOnClose(); |
+ void DoOnError(int error_code); |
int socket_id_; |
MessageLoop* message_loop_; |
@@ -154,6 +156,15 @@ void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) { |
base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnClose, this)); |
} |
+void WebSocketStreamHandleBridgeImpl::OnError( |
+ const net::SocketStream* socket, int error_code) { |
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); |
+ message_loop_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnError, this, |
+ error_code)); |
+} |
+ |
void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) { |
DCHECK(MessageLoop::current() == g_io_thread); |
socket_ = net::SocketStreamJob::CreateSocketStreamJob( |
@@ -217,6 +228,13 @@ void WebSocketStreamHandleBridgeImpl::DoOnClose() { |
Release(); |
} |
+void WebSocketStreamHandleBridgeImpl::DoOnError(int error_code) { |
+ DCHECK(MessageLoop::current() == message_loop_); |
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); |
+ if (delegate_) |
+ delegate_->DidFail(handle_, error_code); |
+} |
+ |
} // namespace |
/* static */ |