Index: chrome/browser/media/router/browser_presentation_connection_proxy.cc |
diff --git a/chrome/browser/media/router/browser_presentation_connection_proxy.cc b/chrome/browser/media/router/browser_presentation_connection_proxy.cc |
index 00bd0c4f55fbd866ead16138b23dbe00368ff969..e6b6fa2d4f1392aae14ef5c358b7c73383e7d818 100644 |
--- a/chrome/browser/media/router/browser_presentation_connection_proxy.cc |
+++ b/chrome/browser/media/router/browser_presentation_connection_proxy.cc |
@@ -9,15 +9,26 @@ |
#include "base/memory/ptr_util.h" |
#include "chrome/browser/media/router/media_router.h" |
+#include "chrome/common/media_router/route_message.h" |
namespace media_router { |
+namespace { |
+ |
+void OnMessageReceivedByRenderer(bool success) { |
+ DLOG_IF(ERROR, !success) |
+ << "Renderer PresentationConnection failed to process message!"; |
+} |
+ |
+} // namespace |
+ |
BrowserPresentationConnectionProxy::BrowserPresentationConnectionProxy( |
MediaRouter* router, |
const MediaRoute::Id& route_id, |
blink::mojom::PresentationConnectionRequest receiver_connection_request, |
blink::mojom::PresentationConnectionPtr controller_connection_ptr) |
- : router_(router), |
+ : RouteMessageObserver(router, route_id), |
+ router_(router), |
route_id_(route_id), |
binding_(this), |
target_connection_ptr_(std::move(controller_connection_ptr)) { |
@@ -46,4 +57,27 @@ void BrowserPresentationConnectionProxy::OnMessage( |
} |
} |
+void BrowserPresentationConnectionProxy::OnMessagesReceived( |
+ const std::vector<RouteMessage>& messages) { |
+ DVLOG(2) << __func__ << ", number of messages : " << messages.size(); |
+ // TODO(mfoltz): Remove RouteMessage and replace with move-only |
+ // PresentationConnectionMessage. |
+ std::vector<content::PresentationConnectionMessage> presentation_messages; |
+ for (const RouteMessage& message : messages) { |
+ if (message.type == RouteMessage::TEXT && message.text) { |
+ presentation_messages.emplace_back(message.text.value()); |
+ } else if (message.type == RouteMessage::BINARY && message.binary) { |
+ presentation_messages.emplace_back(message.binary.value()); |
+ } else { |
+ NOTREACHED() << "Unknown route message type"; |
+ } |
+ } |
+ |
+ // TODO(imcheng): It would be slightly more efficient to send messages in |
+ // a single batch. |
+ for (auto& message : presentation_messages) { |
+ target_connection_ptr_->OnMessage(std::move(message), |
+ base::Bind(&OnMessageReceivedByRenderer)); |
+ } |
+} |
} // namespace media_router |