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

Side by Side Diff: chrome/browser/media/router/presentation_service_delegate_impl.cc

Issue 2562603002: Updates SessionMessage to ConnectionMessage. (Closed)
Patch Set: Created 4 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/presentation_service_delegate_impl.h" 5 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <unordered_map> 8 #include <unordered_map>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 68
69 // Observes messages originating from the MediaSink connected to a MediaRoute 69 // Observes messages originating from the MediaSink connected to a MediaRoute
70 // that represents a presentation. Converts the messages into 70 // that represents a presentation. Converts the messages into
71 // content::PresentationSessionMessages and dispatches them via the provided 71 // content::PresentationSessionMessages and dispatches them via the provided
72 // PresentationSessionMessageCallback. 72 // PresentationSessionMessageCallback.
73 class PresentationSessionMessagesObserver : public RouteMessageObserver { 73 class PresentationSessionMessagesObserver : public RouteMessageObserver {
74 public: 74 public:
75 // |message_cb|: The callback to invoke whenever messages are received. 75 // |message_cb|: The callback to invoke whenever messages are received.
76 // |route_id|: ID of MediaRoute to listen for messages. 76 // |route_id|: ID of MediaRoute to listen for messages.
77 PresentationSessionMessagesObserver( 77 PresentationSessionMessagesObserver(
78 MediaRouter* router, const MediaRoute::Id& route_id, 78 MediaRouter* router,
79 const content::PresentationSessionMessageCallback& message_cb) 79 const MediaRoute::Id& route_id,
80 const content::PresentationConnectionMessageCallback& message_cb)
80 : RouteMessageObserver(router, route_id), message_cb_(message_cb) { 81 : RouteMessageObserver(router, route_id), message_cb_(message_cb) {
81 DCHECK(!message_cb_.is_null()); 82 DCHECK(!message_cb_.is_null());
82 } 83 }
83 84
84 ~PresentationSessionMessagesObserver() final {} 85 ~PresentationSessionMessagesObserver() final {}
85 86
86 void OnMessagesReceived(const std::vector<RouteMessage>& messages) final { 87 void OnMessagesReceived(const std::vector<RouteMessage>& messages) final {
87 DVLOG(2) << __func__ << ", number of messages : " << messages.size(); 88 DVLOG(2) << __func__ << ", number of messages : " << messages.size();
88 ScopedVector<content::PresentationSessionMessage> presentation_messages; 89 ScopedVector<content::PresentationConnectionMessage> presentation_messages;
89 for (const RouteMessage& message : messages) { 90 for (const RouteMessage& message : messages) {
90 if (message.type == RouteMessage::TEXT && message.text) { 91 if (message.type == RouteMessage::TEXT && message.text) {
91 presentation_messages.push_back(new content::PresentationSessionMessage( 92 presentation_messages.push_back(
92 content::PresentationMessageType::TEXT)); 93 new content::PresentationConnectionMessage(
94 content::PresentationMessageType::TEXT));
93 presentation_messages.back()->message = *message.text; 95 presentation_messages.back()->message = *message.text;
94 } else if (message.type == RouteMessage::BINARY && message.binary) { 96 } else if (message.type == RouteMessage::BINARY && message.binary) {
95 presentation_messages.push_back(new content::PresentationSessionMessage( 97 presentation_messages.push_back(
96 content::PresentationMessageType::ARRAY_BUFFER)); 98 new content::PresentationConnectionMessage(
99 content::PresentationMessageType::BINARY));
97 presentation_messages.back()->data.reset( 100 presentation_messages.back()->data.reset(
98 new std::vector<uint8_t>(*message.binary)); 101 new std::vector<uint8_t>(*message.binary));
99 } 102 }
100 } 103 }
101 // TODO(miu): Remove second argument from PresentationSessionMessageCallback 104 // TODO(miu): Remove second argument from PresentationSessionMessageCallback
102 // since it's always true now. 105 // since it's always true now.
103 message_cb_.Run(presentation_messages, true); 106 message_cb_.Run(presentation_messages, true);
104 } 107 }
105 108
106 private: 109 private:
107 const content::PresentationSessionMessageCallback message_cb_; 110 const content::PresentationConnectionMessageCallback message_cb_;
108 111
109 DISALLOW_COPY_AND_ASSIGN(PresentationSessionMessagesObserver); 112 DISALLOW_COPY_AND_ASSIGN(PresentationSessionMessagesObserver);
110 }; 113 };
111 114
112 } // namespace 115 } // namespace
113 116
114 // Used by PresentationServiceDelegateImpl to manage 117 // Used by PresentationServiceDelegateImpl to manage
115 // listeners and default presentation info in a render frame. 118 // listeners and default presentation info in a render frame.
116 // Its lifetime: 119 // Its lifetime:
117 // * PresentationFrameManager AddDelegateObserver 120 // * PresentationFrameManager AddDelegateObserver
(...skipping 13 matching lines...) Expand all
131 content::PresentationScreenAvailabilityListener* listener); 134 content::PresentationScreenAvailabilityListener* listener);
132 bool HasScreenAvailabilityListenerForTest( 135 bool HasScreenAvailabilityListenerForTest(
133 const MediaSource::Id& source_id) const; 136 const MediaSource::Id& source_id) const;
134 std::string GetDefaultPresentationId() const; 137 std::string GetDefaultPresentationId() const;
135 void ListenForConnectionStateChange( 138 void ListenForConnectionStateChange(
136 const content::PresentationSessionInfo& connection, 139 const content::PresentationSessionInfo& connection,
137 const content::PresentationConnectionStateChangedCallback& 140 const content::PresentationConnectionStateChangedCallback&
138 state_changed_cb); 141 state_changed_cb);
139 void ListenForSessionMessages( 142 void ListenForSessionMessages(
140 const content::PresentationSessionInfo& session, 143 const content::PresentationSessionInfo& session,
141 const content::PresentationSessionMessageCallback& message_cb); 144 const content::PresentationConnectionMessageCallback& message_cb);
142 145
143 void Reset(); 146 void Reset();
144 void RemoveConnection(const std::string& presentation_id, 147 void RemoveConnection(const std::string& presentation_id,
145 const MediaRoute::Id& route_id); 148 const MediaRoute::Id& route_id);
146 149
147 const MediaRoute::Id GetRouteId(const std::string& presentation_id) const; 150 const MediaRoute::Id GetRouteId(const std::string& presentation_id) const;
148 const std::vector<MediaRoute::Id> GetRouteIds() const; 151 const std::vector<MediaRoute::Id> GetRouteIds() const;
149 152
150 void OnPresentationSessionStarted( 153 void OnPresentationSessionStarted(
151 const content::PresentationSessionInfo& session, 154 const content::PresentationSessionInfo& session,
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 return; 305 return;
303 } 306 }
304 307
305 connection_state_subscriptions_.insert(std::make_pair( 308 connection_state_subscriptions_.insert(std::make_pair(
306 route_id, router_->AddPresentationConnectionStateChangedCallback( 309 route_id, router_->AddPresentationConnectionStateChangedCallback(
307 it->second, state_changed_cb))); 310 it->second, state_changed_cb)));
308 } 311 }
309 312
310 void PresentationFrame::ListenForSessionMessages( 313 void PresentationFrame::ListenForSessionMessages(
311 const content::PresentationSessionInfo& session, 314 const content::PresentationSessionInfo& session,
312 const content::PresentationSessionMessageCallback& message_cb) { 315 const content::PresentationConnectionMessageCallback& message_cb) {
313 auto it = presentation_id_to_route_id_.find(session.presentation_id); 316 auto it = presentation_id_to_route_id_.find(session.presentation_id);
314 if (it == presentation_id_to_route_id_.end()) { 317 if (it == presentation_id_to_route_id_.end()) {
315 DVLOG(2) << "ListenForSessionMessages: no route for " 318 DVLOG(2) << "ListenForSessionMessages: no route for "
316 << session.presentation_id; 319 << session.presentation_id;
317 return; 320 return;
318 } 321 }
319 322
320 const MediaRoute::Id& route_id = it->second; 323 const MediaRoute::Id& route_id = it->second;
321 if (session_messages_observers_.find(route_id) != 324 if (session_messages_observers_.find(route_id) !=
322 session_messages_observers_.end()) { 325 session_messages_observers_.end()) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 const RenderFrameHostId& render_frame_host_id, 357 const RenderFrameHostId& render_frame_host_id,
355 content::PresentationScreenAvailabilityListener* listener); 358 content::PresentationScreenAvailabilityListener* listener);
356 void ListenForConnectionStateChange( 359 void ListenForConnectionStateChange(
357 const RenderFrameHostId& render_frame_host_id, 360 const RenderFrameHostId& render_frame_host_id,
358 const content::PresentationSessionInfo& connection, 361 const content::PresentationSessionInfo& connection,
359 const content::PresentationConnectionStateChangedCallback& 362 const content::PresentationConnectionStateChangedCallback&
360 state_changed_cb); 363 state_changed_cb);
361 void ListenForSessionMessages( 364 void ListenForSessionMessages(
362 const RenderFrameHostId& render_frame_host_id, 365 const RenderFrameHostId& render_frame_host_id,
363 const content::PresentationSessionInfo& session, 366 const content::PresentationSessionInfo& session,
364 const content::PresentationSessionMessageCallback& message_cb); 367 const content::PresentationConnectionMessageCallback& message_cb);
365 368
366 // Sets or clears the default presentation request and callback for the given 369 // Sets or clears the default presentation request and callback for the given
367 // frame. Also sets / clears the default presentation requests for the owning 370 // frame. Also sets / clears the default presentation requests for the owning
368 // tab WebContents. 371 // tab WebContents.
369 void SetDefaultPresentationUrl( 372 void SetDefaultPresentationUrl(
370 const RenderFrameHostId& render_frame_host_id, 373 const RenderFrameHostId& render_frame_host_id,
371 const GURL& default_presentation_url, 374 const GURL& default_presentation_url,
372 const content::PresentationSessionStartedCallback& callback); 375 const content::PresentationSessionStartedCallback& callback);
373 void AddDelegateObserver(const RenderFrameHostId& render_frame_host_id, 376 void AddDelegateObserver(const RenderFrameHostId& render_frame_host_id,
374 DelegateObserver* observer); 377 DelegateObserver* observer);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 const content::PresentationConnectionStateChangedCallback& 530 const content::PresentationConnectionStateChangedCallback&
528 state_changed_cb) { 531 state_changed_cb) {
529 const auto it = presentation_frames_.find(render_frame_host_id); 532 const auto it = presentation_frames_.find(render_frame_host_id);
530 if (it != presentation_frames_.end()) 533 if (it != presentation_frames_.end())
531 it->second->ListenForConnectionStateChange(connection, state_changed_cb); 534 it->second->ListenForConnectionStateChange(connection, state_changed_cb);
532 } 535 }
533 536
534 void PresentationFrameManager::ListenForSessionMessages( 537 void PresentationFrameManager::ListenForSessionMessages(
535 const RenderFrameHostId& render_frame_host_id, 538 const RenderFrameHostId& render_frame_host_id,
536 const content::PresentationSessionInfo& session, 539 const content::PresentationSessionInfo& session,
537 const content::PresentationSessionMessageCallback& message_cb) { 540 const content::PresentationConnectionMessageCallback& message_cb) {
538 const auto it = presentation_frames_.find(render_frame_host_id); 541 const auto it = presentation_frames_.find(render_frame_host_id);
539 if (it == presentation_frames_.end()) { 542 if (it == presentation_frames_.end()) {
540 DVLOG(2) << "ListenForSessionMessages: PresentationFrame does not exist " 543 DVLOG(2) << "ListenForSessionMessages: PresentationFrame does not exist "
541 << "for: (" << render_frame_host_id.first << ", " 544 << "for: (" << render_frame_host_id.first << ", "
542 << render_frame_host_id.second << ")"; 545 << render_frame_host_id.second << ")";
543 return; 546 return;
544 } 547 }
545 it->second->ListenForSessionMessages(session, message_cb); 548 it->second->ListenForSessionMessages(session, message_cb);
546 } 549 }
547 550
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 const MediaRoute::Id& route_id = 877 const MediaRoute::Id& route_id =
875 frame_manager_->GetRouteId(rfh_id, presentation_id); 878 frame_manager_->GetRouteId(rfh_id, presentation_id);
876 if (route_id.empty()) { 879 if (route_id.empty()) {
877 DVLOG(1) << "No active route for: " << presentation_id; 880 DVLOG(1) << "No active route for: " << presentation_id;
878 return; 881 return;
879 } 882 }
880 router_->TerminateRoute(route_id); 883 router_->TerminateRoute(route_id);
881 frame_manager_->RemoveConnection(rfh_id, presentation_id, route_id); 884 frame_manager_->RemoveConnection(rfh_id, presentation_id, route_id);
882 } 885 }
883 886
884 void PresentationServiceDelegateImpl::ListenForSessionMessages( 887 void PresentationServiceDelegateImpl::ListenForConnectionMessages(
885 int render_process_id, 888 int render_process_id,
886 int render_frame_id, 889 int render_frame_id,
887 const content::PresentationSessionInfo& session, 890 const content::PresentationSessionInfo& session,
888 const content::PresentationSessionMessageCallback& message_cb) { 891 const content::PresentationConnectionMessageCallback& message_cb) {
889 frame_manager_->ListenForSessionMessages( 892 frame_manager_->ListenForSessionMessages(
890 RenderFrameHostId(render_process_id, render_frame_id), session, 893 RenderFrameHostId(render_process_id, render_frame_id), session,
891 message_cb); 894 message_cb);
892 } 895 }
893 896
894 void PresentationServiceDelegateImpl::SendMessage( 897 void PresentationServiceDelegateImpl::SendMessage(
895 int render_process_id, 898 int render_process_id,
896 int render_frame_id, 899 int render_frame_id,
897 const content::PresentationSessionInfo& session, 900 const content::PresentationSessionInfo& session,
898 std::unique_ptr<content::PresentationSessionMessage> message, 901 std::unique_ptr<content::PresentationConnectionMessage> message,
899 const SendMessageCallback& send_message_cb) { 902 const SendMessageCallback& send_message_cb) {
900 const MediaRoute::Id& route_id = frame_manager_->GetRouteId( 903 const MediaRoute::Id& route_id = frame_manager_->GetRouteId(
901 RenderFrameHostId(render_process_id, render_frame_id), 904 RenderFrameHostId(render_process_id, render_frame_id),
902 session.presentation_id); 905 session.presentation_id);
903 if (route_id.empty()) { 906 if (route_id.empty()) {
904 DVLOG(1) << "No active route for " << session.presentation_id; 907 DVLOG(1) << "No active route for " << session.presentation_id;
905 send_message_cb.Run(false); 908 send_message_cb.Run(false);
906 return; 909 return;
907 } 910 }
908 911
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest( 974 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest(
972 int render_process_id, 975 int render_process_id,
973 int render_frame_id, 976 int render_frame_id,
974 const MediaSource::Id& source_id) const { 977 const MediaSource::Id& source_id) const {
975 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); 978 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id);
976 return frame_manager_->HasScreenAvailabilityListenerForTest( 979 return frame_manager_->HasScreenAvailabilityListenerForTest(
977 render_frame_host_id, source_id); 980 render_frame_host_id, source_id);
978 } 981 }
979 982
980 } // namespace media_router 983 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698