| Index: extensions/browser/api/display_source/wifi_display/wifi_display_session_service_impl.cc
|
| diff --git a/extensions/browser/api/display_source/wifi_display/wifi_display_session_service_impl.cc b/extensions/browser/api/display_source/wifi_display/wifi_display_session_service_impl.cc
|
| index ae3713d0707dbfdb42c085810342729af026b56f..59dfda10cf45fe17c1348e464253a2fab1303c3a 100644
|
| --- a/extensions/browser/api/display_source/wifi_display/wifi_display_session_service_impl.cc
|
| +++ b/extensions/browser/api/display_source/wifi_display/wifi_display_session_service_impl.cc
|
| @@ -30,7 +30,7 @@ WiFiDisplaySessionServiceImpl::WiFiDisplaySessionServiceImpl(
|
|
|
| auto connection = delegate_->connection();
|
| if (connection)
|
| - last_connected_sink_ = connection->connected_sink->id;
|
| + last_connected_sink_ = connection->GetConnectedSink()->id;
|
| }
|
|
|
| WiFiDisplaySessionServiceImpl::~WiFiDisplaySessionServiceImpl() {
|
| @@ -100,13 +100,29 @@ void WiFiDisplaySessionServiceImpl::Disconnect() {
|
| return;
|
| }
|
| DCHECK(delegate_->connection());
|
| - DCHECK_EQ(own_sink_, delegate_->connection()->connected_sink->id);
|
| + DCHECK_EQ(own_sink_, delegate_->connection()->GetConnectedSink()->id);
|
| auto on_error = base::Bind(&WiFiDisplaySessionServiceImpl::OnDisconnectFailed,
|
| weak_factory_.GetWeakPtr(), own_sink_);
|
| delegate_->Disconnect(on_error);
|
| }
|
|
|
| -void WiFiDisplaySessionServiceImpl::SendMessage(const mojo::String& message) {}
|
| +void WiFiDisplaySessionServiceImpl::SendMessage(const mojo::String& message) {
|
| + if (own_sink_ == DisplaySourceConnectionDelegate::kInvalidSinkId) {
|
| + // The connection might drop before this call has arrived.
|
| + return;
|
| + }
|
| + auto connection = delegate_->connection();
|
| + DCHECK(connection);
|
| + DCHECK_EQ(own_sink_, connection->GetConnectedSink()->id);
|
| + connection->SendMessage(message);
|
| +}
|
| +
|
| +void WiFiDisplaySessionServiceImpl::OnSinkMessage(const std::string& message) {
|
| + DCHECK(delegate_->connection());
|
| + DCHECK_NE(own_sink_, DisplaySourceConnectionDelegate::kInvalidSinkId);
|
| + DCHECK(client_);
|
| + client_->OnMessage(message);
|
| +}
|
|
|
| void WiFiDisplaySessionServiceImpl::OnSinksUpdated(
|
| const DisplaySourceSinkInfoList& sinks) {
|
| @@ -119,13 +135,28 @@ void WiFiDisplaySessionServiceImpl::OnSinksUpdated(
|
| client_->OnDisconnected(last_connected_sink_);
|
| last_connected_sink_ = DisplaySourceConnectionDelegate::kInvalidSinkId;
|
| }
|
| - if (connection && last_connected_sink_ != connection->connected_sink->id) {
|
| - last_connected_sink_ = connection->connected_sink->id;
|
| + if (connection &&
|
| + last_connected_sink_ != connection->GetConnectedSink()->id) {
|
| + last_connected_sink_ = connection->GetConnectedSink()->id;
|
| if (client_)
|
| - client_->OnConnected(last_connected_sink_, connection->local_ip);
|
| + client_->OnConnected(last_connected_sink_, connection->GetLocalAddress());
|
| + if (last_connected_sink_ == own_sink_) {
|
| + auto on_message =
|
| + base::Bind(&WiFiDisplaySessionServiceImpl::OnSinkMessage,
|
| + weak_factory_.GetWeakPtr());
|
| + connection->SetMessageReceivedCallback(on_message);
|
| + }
|
| }
|
| }
|
|
|
| +void WiFiDisplaySessionServiceImpl::OnConnectionError(
|
| + int sink_id,
|
| + DisplaySourceErrorType type,
|
| + const std::string& description) {
|
| + DCHECK(client_);
|
| + client_->OnError(sink_id, type, description);
|
| +}
|
| +
|
| void WiFiDisplaySessionServiceImpl::OnConnectFailed(
|
| int sink_id,
|
| const std::string& message) {
|
|
|