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

Unified Diff: extensions/browser/api/display_source/wifi_display/wifi_display_session_service_impl.cc

Issue 1603013002: [chrome.displaySource] DisplaySourceConnectionDelegate::Connection interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
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);
shalamov 2016/01/19 18:23:42 own_sink_ = kInvalidSinkId; ?
Mikhail 2016/01/19 20:02:54 that happens at WiFiDisplaySessionServiceImpl::OnS
}
-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) {

Powered by Google App Engine
This is Rietveld 408576698