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

Unified Diff: remoting/protocol/fake_authenticator.cc

Issue 551173004: Move PseudoTCP and channel auth out of LibjingleTransportFactory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@clean_dgrams
Patch Set: Created 6 years, 3 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
« no previous file with comments | « remoting/protocol/fake_authenticator.h ('k') | remoting/protocol/fake_session.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/fake_authenticator.cc
diff --git a/remoting/protocol/fake_authenticator.cc b/remoting/protocol/fake_authenticator.cc
index bf06c56c6a8b61b0a7389d1424b46a793b4100d4..9f2b4f6f08a2afa3982be5dfeb845fac8ad83559 100644
--- a/remoting/protocol/fake_authenticator.cc
+++ b/remoting/protocol/fake_authenticator.cc
@@ -7,6 +7,7 @@
#include "base/message_loop/message_loop.h"
#include "base/strings/string_number_conversions.h"
#include "net/base/io_buffer.h"
+#include "net/base/net_errors.h"
#include "net/socket/stream_socket.h"
#include "remoting/base/constants.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -34,31 +35,33 @@ void FakeChannelAuthenticator::SecureAndAuthenticate(
if (async_) {
done_callback_ = done_callback;
- scoped_refptr<net::IOBuffer> write_buf = new net::IOBuffer(1);
- write_buf->data()[0] = 0;
- int result =
- socket_->Write(write_buf.get(),
- 1,
- base::Bind(&FakeChannelAuthenticator::OnAuthBytesWritten,
- weak_factory_.GetWeakPtr()));
- if (result != net::ERR_IO_PENDING) {
- // This will not call the callback because |did_read_bytes_| is
- // still set to false.
- OnAuthBytesWritten(result);
+ if (result_ != net::OK) {
+ // Don't write anything if we are going to reject auth to make test
+ // ordering deterministic.
+ did_write_bytes_ = true;
+ } else {
+ scoped_refptr<net::IOBuffer> write_buf = new net::IOBuffer(1);
+ write_buf->data()[0] = 0;
+ int result = socket_->Write(
+ write_buf.get(), 1,
+ base::Bind(&FakeChannelAuthenticator::OnAuthBytesWritten,
+ weak_factory_.GetWeakPtr()));
+ if (result != net::ERR_IO_PENDING) {
+ // This will not call the callback because |did_read_bytes_| is
+ // still set to false.
+ OnAuthBytesWritten(result);
+ }
}
scoped_refptr<net::IOBuffer> read_buf = new net::IOBuffer(1);
- result =
- socket_->Read(read_buf.get(),
- 1,
+ int result =
+ socket_->Read(read_buf.get(), 1,
base::Bind(&FakeChannelAuthenticator::OnAuthBytesRead,
weak_factory_.GetWeakPtr()));
if (result != net::ERR_IO_PENDING)
OnAuthBytesRead(result);
} else {
- if (result_ != net::OK)
- socket_.reset();
- done_callback.Run(result_, socket_.Pass());
+ CallDoneCallback();
}
}
@@ -67,7 +70,7 @@ void FakeChannelAuthenticator::OnAuthBytesWritten(int result) {
EXPECT_FALSE(did_write_bytes_);
did_write_bytes_ = true;
if (did_read_bytes_)
- done_callback_.Run(result_, socket_.Pass());
+ CallDoneCallback();
}
void FakeChannelAuthenticator::OnAuthBytesRead(int result) {
@@ -75,7 +78,15 @@ void FakeChannelAuthenticator::OnAuthBytesRead(int result) {
EXPECT_FALSE(did_read_bytes_);
did_read_bytes_ = true;
if (did_write_bytes_)
- done_callback_.Run(result_, socket_.Pass());
+ CallDoneCallback();
+}
+
+void FakeChannelAuthenticator::CallDoneCallback() {
+ DoneCallback callback = done_callback_;
+ done_callback_.Reset();
+ if (result_ != net::OK)
+ socket_.reset();
+ callback.Run(result_, socket_.Pass());
}
FakeAuthenticator::FakeAuthenticator(
« no previous file with comments | « remoting/protocol/fake_authenticator.h ('k') | remoting/protocol/fake_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698