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

Unified Diff: chrome/browser/media/cast_remoting_connector.cc

Issue 2947403004: [MediaRouter] Replace RouteMessage with PresentationConnectionMessage (Closed)
Patch Set: Addressed Takumi's comments 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/cast_remoting_connector.cc
diff --git a/chrome/browser/media/cast_remoting_connector.cc b/chrome/browser/media/cast_remoting_connector.cc
index b419c46ca9a9b0f2ce4d1d8356d1ecc58357bc38..6babb0708d1befb36f6a362701b1ac551e69a813 100644
--- a/chrome/browser/media/cast_remoting_connector.cc
+++ b/chrome/browser/media/cast_remoting_connector.cc
@@ -18,7 +18,6 @@
#include "chrome/browser/sessions/session_tab_helper.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/media_router/media_source_helper.h"
-#include "chrome/common/media_router/route_message.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
@@ -123,7 +122,8 @@ class CastRemotingConnector::MessageObserver
private:
void OnMessagesReceived(
- const std::vector<media_router::RouteMessage>& messages) final {
+ const std::vector<content::PresentationConnectionMessage>& messages)
+ final {
connector_->ProcessMessagesFromRoute(messages);
}
@@ -365,92 +365,79 @@ void CastRemotingConnector::SendMessageToProvider(const std::string& message) {
}
void CastRemotingConnector::ProcessMessagesFromRoute(
- const std::vector<media_router::RouteMessage>& messages) {
+ const std::vector<content::PresentationConnectionMessage>& messages) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// Note: If any calls to message parsing functions are added/changed here,
// please update cast_remoting_connector_fuzzertest.cc as well!
- for (const media_router::RouteMessage& message : messages) {
- switch (message.type) {
- case media_router::RouteMessage::TEXT:
- // This is a notification message from the Cast Provider, about the
- // execution state of the media remoting session between Chrome and the
- // remote device.
- DCHECK(message.text);
-
- // If this is a "start streams" acknowledgement message, the
- // CastRemotingSenders should now be available to begin consuming from
- // the data pipes.
- if (active_bridge_ &&
- Messaging::IsMessageForSession(
- *message.text,
- Messaging::kStartedStreamsMessageFormatPartial,
- session_counter_)) {
- if (pending_audio_sender_request_.is_pending()) {
- cast::CastRemotingSender::FindAndBind(
- Messaging::GetStreamIdFromStartedMessage(
- *message.text,
- Messaging::kStartedStreamsMessageAudioIdSpecifier),
- std::move(pending_audio_pipe_),
- std::move(pending_audio_sender_request_),
- base::Bind(&CastRemotingConnector::OnDataSendFailed,
- weak_factory_.GetWeakPtr()));
- }
- if (pending_video_sender_request_.is_pending()) {
- cast::CastRemotingSender::FindAndBind(
- Messaging::GetStreamIdFromStartedMessage(
- *message.text,
- Messaging::kStartedStreamsMessageVideoIdSpecifier),
- std::move(pending_video_pipe_),
- std::move(pending_video_sender_request_),
- base::Bind(&CastRemotingConnector::OnDataSendFailed,
- weak_factory_.GetWeakPtr()));
- }
- break;
- }
-
- // If this is a failure message, call StopRemoting().
- if (active_bridge_ &&
- Messaging::IsMessageForSession(*message.text,
- Messaging::kFailedMessageFormat,
- session_counter_)) {
- StopRemoting(active_bridge_, RemotingStopReason::UNEXPECTED_FAILURE);
- break;
- }
-
- // If this is a stop acknowledgement message, indicating that the last
- // session was stopped, notify all sources that the sink is once again
- // available.
- if (Messaging::IsMessageForSession(*message.text,
- Messaging::kStoppedMessageFormat,
- session_counter_)) {
- if (active_bridge_) {
- // Hmm...The Cast Provider was in a state that disagrees with this
- // connector. Attempt to resolve this by shutting everything down to
- // effectively reset to a known state.
- LOG(WARNING) << "BUG: Cast Provider sent 'stopped' message during "
- "an active remoting session.";
- StopRemoting(active_bridge_,
- RemotingStopReason::UNEXPECTED_FAILURE);
- }
- for (RemotingBridge* notifyee : bridges_)
- notifyee->OnSinkAvailable(enabled_features_);
- break;
- }
-
- LOG(WARNING) << "BUG: Unexpected message from Cast Provider: "
- << *message.text;
- break;
-
- case media_router::RouteMessage::BINARY: // This is for the source.
- DCHECK(message.binary);
-
- // All binary messages are passed through to the source during an active
- // remoting session.
- if (active_bridge_)
- active_bridge_->OnMessageFromSink(*message.binary);
- break;
+ for (const auto& message : messages) {
+ if (message.data) {
mark a. foltz 2017/06/28 07:29:54 message.is_binary()
imcheng 2017/06/29 08:21:08 Done.
+ // All binary messages are passed through to the source during an active
+ // remoting session.
+ if (active_bridge_)
+ active_bridge_->OnMessageFromSink(*message.data);
+
+ continue;
+ }
+
+ DCHECK(message.message);
mark a. foltz 2017/06/28 07:29:53 If is_binary && !active_bridge_ then this DCHECK w
imcheng 2017/06/29 08:21:08 If is_binary is true then we won't reach here due
+ // This is a notification message from the Cast Provider, about the
+ // execution state of the media remoting session between Chrome and the
+ // remote device.
+
+ // If this is a "start streams" acknowledgement message, the
+ // CastRemotingSenders should now be available to begin consuming from
+ // the data pipes.
+ if (active_bridge_ &&
mark a. foltz 2017/06/28 07:29:54 This might be easier to follow if there was an ear
imcheng 2017/06/29 08:21:08 That might be a bit challenging to extract since t
+ Messaging::IsMessageForSession(
+ *message.message, Messaging::kStartedStreamsMessageFormatPartial,
+ session_counter_)) {
+ if (pending_audio_sender_request_.is_pending()) {
+ cast::CastRemotingSender::FindAndBind(
+ Messaging::GetStreamIdFromStartedMessage(
+ *message.message,
+ Messaging::kStartedStreamsMessageAudioIdSpecifier),
+ std::move(pending_audio_pipe_),
+ std::move(pending_audio_sender_request_),
+ base::Bind(&CastRemotingConnector::OnDataSendFailed,
+ weak_factory_.GetWeakPtr()));
+ }
+ if (pending_video_sender_request_.is_pending()) {
+ cast::CastRemotingSender::FindAndBind(
+ Messaging::GetStreamIdFromStartedMessage(
+ *message.message,
+ Messaging::kStartedStreamsMessageVideoIdSpecifier),
+ std::move(pending_video_pipe_),
+ std::move(pending_video_sender_request_),
+ base::Bind(&CastRemotingConnector::OnDataSendFailed,
+ weak_factory_.GetWeakPtr()));
+ }
+ } else if (active_bridge_ &&
+ Messaging::IsMessageForSession(*message.message,
+ Messaging::kFailedMessageFormat,
+ session_counter_)) {
+ // If this is a failure message, call StopRemoting().
+ StopRemoting(active_bridge_, RemotingStopReason::UNEXPECTED_FAILURE);
+ } else if (Messaging::IsMessageForSession(*message.message,
+ Messaging::kStoppedMessageFormat,
+ session_counter_)) {
+ // If this is a stop acknowledgement message, indicating that the last
+ // session was stopped, notify all sources that the sink is once again
+ // available.
+ if (active_bridge_) {
+ // Hmm...The Cast Provider was in a state that disagrees with this
+ // connector. Attempt to resolve this by shutting everything down to
+ // effectively reset to a known state.
+ LOG(WARNING) << "BUG: Cast Provider sent 'stopped' message during "
+ "an active remoting session.";
+ StopRemoting(active_bridge_, RemotingStopReason::UNEXPECTED_FAILURE);
+ }
+ for (RemotingBridge* notifyee : bridges_)
+ notifyee->OnSinkAvailable(enabled_features_);
+ } else {
+ LOG(WARNING) << "BUG: Unexpected message from Cast Provider: "
+ << *message.message;
}
}
}

Powered by Google App Engine
This is Rietveld 408576698