Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Unified Diff: webkit/tools/test_shell/simple_socket_stream_bridge.cc

Issue 10458057: Websocket should fire 'error' event if no server available (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 */
« webkit/glue/websocketstreamhandle_impl.cc ('K') | « webkit/glue/websocketstreamhandle_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698