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

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

Issue 2562603002: Updates SessionMessage to ConnectionMessage. (Closed)
Patch Set: More edits to test. 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 // Observes messages originating from the MediaSink connected to a MediaRoute 75 // Observes messages originating from the MediaSink connected to a MediaRoute
76 // that represents a presentation. Converts the messages into 76 // that represents a presentation. Converts the messages into
77 // content::PresentationSessionMessages and dispatches them via the provided 77 // content::PresentationSessionMessages and dispatches them via the provided
78 // PresentationSessionMessageCallback. 78 // PresentationSessionMessageCallback.
79 class PresentationSessionMessagesObserver : public RouteMessageObserver { 79 class PresentationSessionMessagesObserver : public RouteMessageObserver {
80 public: 80 public:
81 // |message_cb|: The callback to invoke whenever messages are received. 81 // |message_cb|: The callback to invoke whenever messages are received.
82 // |route_id|: ID of MediaRoute to listen for messages. 82 // |route_id|: ID of MediaRoute to listen for messages.
83 PresentationSessionMessagesObserver( 83 PresentationSessionMessagesObserver(
84 MediaRouter* router, const MediaRoute::Id& route_id, 84 MediaRouter* router,
85 const content::PresentationSessionMessageCallback& message_cb) 85 const MediaRoute::Id& route_id,
86 const content::PresentationConnectionMessageCallback& message_cb)
86 : RouteMessageObserver(router, route_id), message_cb_(message_cb) { 87 : RouteMessageObserver(router, route_id), message_cb_(message_cb) {
87 DCHECK(!message_cb_.is_null()); 88 DCHECK(!message_cb_.is_null());
88 } 89 }
89 90
90 ~PresentationSessionMessagesObserver() final {} 91 ~PresentationSessionMessagesObserver() final {}
91 92
92 void OnMessagesReceived(const std::vector<RouteMessage>& messages) final { 93 void OnMessagesReceived(const std::vector<RouteMessage>& messages) final {
93 DVLOG(2) << __func__ << ", number of messages : " << messages.size(); 94 DVLOG(2) << __func__ << ", number of messages : " << messages.size();
94 ScopedVector<content::PresentationSessionMessage> presentation_messages; 95 ScopedVector<content::PresentationConnectionMessage> presentation_messages;
95 for (const RouteMessage& message : messages) { 96 for (const RouteMessage& message : messages) {
96 if (message.type == RouteMessage::TEXT && message.text) { 97 if (message.type == RouteMessage::TEXT && message.text) {
97 presentation_messages.push_back(new content::PresentationSessionMessage( 98 presentation_messages.push_back(
98 content::PresentationMessageType::TEXT)); 99 new content::PresentationConnectionMessage(
100 content::PresentationMessageType::TEXT));
99 presentation_messages.back()->message = *message.text; 101 presentation_messages.back()->message = *message.text;
100 } else if (message.type == RouteMessage::BINARY && message.binary) { 102 } else if (message.type == RouteMessage::BINARY && message.binary) {
101 presentation_messages.push_back(new content::PresentationSessionMessage( 103 presentation_messages.push_back(
102 content::PresentationMessageType::ARRAY_BUFFER)); 104 new content::PresentationConnectionMessage(
105 content::PresentationMessageType::BINARY));
103 presentation_messages.back()->data.reset( 106 presentation_messages.back()->data.reset(
104 new std::vector<uint8_t>(*message.binary)); 107 new std::vector<uint8_t>(*message.binary));
105 } 108 }
106 } 109 }
107 // TODO(miu): Remove second argument from PresentationSessionMessageCallback 110 // TODO(miu): Remove second argument from PresentationSessionMessageCallback
108 // since it's always true now. 111 // since it's always true now.
109 message_cb_.Run(presentation_messages, true); 112 message_cb_.Run(presentation_messages, true);
110 } 113 }
111 114
112 private: 115 private:
113 const content::PresentationSessionMessageCallback message_cb_; 116 const content::PresentationConnectionMessageCallback message_cb_;
114 117
115 DISALLOW_COPY_AND_ASSIGN(PresentationSessionMessagesObserver); 118 DISALLOW_COPY_AND_ASSIGN(PresentationSessionMessagesObserver);
116 }; 119 };
117 120
118 } // namespace 121 } // namespace
119 122
120 // Used by PresentationServiceDelegateImpl to manage 123 // Used by PresentationServiceDelegateImpl to manage
121 // listeners and default presentation info in a render frame. 124 // listeners and default presentation info in a render frame.
122 // Its lifetime: 125 // Its lifetime:
123 // * PresentationFrameManager AddDelegateObserver 126 // * PresentationFrameManager AddDelegateObserver
(...skipping 13 matching lines...) Expand all
137 content::PresentationScreenAvailabilityListener* listener); 140 content::PresentationScreenAvailabilityListener* listener);
138 bool HasScreenAvailabilityListenerForTest( 141 bool HasScreenAvailabilityListenerForTest(
139 const MediaSource::Id& source_id) const; 142 const MediaSource::Id& source_id) const;
140 std::string GetDefaultPresentationId() const; 143 std::string GetDefaultPresentationId() const;
141 void ListenForConnectionStateChange( 144 void ListenForConnectionStateChange(
142 const content::PresentationSessionInfo& connection, 145 const content::PresentationSessionInfo& connection,
143 const content::PresentationConnectionStateChangedCallback& 146 const content::PresentationConnectionStateChangedCallback&
144 state_changed_cb); 147 state_changed_cb);
145 void ListenForSessionMessages( 148 void ListenForSessionMessages(
146 const content::PresentationSessionInfo& session, 149 const content::PresentationSessionInfo& session,
147 const content::PresentationSessionMessageCallback& message_cb); 150 const content::PresentationConnectionMessageCallback& message_cb);
148 151
149 void Reset(); 152 void Reset();
150 void RemoveConnection(const std::string& presentation_id, 153 void RemoveConnection(const std::string& presentation_id,
151 const MediaRoute::Id& route_id); 154 const MediaRoute::Id& route_id);
152 155
153 const MediaRoute::Id GetRouteId(const std::string& presentation_id) const; 156 const MediaRoute::Id GetRouteId(const std::string& presentation_id) const;
154 const std::vector<MediaRoute::Id> GetRouteIds() const; 157 const std::vector<MediaRoute::Id> GetRouteIds() const;
155 158
156 void OnPresentationSessionStarted( 159 void OnPresentationSessionStarted(
157 const content::PresentationSessionInfo& session, 160 const content::PresentationSessionInfo& session,
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 return; 311 return;
309 } 312 }
310 313
311 connection_state_subscriptions_.insert(std::make_pair( 314 connection_state_subscriptions_.insert(std::make_pair(
312 route_id, router_->AddPresentationConnectionStateChangedCallback( 315 route_id, router_->AddPresentationConnectionStateChangedCallback(
313 it->second, state_changed_cb))); 316 it->second, state_changed_cb)));
314 } 317 }
315 318
316 void PresentationFrame::ListenForSessionMessages( 319 void PresentationFrame::ListenForSessionMessages(
317 const content::PresentationSessionInfo& session, 320 const content::PresentationSessionInfo& session,
318 const content::PresentationSessionMessageCallback& message_cb) { 321 const content::PresentationConnectionMessageCallback& message_cb) {
319 auto it = presentation_id_to_route_id_.find(session.presentation_id); 322 auto it = presentation_id_to_route_id_.find(session.presentation_id);
320 if (it == presentation_id_to_route_id_.end()) { 323 if (it == presentation_id_to_route_id_.end()) {
321 DVLOG(2) << "ListenForSessionMessages: no route for " 324 DVLOG(2) << "ListenForSessionMessages: no route for "
322 << session.presentation_id; 325 << session.presentation_id;
323 return; 326 return;
324 } 327 }
325 328
326 const MediaRoute::Id& route_id = it->second; 329 const MediaRoute::Id& route_id = it->second;
327 if (session_messages_observers_.find(route_id) != 330 if (session_messages_observers_.find(route_id) !=
328 session_messages_observers_.end()) { 331 session_messages_observers_.end()) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 const RenderFrameHostId& render_frame_host_id, 363 const RenderFrameHostId& render_frame_host_id,
361 content::PresentationScreenAvailabilityListener* listener); 364 content::PresentationScreenAvailabilityListener* listener);
362 void ListenForConnectionStateChange( 365 void ListenForConnectionStateChange(
363 const RenderFrameHostId& render_frame_host_id, 366 const RenderFrameHostId& render_frame_host_id,
364 const content::PresentationSessionInfo& connection, 367 const content::PresentationSessionInfo& connection,
365 const content::PresentationConnectionStateChangedCallback& 368 const content::PresentationConnectionStateChangedCallback&
366 state_changed_cb); 369 state_changed_cb);
367 void ListenForSessionMessages( 370 void ListenForSessionMessages(
368 const RenderFrameHostId& render_frame_host_id, 371 const RenderFrameHostId& render_frame_host_id,
369 const content::PresentationSessionInfo& session, 372 const content::PresentationSessionInfo& session,
370 const content::PresentationSessionMessageCallback& message_cb); 373 const content::PresentationConnectionMessageCallback& message_cb);
371 374
372 // Sets or clears the default presentation request and callback for the given 375 // Sets or clears the default presentation request and callback for the given
373 // frame. Also sets / clears the default presentation requests for the owning 376 // frame. Also sets / clears the default presentation requests for the owning
374 // tab WebContents. 377 // tab WebContents.
375 void SetDefaultPresentationUrls( 378 void SetDefaultPresentationUrls(
376 const RenderFrameHostId& render_frame_host_id, 379 const RenderFrameHostId& render_frame_host_id,
377 const std::vector<GURL>& default_presentation_urls, 380 const std::vector<GURL>& default_presentation_urls,
378 const content::PresentationSessionStartedCallback& callback); 381 const content::PresentationSessionStartedCallback& callback);
379 void AddDelegateObserver(const RenderFrameHostId& render_frame_host_id, 382 void AddDelegateObserver(const RenderFrameHostId& render_frame_host_id,
380 DelegateObserver* observer); 383 DelegateObserver* observer);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 const content::PresentationConnectionStateChangedCallback& 536 const content::PresentationConnectionStateChangedCallback&
534 state_changed_cb) { 537 state_changed_cb) {
535 const auto it = presentation_frames_.find(render_frame_host_id); 538 const auto it = presentation_frames_.find(render_frame_host_id);
536 if (it != presentation_frames_.end()) 539 if (it != presentation_frames_.end())
537 it->second->ListenForConnectionStateChange(connection, state_changed_cb); 540 it->second->ListenForConnectionStateChange(connection, state_changed_cb);
538 } 541 }
539 542
540 void PresentationFrameManager::ListenForSessionMessages( 543 void PresentationFrameManager::ListenForSessionMessages(
541 const RenderFrameHostId& render_frame_host_id, 544 const RenderFrameHostId& render_frame_host_id,
542 const content::PresentationSessionInfo& session, 545 const content::PresentationSessionInfo& session,
543 const content::PresentationSessionMessageCallback& message_cb) { 546 const content::PresentationConnectionMessageCallback& message_cb) {
544 const auto it = presentation_frames_.find(render_frame_host_id); 547 const auto it = presentation_frames_.find(render_frame_host_id);
545 if (it == presentation_frames_.end()) { 548 if (it == presentation_frames_.end()) {
546 DVLOG(2) << "ListenForSessionMessages: PresentationFrame does not exist " 549 DVLOG(2) << "ListenForSessionMessages: PresentationFrame does not exist "
547 << "for: (" << render_frame_host_id.first << ", " 550 << "for: (" << render_frame_host_id.first << ", "
548 << render_frame_host_id.second << ")"; 551 << render_frame_host_id.second << ")";
549 return; 552 return;
550 } 553 }
551 it->second->ListenForSessionMessages(session, message_cb); 554 it->second->ListenForSessionMessages(session, message_cb);
552 } 555 }
553 556
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 const MediaRoute::Id& route_id = 890 const MediaRoute::Id& route_id =
888 frame_manager_->GetRouteId(rfh_id, presentation_id); 891 frame_manager_->GetRouteId(rfh_id, presentation_id);
889 if (route_id.empty()) { 892 if (route_id.empty()) {
890 DVLOG(1) << "No active route for: " << presentation_id; 893 DVLOG(1) << "No active route for: " << presentation_id;
891 return; 894 return;
892 } 895 }
893 router_->TerminateRoute(route_id); 896 router_->TerminateRoute(route_id);
894 frame_manager_->RemoveConnection(rfh_id, presentation_id, route_id); 897 frame_manager_->RemoveConnection(rfh_id, presentation_id, route_id);
895 } 898 }
896 899
897 void PresentationServiceDelegateImpl::ListenForSessionMessages( 900 void PresentationServiceDelegateImpl::ListenForConnectionMessages(
898 int render_process_id, 901 int render_process_id,
899 int render_frame_id, 902 int render_frame_id,
900 const content::PresentationSessionInfo& session, 903 const content::PresentationSessionInfo& session,
901 const content::PresentationSessionMessageCallback& message_cb) { 904 const content::PresentationConnectionMessageCallback& message_cb) {
902 frame_manager_->ListenForSessionMessages( 905 frame_manager_->ListenForSessionMessages(
903 RenderFrameHostId(render_process_id, render_frame_id), session, 906 RenderFrameHostId(render_process_id, render_frame_id), session,
904 message_cb); 907 message_cb);
905 } 908 }
906 909
907 void PresentationServiceDelegateImpl::SendMessage( 910 void PresentationServiceDelegateImpl::SendMessage(
908 int render_process_id, 911 int render_process_id,
909 int render_frame_id, 912 int render_frame_id,
910 const content::PresentationSessionInfo& session, 913 const content::PresentationSessionInfo& session,
911 std::unique_ptr<content::PresentationSessionMessage> message, 914 std::unique_ptr<content::PresentationConnectionMessage> message,
912 const SendMessageCallback& send_message_cb) { 915 const SendMessageCallback& send_message_cb) {
913 const MediaRoute::Id& route_id = frame_manager_->GetRouteId( 916 const MediaRoute::Id& route_id = frame_manager_->GetRouteId(
914 RenderFrameHostId(render_process_id, render_frame_id), 917 RenderFrameHostId(render_process_id, render_frame_id),
915 session.presentation_id); 918 session.presentation_id);
916 if (route_id.empty()) { 919 if (route_id.empty()) {
917 DVLOG(1) << "No active route for " << session.presentation_id; 920 DVLOG(1) << "No active route for " << session.presentation_id;
918 send_message_cb.Run(false); 921 send_message_cb.Run(false);
919 return; 922 return;
920 } 923 }
921 924
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 const base::ListValue* origins = 1002 const base::ListValue* origins =
1000 Profile::FromBrowserContext(web_contents_->GetBrowserContext()) 1003 Profile::FromBrowserContext(web_contents_->GetBrowserContext())
1001 ->GetPrefs() 1004 ->GetPrefs()
1002 ->GetList(prefs::kMediaRouterTabMirroringSources); 1005 ->GetList(prefs::kMediaRouterTabMirroringSources);
1003 return origins && 1006 return origins &&
1004 origins->Find(base::StringValue(origin.Serialize())) != origins->end(); 1007 origins->Find(base::StringValue(origin.Serialize())) != origins->end();
1005 } 1008 }
1006 #endif // !defined(OS_ANDROID) 1009 #endif // !defined(OS_ANDROID)
1007 1010
1008 } // namespace media_router 1011 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698