Chromium Code Reviews| 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 1e22dd81652226a9da6b7aee4cf05b898a4ac8c9..62731d077c6153956d07c8a82a1af00267919445 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 |
| @@ -21,7 +21,7 @@ |
| #include "chrome/browser/sync/profile_sync_service_factory.h" |
| #include "chrome/browser/ui/webui/media_router/media_cast_mode.h" |
| #include "chrome/browser/ui/webui/media_router/media_router_ui.h" |
| -#include "chrome/common/media_router/issue.h" |
| +#include "chrome/common/chrome_features.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "components/browser_sync/profile_sync_service.h" |
| @@ -62,11 +62,20 @@ const char kReportTimeToClickSink[] = "reportTimeToClickSink"; |
| const char kReportTimeToInitialActionClose[] = "reportTimeToInitialActionClose"; |
| const char kSearchSinksAndCreateRoute[] = "searchSinksAndCreateRoute"; |
| const char kOnInitialDataReceived[] = "onInitialDataReceived"; |
| +const char kOnRouteDetailsClosed[] = "onRouteDetailsClosed"; |
|
mark a. foltz
2017/04/26 21:01:19
onMediaControllerAvailable
takumif
2017/04/27 03:04:18
Done.
|
| +const char kOnRouteDetailsOpened[] = "onRouteDetailsOpened"; |
|
mark a. foltz
2017/04/26 21:01:18
OnMediaControllerClosed
takumif
2017/04/27 03:04:18
Done.
|
| +const char kPauseRoute[] = "pauseRoute"; |
|
mark a. foltz
2017/04/26 21:01:19
Prefer pauseCurrentMedia, playCurrentMedia, etc.
takumif
2017/04/27 03:04:17
Done.
|
| +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"; |
| const char kOnCreateRouteResponseReceived[] = |
| "media_router.ui.onCreateRouteResponseReceived"; |
| +const char kOnRouteControllerInvalidated[] = |
| + "media_router.ui.onRouteControllerInvalidated"; |
| const char kReceiveSearchResult[] = "media_router.ui.receiveSearchResult"; |
| const char kSetFirstRunFlowData[] = "media_router.ui.setFirstRunFlowData"; |
| const char kSetIssue[] = "media_router.ui.setIssue"; |
| @@ -74,6 +83,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( |
| @@ -314,6 +324,28 @@ void MediaRouterWebUIMessageHandler::UpdateMaxDialogHeight(int height) { |
| web_ui()->CallJavascriptFunctionUnsafe(kUpdateMaxHeight, base::Value(height)); |
| } |
| +void MediaRouterWebUIMessageHandler::UpdateMediaRouteStatus( |
| + const MediaStatus& status) { |
| + base::DictionaryValue status_value; |
| + status_value.SetString("title", status.title); |
| + status_value.SetString("description", status.description); |
| + 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.InSeconds()); |
| + status_value.SetInteger("currentTime", status.current_time.InSeconds()); |
| + status_value.SetDouble("volume", status.volume); |
| + web_ui()->CallJavascriptFunctionUnsafe(kUpdateRouteStatus, |
| + std::move(status_value)); |
|
mark a. foltz
2017/04/26 21:01:19
imcheng@: What did we conclude about migrating Web
imcheng
2017/04/26 21:48:39
We can migrate to Mojo, but just weren't sure how
|
| +} |
| + |
| +void MediaRouterWebUIMessageHandler::OnRouteControllerInvalidated() { |
| + web_ui()->CallJavascriptFunctionUnsafe(kOnRouteControllerInvalidated); |
| +} |
| + |
| void MediaRouterWebUIMessageHandler::RegisterMessages() { |
| web_ui()->RegisterMessageCallback( |
| kRequestInitialData, |
| @@ -400,6 +432,30 @@ 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( |
| @@ -434,6 +490,10 @@ void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
| media_router_ui_->UserSelectedTabMirroringForCurrentOrigin(); |
| initial_data.SetBoolean("useTabMirroring", use_tab_mirroring); |
| + initial_data.SetBoolean( |
| + "useNewRouteControls", |
| + base::FeatureList::IsEnabled(features::kMediaRouterUIRouteController)); |
| + |
| web_ui()->CallJavascriptFunctionUnsafe(kSetInitialData, initial_data); |
| media_router_ui_->UIInitialized(); |
| } |
| @@ -789,6 +849,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; |
| + int time; |
| + if (!args->GetDictionary(0, &args_dict) || |
| + !args_dict->GetInteger("time", &time)) { |
| + DVLOG(1) << "Unable to extract time"; |
| + return; |
| + } |
| + media_router_ui_->SeekRoute(base::TimeDelta::FromSeconds(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) { |