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

Unified Diff: net/socket/socket_test_util.h

Issue 1494813002: Fix HttpStreamParser::CanReuseConnection(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More fixes Created 5 years 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
« no previous file with comments | « net/http/http_stream_parser.cc ('k') | net/socket/socket_test_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/socket_test_util.h
diff --git a/net/socket/socket_test_util.h b/net/socket/socket_test_util.h
index 430b5225331c4eaaefdf1cbe413c411d0b44268c..36a344864fbedaf813273665154a7c4407f6654e 100644
--- a/net/socket/socket_test_util.h
+++ b/net/socket/socket_test_util.h
@@ -190,9 +190,8 @@ struct MockWriteResult {
// for getting data about individual reads and writes on the socket.
class SocketDataProvider {
public:
- SocketDataProvider() : socket_(NULL) {}
-
- virtual ~SocketDataProvider() {}
+ SocketDataProvider();
+ virtual ~SocketDataProvider();
// Returns the buffer and result code for the next simulated read.
// If the |MockRead.result| is ERR_IO_PENDING, it informs the caller
@@ -204,6 +203,10 @@ class SocketDataProvider {
virtual bool AllReadDataConsumed() const = 0;
virtual bool AllWriteDataConsumed() const = 0;
+ // Returns true if the request should be considered idle, for the purposes of
+ // IsConnectedAndIdle.
+ virtual bool IsIdle() const;
+
// Accessor for the socket which is using the SocketDataProvider.
AsyncSocket* socket() { return socket_; }
void set_socket(AsyncSocket* socket) { socket_ = socket; }
@@ -235,6 +238,11 @@ class AsyncSocket {
// is called to complete the asynchronous read operation.
virtual void OnWriteComplete(int rv) = 0;
virtual void OnConnectComplete(const MockConnect& data) = 0;
+
+ // Called when the SocketDataProvider associated with the socket is destroyed.
+ // The socket may continue to be used after the data provider is destroyed,
+ // so it should be sure not to dereference the provider after this is called.
+ virtual void OnDataProviderDestroyed() = 0;
mmenke 2015/12/03 19:37:10 Could use weak ptrs instead, but I think this is a
};
// StaticSocketDataHelper manages a list of reads and writes.
@@ -364,10 +372,18 @@ class SequencedSocketData : public SocketDataProvider {
void Reset() override;
bool AllReadDataConsumed() const override;
bool AllWriteDataConsumed() const override;
+ bool IsIdle() const override;
bool IsReadPaused();
void CompleteRead();
+ // When true, IsConnectedAndIdle() will return false if the next event in the
+ // sequence is a synchronous. Otherwise, the socket claims to be idle as
+ // long as it's connected. Defaults to false.
+ void set_busy_before_sync_reads(bool busy_before_sync_reads) {
+ busy_before_sync_reads_ = busy_before_sync_reads;
+ }
+
private:
// Defines the state for the read or write path.
enum IoState {
@@ -389,6 +405,8 @@ class SequencedSocketData : public SocketDataProvider {
IoState read_state_;
IoState write_state_;
+ bool busy_before_sync_reads_;
+
base::WeakPtrFactory<SequencedSocketData> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(SequencedSocketData);
@@ -717,6 +735,7 @@ class MockTCPClientSocket : public MockClientSocket, public AsyncSocket {
void OnReadComplete(const MockRead& data) override;
void OnWriteComplete(int rv) override;
void OnConnectComplete(const MockConnect& data) override;
+ void OnDataProviderDestroyed() override;
private:
int CompleteRead();
@@ -898,6 +917,7 @@ class MockSSLClientSocket : public MockClientSocket, public AsyncSocket {
int Connect(const CompletionCallback& callback) override;
void Disconnect() override;
bool IsConnected() const override;
+ bool IsConnectedAndIdle() const override;
bool WasEverUsed() const override;
bool UsingTCPFastOpen() const override;
int GetPeerAddress(IPEndPoint* address) const override;
@@ -911,6 +931,10 @@ class MockSSLClientSocket : public MockClientSocket, public AsyncSocket {
void OnReadComplete(const MockRead& data) override;
void OnWriteComplete(int rv) override;
void OnConnectComplete(const MockConnect& data) override;
+ // SSL sockets don't need magic to deal with destruction of their data
+ // provider.
+ // TODO(mmenke): Probably a good idea to support it, anyways.
+ void OnDataProviderDestroyed() override {}
ChannelIDService* GetChannelIDService() const override;
@@ -954,6 +978,7 @@ class MockUDPClientSocket : public DatagramClientSocket, public AsyncSocket {
void OnReadComplete(const MockRead& data) override;
void OnWriteComplete(int rv) override;
void OnConnectComplete(const MockConnect& data) override;
+ void OnDataProviderDestroyed() override;
void set_source_port(uint16 port) { source_port_ = port;}
« no previous file with comments | « net/http/http_stream_parser.cc ('k') | net/socket/socket_test_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698