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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/media/router/browser_presentation_connection_proxy.h" 5 #include "chrome/browser/media/router/browser_presentation_connection_proxy.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 10
11 #include "chrome/browser/media/router/media_router.h" 11 #include "chrome/browser/media/router/media_router.h"
12 #include "chrome/common/media_router/route_message.h"
12 13
13 namespace media_router { 14 namespace media_router {
14 15
16 namespace {
17
18 void OnMessageReceivedByRenderer(bool success) {
19 DLOG_IF(ERROR, !success)
20 << "Renderer PresentationConnection failed to process message!";
21 }
22
23 } // namespace
24
15 BrowserPresentationConnectionProxy::BrowserPresentationConnectionProxy( 25 BrowserPresentationConnectionProxy::BrowserPresentationConnectionProxy(
16 MediaRouter* router, 26 MediaRouter* router,
17 const MediaRoute::Id& route_id, 27 const MediaRoute::Id& route_id,
18 blink::mojom::PresentationConnectionRequest receiver_connection_request, 28 blink::mojom::PresentationConnectionRequest receiver_connection_request,
19 blink::mojom::PresentationConnectionPtr controller_connection_ptr) 29 blink::mojom::PresentationConnectionPtr controller_connection_ptr)
20 : router_(router), 30 : RouteMessageObserver(router, route_id),
31 router_(router),
21 route_id_(route_id), 32 route_id_(route_id),
22 binding_(this), 33 binding_(this),
23 target_connection_ptr_(std::move(controller_connection_ptr)) { 34 target_connection_ptr_(std::move(controller_connection_ptr)) {
24 DCHECK(router); 35 DCHECK(router);
25 DCHECK(target_connection_ptr_); 36 DCHECK(target_connection_ptr_);
26 37
27 binding_.Bind(std::move(receiver_connection_request)); 38 binding_.Bind(std::move(receiver_connection_request));
28 target_connection_ptr_->DidChangeState( 39 target_connection_ptr_->DidChangeState(
29 content::PRESENTATION_CONNECTION_STATE_CONNECTED); 40 content::PRESENTATION_CONNECTION_STATE_CONNECTED);
30 } 41 }
31 42
32 BrowserPresentationConnectionProxy::~BrowserPresentationConnectionProxy() {} 43 BrowserPresentationConnectionProxy::~BrowserPresentationConnectionProxy() {}
33 44
34 void BrowserPresentationConnectionProxy::OnMessage( 45 void BrowserPresentationConnectionProxy::OnMessage(
35 content::PresentationConnectionMessage message, 46 content::PresentationConnectionMessage message,
36 OnMessageCallback on_message_callback) { 47 OnMessageCallback on_message_callback) {
37 DVLOG(2) << "BrowserPresentationConnectionProxy::OnMessage"; 48 DVLOG(2) << "BrowserPresentationConnectionProxy::OnMessage";
38 if (message.is_binary()) { 49 if (message.is_binary()) {
39 router_->SendRouteBinaryMessage( 50 router_->SendRouteBinaryMessage(
40 route_id_, 51 route_id_,
41 base::MakeUnique<std::vector<uint8_t>>(std::move(message.data.value())), 52 base::MakeUnique<std::vector<uint8_t>>(std::move(message.data.value())),
42 std::move(on_message_callback)); 53 std::move(on_message_callback));
43 } else { 54 } else {
44 router_->SendRouteMessage(route_id_, message.message.value(), 55 router_->SendRouteMessage(route_id_, message.message.value(),
45 std::move(on_message_callback)); 56 std::move(on_message_callback));
46 } 57 }
47 } 58 }
48 59
60 void BrowserPresentationConnectionProxy::OnMessagesReceived(
61 const std::vector<RouteMessage>& messages) {
62 DVLOG(2) << __func__ << ", number of messages : " << messages.size();
63 // TODO(mfoltz): Remove RouteMessage and replace with move-only
64 // PresentationConnectionMessage.
65 std::vector<content::PresentationConnectionMessage> presentation_messages;
66 for (const RouteMessage& message : messages) {
67 if (message.type == RouteMessage::TEXT && message.text) {
68 presentation_messages.emplace_back(message.text.value());
69 } else if (message.type == RouteMessage::BINARY && message.binary) {
70 presentation_messages.emplace_back(message.binary.value());
71 } else {
72 NOTREACHED() << "Unknown route message type";
73 }
74 }
75
76 // TODO(imcheng): It would be slightly more efficient to send messages in
77 // a single batch.
78 for (auto& message : presentation_messages) {
79 target_connection_ptr_->OnMessage(std::move(message),
80 base::Bind(&OnMessageReceivedByRenderer));
81 }
82 }
49 } // namespace media_router 83 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698