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())); |