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

Unified Diff: chrome/browser/ui/webui/media_router/media_router_webui_message_handler.cc

Issue 1273423004: Shows a launch spinner next to a sink once it is selected to create a route. The launch spinner sur… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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/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()));

Powered by Google App Engine
This is Rietveld 408576698