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 7346b300e8d6172baf7679efd98a43671c7faeae..0b8a30b9a8ac456b26f105deb9598a3ac57570b4 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 |
@@ -94,8 +94,7 @@ const char kWindowOpen[] = "window.open"; |
std::unique_ptr<base::DictionaryValue> SinksAndIdentityToValue( |
const std::vector<MediaSinkWithCastModes>& sinks, |
const AccountInfo& account_info) { |
- std::unique_ptr<base::DictionaryValue> sink_list_and_identity( |
- new base::DictionaryValue); |
+ auto sink_list_and_identity = base::MakeUnique<base::DictionaryValue>(); |
bool show_email = false; |
bool show_domain = false; |
std::string user_domain; |
@@ -104,10 +103,10 @@ std::unique_ptr<base::DictionaryValue> SinksAndIdentityToValue( |
sink_list_and_identity->SetString("userEmail", account_info.email); |
} |
- std::unique_ptr<base::ListValue> sinks_val(new base::ListValue); |
+ auto sinks_val = base::MakeUnique<base::ListValue>(); |
for (const MediaSinkWithCastModes& sink_with_cast_modes : sinks) { |
- std::unique_ptr<base::DictionaryValue> sink_val(new base::DictionaryValue); |
+ auto sink_val = base::MakeUnique<base::DictionaryValue>(); |
const MediaSink& sink = sink_with_cast_modes.sink; |
sink_val->SetString("id", sink.id()); |
@@ -157,12 +156,16 @@ std::unique_ptr<base::DictionaryValue> RouteToValue( |
bool can_join, |
const std::string& extension_id, |
bool incognito, |
- int current_cast_mode) { |
- std::unique_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); |
+ int current_cast_mode, |
+ bool is_web_ui_route_controller_available) { |
+ auto dictionary = base::MakeUnique<base::DictionaryValue>(); |
dictionary->SetString("id", route.media_route_id()); |
dictionary->SetString("sinkId", route.media_sink_id()); |
dictionary->SetString("description", route.description()); |
dictionary->SetBoolean("isLocal", route.is_local()); |
+ dictionary->SetBoolean("supportsWebUiController", |
+ is_web_ui_route_controller_available && |
+ route.supports_media_route_controller()); |
dictionary->SetBoolean("canJoin", can_join); |
if (current_cast_mode > 0) { |
dictionary->SetInteger("currentCastMode", current_cast_mode); |
@@ -184,11 +187,10 @@ std::unique_ptr<base::ListValue> CastModesToValue( |
const CastModeSet& cast_modes, |
const std::string& source_host, |
base::Optional<MediaCastMode> forced_cast_mode) { |
- std::unique_ptr<base::ListValue> value(new base::ListValue); |
+ auto value = base::MakeUnique<base::ListValue>(); |
for (const MediaCastMode& cast_mode : cast_modes) { |
- std::unique_ptr<base::DictionaryValue> cast_mode_val( |
- new base::DictionaryValue); |
+ auto cast_mode_val = base::MakeUnique<base::DictionaryValue>(); |
cast_mode_val->SetInteger("type", cast_mode); |
cast_mode_val->SetString( |
"description", MediaCastModeToDescription(cast_mode, source_host)); |
@@ -204,7 +206,7 @@ std::unique_ptr<base::ListValue> CastModesToValue( |
// Returns an Issue dictionary created from |issue| that can be used in WebUI. |
std::unique_ptr<base::DictionaryValue> IssueToValue(const Issue& issue) { |
const IssueInfo& issue_info = issue.info(); |
- std::unique_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); |
+ auto dictionary = base::MakeUnique<base::DictionaryValue>(); |
dictionary->SetInteger("id", issue.id()); |
dictionary->SetString("title", issue_info.title); |
dictionary->SetString("message", issue_info.message); |
@@ -256,6 +258,8 @@ MediaRouterWebUIMessageHandler::MediaRouterWebUIMessageHandler( |
: incognito_( |
Profile::FromWebUI(media_router_ui->web_ui())->IsOffTheRecord()), |
dialog_closing_(false), |
+ is_web_ui_route_controller_available_(base::FeatureList::IsEnabled( |
+ features::kMediaRouterUIRouteController)), |
media_router_ui_(media_router_ui) {} |
MediaRouterWebUIMessageHandler::~MediaRouterWebUIMessageHandler() {} |
@@ -298,7 +302,7 @@ void MediaRouterWebUIMessageHandler::OnCreateRouteResponseReceived( |
route->media_route_id(), media_router_ui_->routes_and_cast_modes()); |
std::unique_ptr<base::DictionaryValue> route_value(RouteToValue( |
*route, false, media_router_ui_->GetRouteProviderExtensionId(), |
- incognito_, current_cast_mode)); |
+ incognito_, current_cast_mode, is_web_ui_route_controller_available_)); |
web_ui()->CallJavascriptFunctionUnsafe(kOnCreateRouteResponseReceived, |
base::Value(sink_id), *route_value, |
base::Value(route->for_display())); |
@@ -513,10 +517,6 @@ void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
media_router_ui_->UserSelectedTabMirroringForCurrentOrigin(); |
initial_data.SetBoolean("useTabMirroring", use_tab_mirroring); |
- initial_data.SetBoolean( |
- "useWebUiRouteControls", |
- base::FeatureList::IsEnabled(features::kMediaRouterUIRouteController)); |
- |
web_ui()->CallJavascriptFunctionUnsafe(kSetInitialData, initial_data); |
media_router_ui_->UIInitialized(); |
} |
@@ -977,7 +977,7 @@ bool MediaRouterWebUIMessageHandler::ActOnIssueType( |
std::string learn_more_url = GetLearnMoreUrl(args); |
if (learn_more_url.empty()) |
return false; |
- std::unique_ptr<base::ListValue> open_args(new base::ListValue); |
+ auto open_args = base::MakeUnique<base::ListValue>(); |
open_args->AppendString(learn_more_url); |
web_ui()->CallJavascriptFunctionUnsafe(kWindowOpen, *open_args); |
return true; |
@@ -1060,7 +1060,7 @@ std::unique_ptr<base::ListValue> MediaRouterWebUIMessageHandler::RoutesToValue( |
const std::vector<MediaRoute::Id>& joinable_route_ids, |
const std::unordered_map<MediaRoute::Id, MediaCastMode>& current_cast_modes) |
const { |
- std::unique_ptr<base::ListValue> value(new base::ListValue); |
+ auto value = base::MakeUnique<base::ListValue>(); |
const std::string& extension_id = |
media_router_ui_->GetRouteProviderExtensionId(); |
@@ -1069,8 +1069,9 @@ std::unique_ptr<base::ListValue> MediaRouterWebUIMessageHandler::RoutesToValue( |
base::ContainsValue(joinable_route_ids, route.media_route_id()); |
int current_cast_mode = |
CurrentCastModeForRouteId(route.media_route_id(), current_cast_modes); |
- std::unique_ptr<base::DictionaryValue> route_val(RouteToValue( |
- route, can_join, extension_id, incognito_, current_cast_mode)); |
+ std::unique_ptr<base::DictionaryValue> route_val( |
+ RouteToValue(route, can_join, extension_id, incognito_, |
+ current_cast_mode, is_web_ui_route_controller_available_)); |
value->Append(std::move(route_val)); |
} |