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 9c9092ec8a6cba272760df5e17922870690fdfb4..bd1c280bcec88b4152191d2233bf2b7818b24c36 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 |
| @@ -27,6 +27,7 @@ const char kRequestInitialData[] = "requestInitialData"; |
| const char kCreateRoute[] = "requestRoute"; |
| const char kActOnIssue[] = "actOnIssue"; |
| const char kCloseRoute[] = "closeRoute"; |
| +const char kJoinRoute[] = "joinRoute"; |
| const char kCloseDialog[] = "closeDialog"; |
| const char kReportSinkCount[] = "reportSinkCount"; |
| @@ -179,11 +180,15 @@ void MediaRouterWebUIMessageHandler::UpdateSinks( |
| } |
| void MediaRouterWebUIMessageHandler::UpdateRoutes( |
| - const std::vector<MediaRoute>& routes) { |
| - DVLOG(2) << "UpdateRoutes"; |
| + const std::vector<MediaRoute>& routes, |
| + const std::vector<MediaRoute>& joinable_routes) { |
| scoped_ptr<base::ListValue> routes_val(RoutesToValue(routes, |
| media_router_ui_->GetRouteProviderExtensionId())); |
| - web_ui()->CallJavascriptFunction(kSetRouteList, *routes_val); |
| + scoped_ptr<base::ListValue> joinable_routes_val( |
| + RoutesToValue(joinable_routes, |
| + media_router_ui_->GetRouteProviderExtensionId())); |
| + web_ui()->CallJavascriptFunction( |
| + kSetRouteList, *routes_val, *joinable_routes_val); |
| } |
| void MediaRouterWebUIMessageHandler::UpdateCastModes( |
| @@ -249,6 +254,10 @@ void MediaRouterWebUIMessageHandler::RegisterMessages() { |
| base::Bind(&MediaRouterWebUIMessageHandler::OnCloseRoute, |
| base::Unretained(this))); |
| web_ui()->RegisterMessageCallback( |
| + kJoinRoute, |
| + base::Bind(&MediaRouterWebUIMessageHandler::OnJoinRoute, |
| + base::Unretained(this))); |
| + web_ui()->RegisterMessageCallback( |
| kCloseDialog, |
| base::Bind(&MediaRouterWebUIMessageHandler::OnCloseDialog, |
| base::Unretained(this))); |
| @@ -274,6 +283,12 @@ void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
| media_router_ui_->GetRouteProviderExtensionId())); |
| initial_data.Set("routes", routes.release()); |
| + |
| + scoped_ptr<base::ListValue> joinable_routes( |
| + RoutesToValue(media_router_ui_->joinable_routes(), |
| + media_router_ui_->GetRouteProviderExtensionId())); |
| + initial_data.Set("joinableRoutes", joinable_routes.release()); |
| + |
| const std::set<MediaCastMode> cast_modes = media_router_ui_->cast_modes(); |
| scoped_ptr<base::ListValue> cast_modes_list( |
| CastModesToValue(cast_modes, media_router_ui_->GetFrameURLHost())); |
| @@ -360,8 +375,21 @@ void MediaRouterWebUIMessageHandler::OnActOnIssue( |
| media_router_ui_->ClearIssue(issue_id); |
| } |
| -void MediaRouterWebUIMessageHandler::OnCloseRoute( |
| - const base::ListValue* args) { |
| +void MediaRouterWebUIMessageHandler::OnJoinRoute(const base::ListValue* args) { |
| + DVLOG(1) << "OnJoinRoute"; |
| + const base::DictionaryValue* args_dict = nullptr; |
| + std::string route_id; |
| + std::string sink_id; |
| + if (!args->GetDictionary(0, &args_dict) || |
| + !args_dict->GetString("sinkId", &sink_id) || |
| + !args_dict->GetString("routeId", &route_id)) { |
| + DVLOG(1) << "Unable to extract args."; |
| + return; |
| + } |
| + media_router_ui_->JoinRoute(sink_id, route_id); |
|
imcheng
2015/11/19 18:55:08
Do we need to check HasPendingRouteRequest() simil
matt.boetger
2015/11/24 19:45:24
Done.
|
| +} |
| + |
| +void MediaRouterWebUIMessageHandler::OnCloseRoute(const base::ListValue* args) { |
| DVLOG(1) << "OnCloseRoute"; |
| const base::DictionaryValue* args_dict = nullptr; |
| std::string route_id; |