Chromium Code Reviews| 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..804c993f63b5f7ea9d7b76153cce87739c1b580d 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) { |
| + LOG_IF(ERROR, !success) |
|
dcheng
2017/06/20 21:35:34
Nit: DLOG? Not sure that users will get much value
imcheng
2017/06/21 17:00:14
Done.
|
| + << "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 |