| Index: remoting/signaling/xmpp_signal_strategy_unittest.cc
|
| diff --git a/remoting/signaling/xmpp_signal_strategy_unittest.cc b/remoting/signaling/xmpp_signal_strategy_unittest.cc
|
| index f4a6d0b5160131482d7f606da5c07a5ec39d750a..82a2ed8fa1a901cc576d13edf36b925cc67dcfcf 100644
|
| --- a/remoting/signaling/xmpp_signal_strategy_unittest.cc
|
| +++ b/remoting/signaling/xmpp_signal_strategy_unittest.cc
|
| @@ -16,13 +16,16 @@ namespace remoting {
|
|
|
| namespace {
|
|
|
| -class XmppSocketDataProvider: public net::SocketDataProvider {
|
| +class XmppSocketDataProvider : public net::SocketDataProvider {
|
| public:
|
| net::MockRead OnRead() override {
|
| return net::MockRead(net::ASYNC, net::ERR_IO_PENDING);
|
| }
|
|
|
| net::MockWriteResult OnWrite(const std::string& data) override {
|
| + if (write_error_ != net::OK)
|
| + return net::MockWriteResult(net::SYNCHRONOUS, write_error_);
|
| +
|
| written_data_.append(data);
|
|
|
| if (use_async_write_) {
|
| @@ -52,7 +55,7 @@ class XmppSocketDataProvider: public net::SocketDataProvider {
|
| ReceiveData(std::string());
|
| }
|
|
|
| - void SimulateNetworkError() {
|
| + void SimulateAsyncReadError() {
|
| socket()->OnReadComplete(
|
| net::MockRead(net::ASYNC, net::ERR_CONNECTION_RESET));
|
| }
|
| @@ -67,6 +70,10 @@ class XmppSocketDataProvider: public net::SocketDataProvider {
|
| use_async_write_ = use_async_write;
|
| }
|
|
|
| + void set_write_error(net::Error error) {
|
| + write_error_ = error;
|
| + }
|
| +
|
| void CompletePendingWrite() {
|
| socket()->OnWriteComplete(pending_write_size_);
|
| }
|
| @@ -75,6 +82,7 @@ class XmppSocketDataProvider: public net::SocketDataProvider {
|
| std::string written_data_;
|
| bool use_async_write_ = false;
|
| int pending_write_size_ = 0;
|
| + net::Error write_error_ = net::OK;
|
| };
|
|
|
| class MockClientSocketFactory : public net::MockClientSocketFactory {
|
| @@ -296,11 +304,11 @@ TEST_F(XmppSignalStrategyTest, ConnectionClosed) {
|
| Connect(true);
|
| }
|
|
|
| -TEST_F(XmppSignalStrategyTest, NetworkError) {
|
| +TEST_F(XmppSignalStrategyTest, NetworkReadError) {
|
| CreateSignalStrategy(kDefaultPort);
|
| Connect(true);
|
|
|
| - socket_data_provider_->SimulateNetworkError();
|
| + socket_data_provider_->SimulateAsyncReadError();
|
|
|
| EXPECT_EQ(3U, state_history_.size());
|
| EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]);
|
| @@ -314,6 +322,24 @@ TEST_F(XmppSignalStrategyTest, NetworkError) {
|
| Connect(true);
|
| }
|
|
|
| +TEST_F(XmppSignalStrategyTest, NetworkWriteError) {
|
| + CreateSignalStrategy(kDefaultPort);
|
| + Connect(true);
|
| +
|
| + socket_data_provider_->set_write_error(net::ERR_FAILED);
|
| +
|
| + // Next SendMessage() will call Write() which will fail.
|
| + EXPECT_FALSE(signal_strategy_->SendStanza(make_scoped_ptr(
|
| + new buzz::XmlElement(buzz::QName(std::string(), "hello")))));
|
| +
|
| + EXPECT_EQ(3U, state_history_.size());
|
| + EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]);
|
| + EXPECT_EQ(SignalStrategy::NETWORK_ERROR, signal_strategy_->GetError());
|
| +
|
| + // Try connecting again.
|
| + Connect(true);
|
| +}
|
| +
|
| TEST_F(XmppSignalStrategyTest, StartTlsWithPendingWrite) {
|
| // Use port 5222 so that XmppLoginHandler uses starttls/proceed handshake
|
| // before starting TLS.
|
|
|