| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/socket/transport_client_socket_pool_test_util.h" | 5 #include "net/socket/transport_client_socket_pool_test_util.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 CHECK(ParseIPLiteralToNumber(ip, &number)); | 27 CHECK(ParseIPLiteralToNumber(ip, &number)); |
| 28 return number; | 28 return number; |
| 29 } | 29 } |
| 30 | 30 |
| 31 // A StreamSocket which connects synchronously and successfully. | 31 // A StreamSocket which connects synchronously and successfully. |
| 32 class MockConnectClientSocket : public StreamSocket { | 32 class MockConnectClientSocket : public StreamSocket { |
| 33 public: | 33 public: |
| 34 MockConnectClientSocket(const AddressList& addrlist, net::NetLog* net_log) | 34 MockConnectClientSocket(const AddressList& addrlist, net::NetLog* net_log) |
| 35 : connected_(false), | 35 : connected_(false), |
| 36 addrlist_(addrlist), | 36 addrlist_(addrlist), |
| 37 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)) {} | 37 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)), |
| 38 use_tcp_fastopen_(false) {} |
| 38 | 39 |
| 39 // StreamSocket implementation. | 40 // StreamSocket implementation. |
| 40 virtual int Connect(const CompletionCallback& callback) OVERRIDE { | 41 virtual int Connect(const CompletionCallback& callback) OVERRIDE { |
| 41 connected_ = true; | 42 connected_ = true; |
| 42 return OK; | 43 return OK; |
| 43 } | 44 } |
| 44 virtual void Disconnect() OVERRIDE { connected_ = false; } | 45 virtual void Disconnect() OVERRIDE { connected_ = false; } |
| 45 virtual bool IsConnected() const OVERRIDE { return connected_; } | 46 virtual bool IsConnected() const OVERRIDE { return connected_; } |
| 46 virtual bool IsConnectedAndIdle() const OVERRIDE { return connected_; } | 47 virtual bool IsConnectedAndIdle() const OVERRIDE { return connected_; } |
| 47 | 48 |
| 48 virtual int GetPeerAddress(IPEndPoint* address) const OVERRIDE { | 49 virtual int GetPeerAddress(IPEndPoint* address) const OVERRIDE { |
| 49 *address = addrlist_.front(); | 50 *address = addrlist_.front(); |
| 50 return OK; | 51 return OK; |
| 51 } | 52 } |
| 52 virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE { | 53 virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE { |
| 53 if (!connected_) | 54 if (!connected_) |
| 54 return ERR_SOCKET_NOT_CONNECTED; | 55 return ERR_SOCKET_NOT_CONNECTED; |
| 55 if (addrlist_.front().GetFamily() == ADDRESS_FAMILY_IPV4) | 56 if (addrlist_.front().GetFamily() == ADDRESS_FAMILY_IPV4) |
| 56 SetIPv4Address(address); | 57 SetIPv4Address(address); |
| 57 else | 58 else |
| 58 SetIPv6Address(address); | 59 SetIPv6Address(address); |
| 59 return OK; | 60 return OK; |
| 60 } | 61 } |
| 61 virtual const BoundNetLog& NetLog() const OVERRIDE { return net_log_; } | 62 virtual const BoundNetLog& NetLog() const OVERRIDE { return net_log_; } |
| 62 | 63 |
| 63 virtual void SetSubresourceSpeculation() OVERRIDE {} | 64 virtual void SetSubresourceSpeculation() OVERRIDE {} |
| 64 virtual void SetOmniboxSpeculation() OVERRIDE {} | 65 virtual void SetOmniboxSpeculation() OVERRIDE {} |
| 65 virtual bool WasEverUsed() const OVERRIDE { return false; } | 66 virtual bool WasEverUsed() const OVERRIDE { return false; } |
| 66 virtual bool UsingTCPFastOpen() const OVERRIDE { return false; } | 67 virtual void EnableTCPFastOpen() OVERRIDE { use_tcp_fastopen_ = true; } |
| 68 virtual bool UsingTCPFastOpen() const OVERRIDE { return use_tcp_fastopen_; } |
| 67 virtual bool WasNpnNegotiated() const OVERRIDE { return false; } | 69 virtual bool WasNpnNegotiated() const OVERRIDE { return false; } |
| 68 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { | 70 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { |
| 69 return kProtoUnknown; | 71 return kProtoUnknown; |
| 70 } | 72 } |
| 71 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { return false; } | 73 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { return false; } |
| 72 | 74 |
| 73 // Socket implementation. | 75 // Socket implementation. |
| 74 virtual int Read(IOBuffer* buf, | 76 virtual int Read(IOBuffer* buf, |
| 75 int buf_len, | 77 int buf_len, |
| 76 const CompletionCallback& callback) OVERRIDE { | 78 const CompletionCallback& callback) OVERRIDE { |
| 77 return ERR_FAILED; | 79 return ERR_FAILED; |
| 78 } | 80 } |
| 79 virtual int Write(IOBuffer* buf, | 81 virtual int Write(IOBuffer* buf, |
| 80 int buf_len, | 82 int buf_len, |
| 81 const CompletionCallback& callback) OVERRIDE { | 83 const CompletionCallback& callback) OVERRIDE { |
| 82 return ERR_FAILED; | 84 return ERR_FAILED; |
| 83 } | 85 } |
| 84 virtual int SetReceiveBufferSize(int32 size) OVERRIDE { return OK; } | 86 virtual int SetReceiveBufferSize(int32 size) OVERRIDE { return OK; } |
| 85 virtual int SetSendBufferSize(int32 size) OVERRIDE { return OK; } | 87 virtual int SetSendBufferSize(int32 size) OVERRIDE { return OK; } |
| 86 | 88 |
| 87 private: | 89 private: |
| 88 bool connected_; | 90 bool connected_; |
| 89 const AddressList addrlist_; | 91 const AddressList addrlist_; |
| 90 BoundNetLog net_log_; | 92 BoundNetLog net_log_; |
| 93 bool use_tcp_fastopen_; |
| 91 | 94 |
| 92 DISALLOW_COPY_AND_ASSIGN(MockConnectClientSocket); | 95 DISALLOW_COPY_AND_ASSIGN(MockConnectClientSocket); |
| 93 }; | 96 }; |
| 94 | 97 |
| 95 class MockFailingClientSocket : public StreamSocket { | 98 class MockFailingClientSocket : public StreamSocket { |
| 96 public: | 99 public: |
| 97 MockFailingClientSocket(const AddressList& addrlist, net::NetLog* net_log) | 100 MockFailingClientSocket(const AddressList& addrlist, net::NetLog* net_log) |
| 98 : addrlist_(addrlist), | 101 : addrlist_(addrlist), |
| 99 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)) {} | 102 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)), |
| 103 use_tcp_fastopen_(false) {} |
| 100 | 104 |
| 101 // StreamSocket implementation. | 105 // StreamSocket implementation. |
| 102 virtual int Connect(const CompletionCallback& callback) OVERRIDE { | 106 virtual int Connect(const CompletionCallback& callback) OVERRIDE { |
| 103 return ERR_CONNECTION_FAILED; | 107 return ERR_CONNECTION_FAILED; |
| 104 } | 108 } |
| 105 | 109 |
| 106 virtual void Disconnect() OVERRIDE {} | 110 virtual void Disconnect() OVERRIDE {} |
| 107 | 111 |
| 108 virtual bool IsConnected() const OVERRIDE { return false; } | 112 virtual bool IsConnected() const OVERRIDE { return false; } |
| 109 virtual bool IsConnectedAndIdle() const OVERRIDE { return false; } | 113 virtual bool IsConnectedAndIdle() const OVERRIDE { return false; } |
| 110 virtual int GetPeerAddress(IPEndPoint* address) const OVERRIDE { | 114 virtual int GetPeerAddress(IPEndPoint* address) const OVERRIDE { |
| 111 return ERR_UNEXPECTED; | 115 return ERR_UNEXPECTED; |
| 112 } | 116 } |
| 113 virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE { | 117 virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE { |
| 114 return ERR_UNEXPECTED; | 118 return ERR_UNEXPECTED; |
| 115 } | 119 } |
| 116 virtual const BoundNetLog& NetLog() const OVERRIDE { return net_log_; } | 120 virtual const BoundNetLog& NetLog() const OVERRIDE { return net_log_; } |
| 117 | 121 |
| 118 virtual void SetSubresourceSpeculation() OVERRIDE {} | 122 virtual void SetSubresourceSpeculation() OVERRIDE {} |
| 119 virtual void SetOmniboxSpeculation() OVERRIDE {} | 123 virtual void SetOmniboxSpeculation() OVERRIDE {} |
| 120 virtual bool WasEverUsed() const OVERRIDE { return false; } | 124 virtual bool WasEverUsed() const OVERRIDE { return false; } |
| 121 virtual bool UsingTCPFastOpen() const OVERRIDE { return false; } | 125 virtual void EnableTCPFastOpen() OVERRIDE { use_tcp_fastopen_ = true; } |
| 126 virtual bool UsingTCPFastOpen() const OVERRIDE { return use_tcp_fastopen_; } |
| 122 virtual bool WasNpnNegotiated() const OVERRIDE { return false; } | 127 virtual bool WasNpnNegotiated() const OVERRIDE { return false; } |
| 123 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { | 128 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { |
| 124 return kProtoUnknown; | 129 return kProtoUnknown; |
| 125 } | 130 } |
| 126 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { return false; } | 131 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { return false; } |
| 127 | 132 |
| 128 // Socket implementation. | 133 // Socket implementation. |
| 129 virtual int Read(IOBuffer* buf, | 134 virtual int Read(IOBuffer* buf, |
| 130 int buf_len, | 135 int buf_len, |
| 131 const CompletionCallback& callback) OVERRIDE { | 136 const CompletionCallback& callback) OVERRIDE { |
| 132 return ERR_FAILED; | 137 return ERR_FAILED; |
| 133 } | 138 } |
| 134 | 139 |
| 135 virtual int Write(IOBuffer* buf, | 140 virtual int Write(IOBuffer* buf, |
| 136 int buf_len, | 141 int buf_len, |
| 137 const CompletionCallback& callback) OVERRIDE { | 142 const CompletionCallback& callback) OVERRIDE { |
| 138 return ERR_FAILED; | 143 return ERR_FAILED; |
| 139 } | 144 } |
| 140 virtual int SetReceiveBufferSize(int32 size) OVERRIDE { return OK; } | 145 virtual int SetReceiveBufferSize(int32 size) OVERRIDE { return OK; } |
| 141 virtual int SetSendBufferSize(int32 size) OVERRIDE { return OK; } | 146 virtual int SetSendBufferSize(int32 size) OVERRIDE { return OK; } |
| 142 | 147 |
| 143 private: | 148 private: |
| 144 const AddressList addrlist_; | 149 const AddressList addrlist_; |
| 145 BoundNetLog net_log_; | 150 BoundNetLog net_log_; |
| 151 bool use_tcp_fastopen_; |
| 146 | 152 |
| 147 DISALLOW_COPY_AND_ASSIGN(MockFailingClientSocket); | 153 DISALLOW_COPY_AND_ASSIGN(MockFailingClientSocket); |
| 148 }; | 154 }; |
| 149 | 155 |
| 150 class MockTriggerableClientSocket : public StreamSocket { | 156 class MockTriggerableClientSocket : public StreamSocket { |
| 151 public: | 157 public: |
| 152 // |should_connect| indicates whether the socket should successfully complete | 158 // |should_connect| indicates whether the socket should successfully complete |
| 153 // or fail. | 159 // or fail. |
| 154 MockTriggerableClientSocket(const AddressList& addrlist, | 160 MockTriggerableClientSocket(const AddressList& addrlist, |
| 155 bool should_connect, | 161 bool should_connect, |
| 156 net::NetLog* net_log) | 162 net::NetLog* net_log) |
| 157 : should_connect_(should_connect), | 163 : should_connect_(should_connect), |
| 158 is_connected_(false), | 164 is_connected_(false), |
| 159 addrlist_(addrlist), | 165 addrlist_(addrlist), |
| 160 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)), | 166 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)), |
| 167 use_tcp_fastopen_(false), |
| 161 weak_factory_(this) {} | 168 weak_factory_(this) {} |
| 162 | 169 |
| 163 // Call this method to get a closure which will trigger the connect callback | 170 // Call this method to get a closure which will trigger the connect callback |
| 164 // when called. The closure can be called even after the socket is deleted; it | 171 // when called. The closure can be called even after the socket is deleted; it |
| 165 // will safely do nothing. | 172 // will safely do nothing. |
| 166 base::Closure GetConnectCallback() { | 173 base::Closure GetConnectCallback() { |
| 167 return base::Bind(&MockTriggerableClientSocket::DoCallback, | 174 return base::Bind(&MockTriggerableClientSocket::DoCallback, |
| 168 weak_factory_.GetWeakPtr()); | 175 weak_factory_.GetWeakPtr()); |
| 169 } | 176 } |
| 170 | 177 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 SetIPv4Address(address); | 228 SetIPv4Address(address); |
| 222 else | 229 else |
| 223 SetIPv6Address(address); | 230 SetIPv6Address(address); |
| 224 return OK; | 231 return OK; |
| 225 } | 232 } |
| 226 virtual const BoundNetLog& NetLog() const OVERRIDE { return net_log_; } | 233 virtual const BoundNetLog& NetLog() const OVERRIDE { return net_log_; } |
| 227 | 234 |
| 228 virtual void SetSubresourceSpeculation() OVERRIDE {} | 235 virtual void SetSubresourceSpeculation() OVERRIDE {} |
| 229 virtual void SetOmniboxSpeculation() OVERRIDE {} | 236 virtual void SetOmniboxSpeculation() OVERRIDE {} |
| 230 virtual bool WasEverUsed() const OVERRIDE { return false; } | 237 virtual bool WasEverUsed() const OVERRIDE { return false; } |
| 231 virtual bool UsingTCPFastOpen() const OVERRIDE { return false; } | 238 virtual void EnableTCPFastOpen() OVERRIDE { use_tcp_fastopen_ = true; } |
| 239 virtual bool UsingTCPFastOpen() const OVERRIDE { return use_tcp_fastopen_; } |
| 232 virtual bool WasNpnNegotiated() const OVERRIDE { return false; } | 240 virtual bool WasNpnNegotiated() const OVERRIDE { return false; } |
| 233 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { | 241 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { |
| 234 return kProtoUnknown; | 242 return kProtoUnknown; |
| 235 } | 243 } |
| 236 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { return false; } | 244 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { return false; } |
| 237 | 245 |
| 238 // Socket implementation. | 246 // Socket implementation. |
| 239 virtual int Read(IOBuffer* buf, | 247 virtual int Read(IOBuffer* buf, |
| 240 int buf_len, | 248 int buf_len, |
| 241 const CompletionCallback& callback) OVERRIDE { | 249 const CompletionCallback& callback) OVERRIDE { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 254 void DoCallback() { | 262 void DoCallback() { |
| 255 is_connected_ = should_connect_; | 263 is_connected_ = should_connect_; |
| 256 callback_.Run(is_connected_ ? OK : ERR_CONNECTION_FAILED); | 264 callback_.Run(is_connected_ ? OK : ERR_CONNECTION_FAILED); |
| 257 } | 265 } |
| 258 | 266 |
| 259 bool should_connect_; | 267 bool should_connect_; |
| 260 bool is_connected_; | 268 bool is_connected_; |
| 261 const AddressList addrlist_; | 269 const AddressList addrlist_; |
| 262 BoundNetLog net_log_; | 270 BoundNetLog net_log_; |
| 263 CompletionCallback callback_; | 271 CompletionCallback callback_; |
| 272 bool use_tcp_fastopen_; |
| 264 | 273 |
| 265 base::WeakPtrFactory<MockTriggerableClientSocket> weak_factory_; | 274 base::WeakPtrFactory<MockTriggerableClientSocket> weak_factory_; |
| 266 | 275 |
| 267 DISALLOW_COPY_AND_ASSIGN(MockTriggerableClientSocket); | 276 DISALLOW_COPY_AND_ASSIGN(MockTriggerableClientSocket); |
| 268 }; | 277 }; |
| 269 | 278 |
| 270 } // namespace | 279 } // namespace |
| 271 | 280 |
| 272 void TestLoadTimingInfoConnectedReused(const ClientSocketHandle& handle) { | 281 void TestLoadTimingInfoConnectedReused(const ClientSocketHandle& handle) { |
| 273 LoadTimingInfo load_timing_info; | 282 LoadTimingInfo load_timing_info; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 run_loop_quit_closure_ = run_loop.QuitClosure(); | 421 run_loop_quit_closure_ = run_loop.QuitClosure(); |
| 413 run_loop.Run(); | 422 run_loop.Run(); |
| 414 run_loop_quit_closure_.Reset(); | 423 run_loop_quit_closure_.Reset(); |
| 415 } | 424 } |
| 416 base::Closure trigger = triggerable_sockets_.front(); | 425 base::Closure trigger = triggerable_sockets_.front(); |
| 417 triggerable_sockets_.pop(); | 426 triggerable_sockets_.pop(); |
| 418 return trigger; | 427 return trigger; |
| 419 } | 428 } |
| 420 | 429 |
| 421 } // namespace net | 430 } // namespace net |
| OLD | NEW |