Index: components/cast_channel/cast_socket_unittest.cc |
diff --git a/components/cast_channel/cast_socket_unittest.cc b/components/cast_channel/cast_socket_unittest.cc |
index c054878855b6cee52f5c0cf7776741447ba89420..bb44f1dc06695b5a7d3f7daf70377b2ff5f9b23e 100644 |
--- a/components/cast_channel/cast_socket_unittest.cc |
+++ b/components/cast_channel/cast_socket_unittest.cc |
@@ -331,10 +331,11 @@ class TestCastSocket : public CastSocketImpl { |
class CastSocketTest : public testing::Test { |
public: |
- CastSocketTest() : logger_(new Logger()), delegate_(new MockDelegate) {} |
+ CastSocketTest() |
+ : logger_(new Logger()), observer_(new MockCastSocketObserver()) {} |
~CastSocketTest() override {} |
- void SetUp() override { EXPECT_CALL(*delegate_, OnMessage(_)).Times(0); } |
+ void SetUp() override { EXPECT_CALL(*observer_, OnMessage(_, _)).Times(0); } |
void TearDown() override { |
if (socket_.get()) { |
@@ -356,8 +357,7 @@ class CastSocketTest : public testing::Test { |
.WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
socket_->GetMockTransport()->current_delegate()->OnMessage( |
@@ -376,7 +376,7 @@ class CastSocketTest : public testing::Test { |
Logger* logger_; |
std::unique_ptr<TestCastSocket> socket_; |
CompleteHandler handler_; |
- std::unique_ptr<MockDelegate> delegate_; |
+ std::unique_ptr<MockCastSocketObserver> observer_; |
private: |
DISALLOW_COPY_AND_ASSIGN(CastSocketTest); |
@@ -433,8 +433,7 @@ TEST_F(CastSocketTest, TestConnectAuthMessageCorrupted) { |
.WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::TRANSPORT_ERROR)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
CastMessage mangled_auth_reply = CreateAuthReply(); |
@@ -459,8 +458,7 @@ TEST_F(CastSocketTest, TestConnectTcpConnectErrorAsync) { |
socket_->SetupTcpConnect(net::ASYNC, net::ERR_FAILED); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -475,8 +473,7 @@ TEST_F(CastSocketTest, TestConnectTcpConnectErrorSync) { |
socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_FAILED); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -489,9 +486,9 @@ TEST_F(CastSocketTest, TestConnectTcpTimeoutError) { |
CreateCastSocketSecure(); |
socket_->SetupTcpConnectUnresponsive(); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
- EXPECT_CALL(*delegate_, OnError(ChannelError::CONNECT_TIMEOUT)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ EXPECT_CALL(*observer_, OnError(_, ChannelError::CONNECT_TIMEOUT)); |
+ socket_->AddObserver("id", std::move(observer_)); |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -509,9 +506,9 @@ TEST_F(CastSocketTest, TestConnectTcpSocketTimeoutError) { |
CreateCastSocketSecure(); |
socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
- EXPECT_CALL(*delegate_, OnError(ChannelError::CONNECT_TIMEOUT)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ EXPECT_CALL(*observer_, OnError(_, ChannelError::CONNECT_TIMEOUT)); |
+ socket_->AddObserver("id", std::move(observer_)); |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -529,8 +526,7 @@ TEST_F(CastSocketTest, TestConnectSslConnectErrorAsync) { |
socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -546,8 +542,7 @@ TEST_F(CastSocketTest, TestConnectSslConnectErrorSync) { |
socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -565,8 +560,7 @@ TEST_F(CastSocketTest, TestConnectSslConnectTimeoutSync) { |
socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -584,8 +578,7 @@ TEST_F(CastSocketTest, TestConnectSslConnectTimeoutAsync) { |
socket_->SetupSslConnect(net::ASYNC, net::ERR_CONNECTION_TIMED_OUT); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -605,8 +598,7 @@ TEST_F(CastSocketTest, TestConnectChallengeSendError) { |
.WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
@@ -624,8 +616,7 @@ TEST_F(CastSocketTest, TestConnectDestroyedAfterChallengeSent) { |
EXPECT_CALL(*socket_->GetMockTransport(), |
SendMessage(EqualsProto(CreateAuthChallenge()), _)) |
.WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
socket_.reset(); |
RunPendingTasks(); |
@@ -642,11 +633,11 @@ TEST_F(CastSocketTest, TestConnectChallengeReplyReceiveError) { |
SendMessage(EqualsProto(CreateAuthChallenge()), _)) |
.WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
socket_->AddReadResult(net::SYNCHRONOUS, net::ERR_FAILED); |
- EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
+ EXPECT_CALL(*observer_, OnError(_, ChannelError::CAST_SOCKET_ERROR)); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR)); |
EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->AddObserver("id", std::move(observer_)); |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
socket_->GetMockTransport()->current_delegate()->OnError( |
@@ -664,15 +655,15 @@ TEST_F(CastSocketTest, TestConnectChallengeVerificationFails) { |
socket_->SetupSslConnect(net::ASYNC, net::OK); |
socket_->SetVerifyChallengeResult(false); |
- EXPECT_CALL(*delegate_, OnError(ChannelError::AUTHENTICATION_ERROR)); |
+ EXPECT_CALL(*observer_, OnError(_, ChannelError::AUTHENTICATION_ERROR)); |
CastMessage challenge_proto = CreateAuthChallenge(); |
EXPECT_CALL(*socket_->GetMockTransport(), |
SendMessage(EqualsProto(challenge_proto), _)) |
.WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); |
EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->AddObserver("id", std::move(observer_)); |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
socket_->GetMockTransport()->current_delegate()->OnMessage(CreateAuthReply()); |
@@ -708,8 +699,7 @@ TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportAsync) { |
socket_->AddWriteResultForData(net::ASYNC, test_message_str); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
@@ -751,8 +741,7 @@ TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportSync) { |
socket_->AddWriteResultForData(net::SYNCHRONOUS, test_message_str); |
EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); |
- socket_->Connect(std::move(delegate_), |
- base::Bind(&CompleteHandler::OnConnectComplete, |
+ socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete, |
base::Unretained(&handler_))); |
RunPendingTasks(); |
EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
@@ -769,4 +758,28 @@ TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportSync) { |
EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
} |
+TEST_F(CastSocketTest, TestObservers) { |
+ CreateCastSocketSecure(); |
+ std::string id1 = "id1"; |
+ std::string id2 = "id2"; |
+ EXPECT_FALSE(socket_->HasObserver(id1)); |
+ EXPECT_FALSE(socket_->HasObserver(id2)); |
+ |
+ // Test AddObserever |
+ MockCastSocketObserver* observer1 = new MockCastSocketObserver(); |
+ MockCastSocketObserver* observer2 = new MockCastSocketObserver(); |
+ socket_->AddObserver(id1, base::WrapUnique(observer1)); |
+ EXPECT_TRUE(socket_->HasObserver(id1)); |
+ socket_->AddObserver(id2, base::WrapUnique(observer2)); |
+ EXPECT_TRUE(socket_->HasObserver(id2)); |
+ |
+ // Test notify observers |
+ EXPECT_CALL(*observer1, |
+ OnError(_, cast_channel::ChannelError::CONNECT_ERROR)); |
+ EXPECT_CALL(*observer2, |
+ OnError(_, cast_channel::ChannelError::CONNECT_ERROR)); |
+ CastSocketImpl::CastSocketMessageDelegate delegate(socket_.get()); |
+ delegate.OnError(cast_channel::ChannelError::CONNECT_ERROR); |
+} |
+ |
} // namespace cast_channel |