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

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

Issue 10668018: Websocket should fire 'error' event if no server available (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: did some rebased work Created 7 years, 8 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 b28e1e16b5cac01dc4348d1055e73dc1c4686290..6dbe0d5c23a38b49334a96de60bf68b9779ab3ab 100644
--- a/webkit/tools/test_shell/simple_socket_stream_bridge.cc
+++ b/webkit/tools/test_shell/simple_socket_stream_bridge.cc
@@ -10,6 +10,7 @@
#include "base/bind.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
+#include "base/utf_string_conversions.h"
#include "googleurl/src/gurl.h"
#include "net/socket_stream/socket_stream_job.h"
#include "net/websockets/websocket_job.h"
@@ -48,6 +49,7 @@ class WebSocketStreamHandleBridgeImpl
virtual void OnReceivedData(net::SocketStream* req,
const char* data, int len) OVERRIDE;
virtual void OnClose(net::SocketStream* req) OVERRIDE;
+ virtual void OnError(const net::SocketStream* req, int error_code) OVERRIDE;
private:
virtual ~WebSocketStreamHandleBridgeImpl();
@@ -62,6 +64,7 @@ class WebSocketStreamHandleBridgeImpl
void DoOnSentData(int amount_sent);
void DoOnReceivedData(std::vector<char>* data);
void DoOnClose();
+ void DoOnError(int error_code, const char* error_msg);
int socket_id_;
MessageLoop* message_loop_;
@@ -154,6 +157,16 @@ void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) {
base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnClose, this));
}
+void WebSocketStreamHandleBridgeImpl::OnError(
+ const net::SocketStream* socket,
+ int error_code) {
tyoshino (SeeGerritForStatus) 2013/04/15 14:23:28 (optional) L161 and 162 can fit in one line
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
+ message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnError, this,
+ error_code, net::ErrorToString(error_code)));
+}
+
void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) {
DCHECK(MessageLoop::current() == g_io_thread);
socket_ = net::SocketStreamJob::CreateSocketStreamJob(
@@ -217,6 +230,15 @@ void WebSocketStreamHandleBridgeImpl::DoOnClose() {
Release();
}
+void WebSocketStreamHandleBridgeImpl::DoOnError(
+ int error_code,
+ const char* error_msg) {
tyoshino (SeeGerritForStatus) 2013/04/15 14:23:28 optional) L234 and 235 can fit in one line
+ DCHECK(MessageLoop::current() == message_loop_);
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
+ if (delegate_)
+ delegate_->DidFail(handle_, error_code, ASCIIToUTF16(error_msg));
+}
+
} // 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