Index: net/socket_stream/socket_stream_unittest.cc |
diff --git a/net/socket_stream/socket_stream_unittest.cc b/net/socket_stream/socket_stream_unittest.cc |
index 24a0ff09451ace9f330b6f482850ebe92ce05eff..c15bc5a50de32c14bcdb4ff95f58760431a13b9a 100644 |
--- a/net/socket_stream/socket_stream_unittest.cc |
+++ b/net/socket_stream/socket_stream_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/utf_string_conversions.h" |
#include "net/base/auth.h" |
#include "net/base/mock_host_resolver.h" |
+#include "net/base/net_errors.h" |
#include "net/base/net_log.h" |
#include "net/base/net_log_unittest.h" |
#include "net/base/test_completion_callback.h" |
@@ -21,7 +22,7 @@ |
struct SocketStreamEvent { |
enum EventType { |
EVENT_CONNECTED, EVENT_SENT_DATA, EVENT_RECEIVED_DATA, EVENT_CLOSE, |
- EVENT_AUTH_REQUIRED, |
+ EVENT_AUTH_REQUIRED, EVENT_ERROR, |
}; |
SocketStreamEvent(EventType type, net::SocketStream* socket_stream, |
@@ -45,6 +46,7 @@ class SocketStreamEventRecorder : public net::SocketStream::Delegate { |
on_received_data_(NULL), |
on_close_(NULL), |
on_auth_required_(NULL), |
+ on_error_(NULL), |
callback_(callback) {} |
virtual ~SocketStreamEventRecorder() { |
delete on_connected_; |
@@ -52,6 +54,7 @@ class SocketStreamEventRecorder : public net::SocketStream::Delegate { |
delete on_received_data_; |
delete on_close_; |
delete on_auth_required_; |
+ delete on_error_; |
} |
void SetOnConnected(Callback1<SocketStreamEvent*>::Type* callback) { |
@@ -69,6 +72,9 @@ class SocketStreamEventRecorder : public net::SocketStream::Delegate { |
void SetOnAuthRequired(Callback1<SocketStreamEvent*>::Type* callback) { |
on_auth_required_ = callback; |
} |
+ void SetOnError(Callback1<SocketStreamEvent*>::Type* callback) { |
+ on_error_ = callback; |
+ } |
virtual void OnConnected(net::SocketStream* socket, |
int num_pending_send_allowed) { |
@@ -112,6 +118,16 @@ class SocketStreamEventRecorder : public net::SocketStream::Delegate { |
if (on_auth_required_) |
on_auth_required_->Run(&events_.back()); |
} |
+ virtual void OnError(const net::SocketStream* const_socket, int error) { |
+ // TODO(yutak): Need to figure out a way to create SocketStreamEvent |
ukai
2011/05/10 08:10:39
can't we const net::SocketStream* socket in Socket
Yuta Kitamura
2011/05/10 09:01:22
No, because there are several uses of non-const me
ukai
2011/05/10 10:00:29
Hmm. then I think SocketStreamEvent should have ne
|
+ // with |const net::SocketStream*|. |
+ net::SocketStream* socket = const_cast<net::SocketStream*>(const_socket); |
+ events_.push_back( |
+ SocketStreamEvent(SocketStreamEvent::EVENT_ERROR, |
+ socket, error, std::string(), NULL)); |
+ if (on_error_) |
+ on_error_->Run(&events_.back()); |
+ } |
void DoClose(SocketStreamEvent* event) { |
event->socket->Close(); |
@@ -138,6 +154,7 @@ class SocketStreamEventRecorder : public net::SocketStream::Delegate { |
Callback1<SocketStreamEvent*>::Type* on_received_data_; |
Callback1<SocketStreamEvent*>::Type* on_close_; |
Callback1<SocketStreamEvent*>::Type* on_auth_required_; |
+ Callback1<SocketStreamEvent*>::Type* on_error_; |
net::CompletionCallback* callback_; |
string16 username_; |
@@ -275,14 +292,16 @@ TEST_F(SocketStreamTest, CloseFlushPendingWrite) { |
callback.WaitForResult(); |
const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); |
- EXPECT_EQ(6U, events.size()); |
+ EXPECT_EQ(7U, events.size()); |
EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[0].event_type); |
EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[1].event_type); |
EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[2].event_type); |
EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[3].event_type); |
EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[4].event_type); |
- EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[5].event_type); |
+ EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[5].event_type); |
+ EXPECT_EQ(ERR_CONNECTION_CLOSED, events[5].number); |
+ EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[6].event_type); |
} |
TEST_F(SocketStreamTest, BasicAuthProxy) { |
@@ -344,11 +363,13 @@ TEST_F(SocketStreamTest, BasicAuthProxy) { |
callback.WaitForResult(); |
const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); |
- EXPECT_EQ(3U, events.size()); |
+ EXPECT_EQ(4U, events.size()); |
EXPECT_EQ(SocketStreamEvent::EVENT_AUTH_REQUIRED, events[0].event_type); |
EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); |
- EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[2].event_type); |
+ EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); |
+ EXPECT_EQ(ERR_ABORTED, events[2].number); |
+ EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); |
// TODO(eroman): Add back NetLogTest here... |
} |