| 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() {}
|
| +
|
| +// 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
|
|
|