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

Unified Diff: net/socket/socket_test_util.cc

Issue 2093923004: [Cast Channel] Add real SSL tests to CastSocketTest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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: net/socket/socket_test_util.cc
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc
index 09ba0c0d76f193a51ed8ba6c51676b89de720c62..a1bd86a5da11a3b7478d56fc70ab7d8581e43318 100644
--- a/net/socket/socket_test_util.cc
+++ b/net/socket/socket_test_util.cc
@@ -692,6 +692,192 @@ void SequencedSocketData::OnWriteComplete() {
SequencedSocketData::~SequencedSocketData() {
}
+FakeDataChannel::FakeDataChannel()
+ : read_buf_len_(0),
+ closed_(false),
+ write_called_after_close_(false),
+ weak_factory_(this) {}
+
+FakeDataChannel::~FakeDataChannel() = default;
+
+int FakeDataChannel::Read(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback) {
+ DCHECK(read_callback_.is_null());
+ DCHECK(!read_buf_.get());
+ if (closed_)
+ return 0;
+ if (data_.empty()) {
+ read_callback_ = callback;
+ read_buf_ = buf;
+ read_buf_len_ = buf_len;
+ return ERR_IO_PENDING;
+ }
+ return PropagateData(buf, buf_len);
+}
+
+int FakeDataChannel::Write(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback) {
+ DCHECK(write_callback_.is_null());
+ if (closed_) {
+ if (write_called_after_close_)
+ return ERR_CONNECTION_RESET;
+ write_called_after_close_ = true;
+ write_callback_ = callback;
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&FakeDataChannel::DoWriteCallback,
+ weak_factory_.GetWeakPtr()));
+ return ERR_IO_PENDING;
+ }
+ // This function returns synchronously, so make a copy of the buffer.
+ data_.push(new DrainableIOBuffer(
+ new StringIOBuffer(std::string(buf->data(), buf_len)), buf_len));
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&FakeDataChannel::DoReadCallback, weak_factory_.GetWeakPtr()));
+ return buf_len;
+}
+
+void FakeDataChannel::Close() {
+ closed_ = true;
+ if (!read_callback_.is_null()) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&FakeDataChannel::DoReadCallback,
+ weak_factory_.GetWeakPtr()));
+ }
+}
+
+void FakeDataChannel::DoReadCallback() {
+ if (read_callback_.is_null())
+ return;
+
+ if (closed_) {
+ base::ResetAndReturn(&read_callback_).Run(ERR_CONNECTION_CLOSED);
+ return;
+ }
+
+ if (data_.empty())
+ return;
+
+ int copied = PropagateData(read_buf_, read_buf_len_);
+ CompletionCallback callback = read_callback_;
+ read_callback_.Reset();
+ read_buf_ = NULL;
+ read_buf_len_ = 0;
+ callback.Run(copied);
+}
+
+void FakeDataChannel::DoWriteCallback() {
+ if (write_callback_.is_null())
+ return;
+
+ CompletionCallback callback = write_callback_;
+ write_callback_.Reset();
+ callback.Run(ERR_CONNECTION_RESET);
+}
+
+int FakeDataChannel::PropagateData(scoped_refptr<IOBuffer> read_buf,
+ int read_buf_len) {
+ scoped_refptr<DrainableIOBuffer> buf = data_.front();
+ int copied = std::min(buf->BytesRemaining(), read_buf_len);
+ memcpy(read_buf->data(), buf->data(), copied);
+ buf->DidConsume(copied);
+
+ if (!buf->BytesRemaining())
+ data_.pop();
+ return copied;
+}
+
+FakeSocket::~FakeSocket() {}
+
+int FakeSocket::Read(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback) {
+ // Read random number of bytes.
+ buf_len = rand() % buf_len + 1;
+ return incoming_->Read(buf, buf_len, callback);
+}
+
+int FakeSocket::Write(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback) {
+ // Write random number of bytes.
+ buf_len = rand() % buf_len + 1;
+ return outgoing_->Write(buf, buf_len, callback);
+}
+
+int FakeSocket::SetReceiveBufferSize(int32_t size) {
+ return OK;
+}
+
+int FakeSocket::SetSendBufferSize(int32_t size) {
+ return OK;
+}
+
+int FakeSocket::Connect(const CompletionCallback& callback) {
+ return OK;
+}
+
+void FakeSocket::Disconnect() {
+ incoming_->Close();
+ outgoing_->Close();
+}
+
+bool FakeSocket::IsConnected() const {
+ return true;
+}
+
+bool FakeSocket::IsConnectedAndIdle() const {
+ return true;
+}
+
+int FakeSocket::GetPeerAddress(IPEndPoint* address) const {
+ *address = IPEndPoint(IPAddress::IPv4AllZeros(), 0 /*port*/);
+ return OK;
+}
+
+int FakeSocket::GetLocalAddress(IPEndPoint* address) const {
+ *address = IPEndPoint(IPAddress::IPv4AllZeros(), 0 /*port*/);
+ return OK;
+}
+
+const BoundNetLog& FakeSocket::NetLog() const {
+ return net_log_;
+}
+
+void FakeSocket::SetSubresourceSpeculation() {}
+void FakeSocket::SetOmniboxSpeculation() {}
+
+bool FakeSocket::WasEverUsed() const {
+ return true;
+}
+
+bool FakeSocket::WasNpnNegotiated() const {
+ return false;
+}
+
+NextProto FakeSocket::GetNegotiatedProtocol() const {
+ return kProtoUnknown;
+}
+
+bool FakeSocket::GetSSLInfo(SSLInfo* ssl_info) {
+ return false;
+}
+
+void FakeSocket::GetConnectionAttempts(ConnectionAttempts* out) const {
+ out->clear();
+}
+
+void FakeSocket::ClearConnectionAttempts() {}
+
+void FakeSocket::AddConnectionAttempts(const ConnectionAttempts& attempts) {}
+
+int64_t FakeSocket::GetTotalReceivedBytes() const {
+ NOTIMPLEMENTED();
+ return 0;
+}
+
MockClientSocketFactory::MockClientSocketFactory() {}
MockClientSocketFactory::~MockClientSocketFactory() {}

Powered by Google App Engine
This is Rietveld 408576698