Index: chrome/browser/ui/webui/media_router/media_router_webui_message_handler.cc |
diff --git a/chrome/browser/ui/webui/media_router/media_router_webui_message_handler.cc b/chrome/browser/ui/webui/media_router/media_router_webui_message_handler.cc |
index 3ffe291cb00ca5b0714dbec46f5577e8cef00204..623d81b066a128ea9f233e63d60f77e4ad8034f9 100644 |
--- a/chrome/browser/ui/webui/media_router/media_router_webui_message_handler.cc |
+++ b/chrome/browser/ui/webui/media_router/media_router_webui_message_handler.cc |
@@ -62,6 +62,13 @@ const char kReportTimeToClickSink[] = "reportTimeToClickSink"; |
const char kReportTimeToInitialActionClose[] = "reportTimeToInitialActionClose"; |
const char kSearchSinksAndCreateRoute[] = "searchSinksAndCreateRoute"; |
const char kOnInitialDataReceived[] = "onInitialDataReceived"; |
+const char kOnRouteDetailsClosed[] = "onRouteDetailsClosed"; |
+const char kOnRouteDetailsOpened[] = "onRouteDetailsOpened"; |
+const char kPauseRoute[] = "pauseRoute"; |
+const char kPlayRoute[] = "playRoute"; |
+const char kSeekRoute[] = "seekRoute"; |
+const char kSetRouteMute[] = "setRouteMute"; |
+const char kSetRouteVolume[] = "setRouteVolume"; |
// JS function names. |
const char kSetInitialData[] = "media_router.ui.setInitialData"; |
@@ -74,6 +81,7 @@ const char kSetSinkListAndIdentity[] = "media_router.ui.setSinkListAndIdentity"; |
const char kSetRouteList[] = "media_router.ui.setRouteList"; |
const char kSetCastModeList[] = "media_router.ui.setCastModeList"; |
const char kUpdateMaxHeight[] = "media_router.ui.updateMaxHeight"; |
+const char kUpdateRouteStatus[] = "media_router.ui.updateRouteStatus"; |
const char kWindowOpen[] = "window.open"; |
std::unique_ptr<base::DictionaryValue> SinksAndIdentityToValue( |
@@ -316,6 +324,24 @@ void MediaRouterWebUIMessageHandler::UpdateMaxDialogHeight(int height) { |
base::FundamentalValue(height)); |
} |
+void MediaRouterWebUIMessageHandler::UpdateMediaRouteStatus( |
+ const MediaStatus& status) { |
+ base::DictionaryValue status_value; |
+ status_value.SetString("title", status.title); |
+ status_value.SetString("status", status.status); |
+ status_value.SetBoolean("canPlayPause", status.can_play_pause); |
+ status_value.SetBoolean("canMute", status.can_mute); |
+ status_value.SetBoolean("canSetVolume", status.can_set_volume); |
+ status_value.SetBoolean("canSeek", status.can_seek); |
+ status_value.SetBoolean("isPaused", status.is_paused); |
+ status_value.SetBoolean("isMuted", status.is_muted); |
+ status_value.SetInteger("duration", status.duration); |
+ status_value.SetInteger("currentTime", status.current_time); |
+ status_value.SetDouble("volume", status.volume); |
+ web_ui()->CallJavascriptFunctionUnsafe(kUpdateRouteStatus, |
+ std::move(status_value)); |
+} |
+ |
void MediaRouterWebUIMessageHandler::RegisterMessages() { |
web_ui()->RegisterMessageCallback( |
kRequestInitialData, |
@@ -402,6 +428,34 @@ void MediaRouterWebUIMessageHandler::RegisterMessages() { |
kOnInitialDataReceived, |
base::Bind(&MediaRouterWebUIMessageHandler::OnInitialDataReceived, |
base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kOnRouteDetailsClosed, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnRouteDetailsClosed, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kOnRouteDetailsOpened, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnRouteDetailsOpened, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kPauseRoute, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnPauseRoute, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kPlayRoute, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnPlayRoute, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kSeekRoute, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnSeekRoute, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kSetRouteMute, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnSetRouteMute, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback( |
+ kSetRouteVolume, |
+ base::Bind(&MediaRouterWebUIMessageHandler::OnSetRouteVolume, |
+ base::Unretained(this))); |
} |
void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
@@ -791,6 +845,66 @@ void MediaRouterWebUIMessageHandler::OnInitialDataReceived( |
MaybeUpdateFirstRunFlowData(); |
} |
+void MediaRouterWebUIMessageHandler::OnRouteDetailsClosed( |
+ const base::ListValue* args) { |
+ media_router_ui_->OnUIDetailsViewClosed(); |
+} |
+ |
+void MediaRouterWebUIMessageHandler::OnRouteDetailsOpened( |
+ const base::ListValue* args) { |
+ const base::DictionaryValue* args_dict = nullptr; |
+ std::string route_id; |
+ if (!args->GetDictionary(0, &args_dict) || |
+ !args_dict->GetString("routeId", &route_id)) { |
+ DVLOG(1) << "Unable to extract media route ID"; |
+ return; |
+ } |
+ media_router_ui_->OnUIDetailsViewOpened(route_id); |
+} |
+ |
+void MediaRouterWebUIMessageHandler::OnPauseRoute(const base::ListValue* args) { |
+ media_router_ui_->PauseRoute(); |
+} |
+ |
+void MediaRouterWebUIMessageHandler::OnPlayRoute(const base::ListValue* args) { |
+ media_router_ui_->PlayRoute(); |
+} |
+ |
+void MediaRouterWebUIMessageHandler::OnSeekRoute(const base::ListValue* args) { |
+ const base::DictionaryValue* args_dict = nullptr; |
+ double time; |
+ if (!args->GetDictionary(0, &args_dict) || |
+ !args_dict->GetDouble("time", &time)) { |
+ DVLOG(1) << "Unable to extract time"; |
+ return; |
+ } |
+ media_router_ui_->SeekRoute(time); |
+} |
+ |
+void MediaRouterWebUIMessageHandler::OnSetRouteMute( |
+ const base::ListValue* args) { |
+ const base::DictionaryValue* args_dict = nullptr; |
+ bool mute; |
+ if (!args->GetDictionary(0, &args_dict) || |
+ !args_dict->GetBoolean("mute", &mute)) { |
+ DVLOG(1) << "Unable to extract mute"; |
+ return; |
+ } |
+ media_router_ui_->SetRouteMute(mute); |
+} |
+ |
+void MediaRouterWebUIMessageHandler::OnSetRouteVolume( |
+ const base::ListValue* args) { |
+ const base::DictionaryValue* args_dict = nullptr; |
+ double volume; |
+ if (!args->GetDictionary(0, &args_dict) || |
+ !args_dict->GetDouble("volume", &volume)) { |
+ DVLOG(1) << "Unable to extract volume"; |
+ return; |
+ } |
+ media_router_ui_->SetRouteVolume(volume); |
+} |
+ |
bool MediaRouterWebUIMessageHandler::ActOnIssueType( |
IssueInfo::Action action_type, |
const base::DictionaryValue* args) { |