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

Unified Diff: chrome/browser/media/router/browser_presentation_connection_proxy.cc

Issue 2943033003: [PresentationSevice] Use PresentationConnection to send messages from (Closed)
Patch Set: LOG -> DLOG Created 3 years, 6 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: 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

Powered by Google App Engine
This is Rietveld 408576698