Chromium Code Reviews| Index: components/cast_channel/cast_socket.cc |
| diff --git a/components/cast_channel/cast_socket.cc b/components/cast_channel/cast_socket.cc |
| index e60004ed228f1e5c1a2f6ce9ebd0e2150cc12fbe..e87c392565a666350d4f83803569f460f78d5041 100644 |
| --- a/components/cast_channel/cast_socket.cc |
| +++ b/components/cast_channel/cast_socket.cc |
| @@ -240,14 +240,13 @@ void CastSocketImpl::SetTransportForTesting( |
| transport_ = std::move(transport); |
| } |
| -void CastSocketImpl::Connect(std::unique_ptr<CastTransport::Delegate> delegate, |
| - base::Callback<void(ChannelError)> callback) { |
| +void CastSocketImpl::Connect(base::Callback<void(ChannelError)> callback) { |
| DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
| VLOG_WITH_CONNECTION(1) << "Connect readyState = " |
| << ::cast_channel::ReadyStateToString(ready_state_); |
| DCHECK_EQ(ConnectionState::START_CONNECT, connect_state_); |
| - delegate_ = std::move(delegate); |
| + delegate_ = base::MakeUnique<CastSocketMessageDelegate>(this); |
| if (ready_state_ != ReadyState::NONE) { |
| callback.Run(ChannelError::CONNECT_ERROR); |
| @@ -274,6 +273,12 @@ CastTransport* CastSocketImpl::transport() const { |
| return transport_.get(); |
| } |
| +void CastSocketImpl::AddObserver(Observer* observer) { |
| + DCHECK(observer); |
| + if (!observers_.HasObserver(observer)) |
| + observers_.AddObserver(observer); |
| +} |
| + |
| void CastSocketImpl::OnConnectTimeout() { |
| DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
| // Stop all pending connection setup tasks and report back to the client. |
| @@ -603,5 +608,28 @@ void CastSocketImpl::SetErrorState(ChannelError error_state) { |
| delegate_->OnError(error_state_); |
| } |
| +CastSocketImpl::CastSocketMessageDelegate::CastSocketMessageDelegate( |
| + cast_channel::CastSocketImpl* socket) |
| + : socket_(socket) { |
| + DCHECK(socket_); |
| +} |
| + |
| +CastSocketImpl::CastSocketMessageDelegate::~CastSocketMessageDelegate() {} |
|
mark a. foltz
2017/06/20 01:16:43
Nit: prefer = default, but be consistent with surr
zhaobin
2017/06/20 17:50:05
Keep {} to be consistent with
~FakeCertVerifier()
|
| + |
| +// CastTransport::Delegate implementation. |
| +void CastSocketImpl::CastSocketMessageDelegate::OnError( |
| + cast_channel::ChannelError error_state) { |
| + for (auto& observer : socket_->observers_) |
| + observer.OnError(*socket_, error_state); |
| +} |
| + |
| +void CastSocketImpl::CastSocketMessageDelegate::OnMessage( |
| + const cast_channel::CastMessage& message) { |
| + for (auto& observer : socket_->observers_) |
| + observer.OnMessage(*socket_, message); |
| +} |
| + |
| +void CastSocketImpl::CastSocketMessageDelegate::Start() {} |
| + |
| } // namespace cast_channel |
| #undef VLOG_WITH_CONNECTION |