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 512ae99f8fa9edd70c009c6c17a91333ea5fad5c..94ea230495b54d906c63454d4e50f471d5b5fc24 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 |
| @@ -26,7 +26,8 @@ const char kCloseDialog[] = "closeDialog"; |
| // JS function names. |
| const char kSetInitialData[] = "media_router.ui.setInitialData"; |
| -const char kAddRoute[] = "media_router.ui.addRoute"; |
| +const char kOnCreateRouteResponseReceived[] = |
| + "media_router.ui.onCreateRouteResponseReceived"; |
| const char kSetIssue[] = "media_router.ui.setIssue"; |
| const char kSetSinkList[] = "media_router.ui.setSinkList"; |
| const char kSetRouteList[] = "media_router.ui.setRouteList"; |
| @@ -34,7 +35,8 @@ const char kSetCastModeList[] = "media_router.ui.setCastModeList"; |
| const char kWindowOpen[] = "window.open"; |
| scoped_ptr<base::ListValue> SinksToValue( |
| - const std::vector<MediaSinkWithCastModes>& sinks) { |
| + const std::vector<MediaSinkWithCastModes>& sinks, |
| + const std::set<MediaSink::Id>& sink_ids_in_launch) { |
| scoped_ptr<base::ListValue> value(new base::ListValue); |
| for (const MediaSinkWithCastModes& sink_with_cast_modes : sinks) { |
| @@ -43,6 +45,8 @@ scoped_ptr<base::ListValue> SinksToValue( |
| const MediaSink& sink = sink_with_cast_modes.sink; |
| sink_val->SetString("id", sink.id()); |
| sink_val->SetString("name", sink.name()); |
| + sink_val->SetBoolean("isLaunching", sink_ids_in_launch.find(sink.id()) != |
| + sink_ids_in_launch.end()); |
| scoped_ptr<base::ListValue> cast_modes_val(new base::ListValue); |
| for (MediaCastMode cast_mode : sink_with_cast_modes.cast_modes) |
| @@ -151,7 +155,8 @@ MediaRouterWebUIMessageHandler::~MediaRouterWebUIMessageHandler() { |
| void MediaRouterWebUIMessageHandler::UpdateSinks( |
| const std::vector<MediaSinkWithCastModes>& sinks) { |
| DVLOG(2) << "UpdateSinks"; |
| - scoped_ptr<base::ListValue> sinks_val(SinksToValue(sinks)); |
| + scoped_ptr<base::ListValue> sinks_val( |
| + SinksToValue(sinks, GetMediaRouterUI()->GetSinkIdsInLaunch())); |
| web_ui()->CallJavascriptFunction(kSetSinkList, *sinks_val); |
| } |
| @@ -171,10 +176,20 @@ void MediaRouterWebUIMessageHandler::UpdateCastModes( |
| web_ui()->CallJavascriptFunction(kSetCastModeList, *cast_modes_val); |
| } |
| -void MediaRouterWebUIMessageHandler::AddRoute(const MediaRoute& route) { |
| - DVLOG(2) << "AddRoute"; |
| - scoped_ptr<base::DictionaryValue> route_value(RouteToValue(route)); |
| - web_ui()->CallJavascriptFunction(kAddRoute, *route_value); |
| +void MediaRouterWebUIMessageHandler::OnCreateRouteResponseReceived( |
| + const MediaSink::Id& sink_id, |
| + const MediaRoute* route) { |
| + DVLOG(2) << "OnCreateRouteResponseReceived"; |
| + scoped_ptr<base::StringValue> sink_id_value(new base::StringValue(sink_id)); |
|
Kevin M
2015/08/08 00:35:57
I don't think scoped_ptr + heap allocation are nee
haibinlu
2015/08/08 01:25:39
Done.
|
| + if (route) { |
| + scoped_ptr<base::DictionaryValue> route_value(RouteToValue(*route)); |
| + web_ui()->CallJavascriptFunction(kOnCreateRouteResponseReceived, |
| + *sink_id_value, *route_value); |
| + } else { |
| + web_ui()->CallJavascriptFunction(kOnCreateRouteResponseReceived, |
| + *sink_id_value, |
| + *base::Value::CreateNullValue()); |
| + } |
| } |
| void MediaRouterWebUIMessageHandler::UpdateIssue(const Issue* issue) { |
| @@ -222,7 +237,8 @@ void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
| initial_data.SetString("headerTextTooltip", |
| media_router_ui->GetInitialHeaderTextTooltip()); |
| - scoped_ptr<base::ListValue> sinks(SinksToValue(media_router_ui->sinks())); |
| + scoped_ptr<base::ListValue> sinks(SinksToValue( |
| + media_router_ui->sinks(), media_router_ui->GetSinkIdsInLaunch())); |
|
Kevin M
2015/08/08 00:35:57
I think it might be cleaner to have media_router_u
haibinlu
2015/08/08 01:25:39
If we add inLaunching in the sink object, it is be
|
| initial_data.Set("sinks", sinks.release()); |
| scoped_ptr<base::ListValue> routes(RoutesToValue(media_router_ui->routes())); |