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 7fa7f2a4e44ad03d96ae7f4ceb22d1e3bc7331e8..fcf3c8ccad5403d1e8a49914d870142edff166ab 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 |
| @@ -64,15 +64,34 @@ const char kOnCreateRouteResponseReceived[] = |
| "media_router.ui.onCreateRouteResponseReceived"; |
| const char kSetFirstRunFlowData[] = "media_router.ui.setFirstRunFlowData"; |
| const char kSetIssue[] = "media_router.ui.setIssue"; |
| -const char kSetSinkList[] = "media_router.ui.setSinkList"; |
| +const char kSetSinkListAndIdentity[] = "media_router.ui.setSinkListAndIdentity"; |
| const char kSetRouteList[] = "media_router.ui.setRouteList"; |
| const char kSetCastModeList[] = "media_router.ui.setCastModeList"; |
| const char kUpdateMaxHeight[] = "media_router.ui.updateMaxHeight"; |
| const char kWindowOpen[] = "window.open"; |
| -scoped_ptr<base::ListValue> SinksToValue( |
| - const std::vector<MediaSinkWithCastModes>& sinks) { |
| - scoped_ptr<base::ListValue> value(new base::ListValue); |
| +scoped_ptr<base::DictionaryValue> SinksAndIdentityToValue( |
| + const std::vector<MediaSinkWithCastModes>& sinks, |
| + Profile* profile) { |
| + |
| + scoped_ptr<base::DictionaryValue> sink_list_and_identity( |
| + new base::DictionaryValue); |
| + |
| + std::string user_domain; |
| +#if defined(GOOGLE_CHROME_BUILD) |
| + SigninManagerBase* signin_manager = |
| + SigninManagerFactory::GetForProfile(profile); |
| + AccountInfo accnt_info = signin_manager->GetAuthenticatedAccountInfo(); |
|
imcheng
2016/02/18 18:58:54
nit: account_info
amp
2016/02/20 02:00:55
Done.
|
| + if (accnt_info.IsValid()) { |
| + user_domain = accnt_info.hosted_domain; |
| + sink_list_and_identity->SetString("userEmail", accnt_info.email); |
| + sink_list_and_identity->SetString("userDomain", user_domain); |
| + } |
| +#endif // defined(GOOGLE_CHROME_BUILD) |
| + |
| + scoped_ptr<base::ListValue> sinks_val(new base::ListValue); |
| + bool show_email = false; |
| + bool show_domain = false; |
| for (const MediaSinkWithCastModes& sink_with_cast_modes : sinks) { |
| scoped_ptr<base::DictionaryValue> sink_val(new base::DictionaryValue); |
| @@ -83,18 +102,32 @@ scoped_ptr<base::ListValue> SinksToValue( |
| sink_val->SetInteger("iconType", sink.icon_type()); |
| if (!sink.description().empty()) |
| sink_val->SetString("description", sink.description()); |
| - if (!sink.domain().empty()) |
| - sink_val->SetString("domain", sink.domain()); |
| + |
| + if (!user_domain.empty() && !sink.domain().empty()) { |
| + std::string domain = sink.domain(); |
| + // Convert default domains to user domain |
| + if (sink.domain() == "default") |
| + domain = user_domain; |
| + |
| + sink_val->SetString("domain", domain); |
| + |
| + show_email = true; |
| + if (domain != user_domain) |
| + show_domain = true; |
| + } |
| int cast_mode_bits = 0; |
| for (MediaCastMode cast_mode : sink_with_cast_modes.cast_modes) |
| cast_mode_bits |= cast_mode; |
| sink_val->SetInteger("castModes", cast_mode_bits); |
| - value->Append(sink_val.release()); |
| + sinks_val->Append(sink_val.release()); |
| } |
| - return value; |
| + sink_list_and_identity->Set("sinks", sinks_val.release()); |
| + sink_list_and_identity->SetBoolean("showEmail", show_email); |
| + sink_list_and_identity->SetBoolean("showDomain", show_domain); |
| + return sink_list_and_identity; |
| } |
| scoped_ptr<base::DictionaryValue> RouteToValue( |
| @@ -208,8 +241,10 @@ MediaRouterWebUIMessageHandler::~MediaRouterWebUIMessageHandler() { |
| void MediaRouterWebUIMessageHandler::UpdateSinks( |
| const std::vector<MediaSinkWithCastModes>& sinks) { |
| DVLOG(2) << "UpdateSinks"; |
| - scoped_ptr<base::ListValue> sinks_val(SinksToValue(sinks)); |
| - web_ui()->CallJavascriptFunction(kSetSinkList, *sinks_val); |
| + scoped_ptr<base::DictionaryValue> sinks_and_identity_val( |
| + SinksAndIdentityToValue(sinks, Profile::FromWebUI(web_ui()))); |
| + web_ui()->CallJavascriptFunction( |
| + kSetSinkListAndIdentity, *sinks_and_identity_val); |
| } |
| void MediaRouterWebUIMessageHandler::UpdateRoutes( |
| @@ -343,8 +378,9 @@ void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
| initial_data.SetString("deviceMissingUrl", |
| base::StringPrintf(kHelpPageUrlPrefix, 3249268)); |
| - scoped_ptr<base::ListValue> sinks(SinksToValue(media_router_ui_->sinks())); |
| - initial_data.Set("sinks", sinks.release()); |
| + scoped_ptr<base::DictionaryValue> sinks_and_identity(SinksAndIdentityToValue( |
| + media_router_ui_->sinks(), Profile::FromWebUI(web_ui()))); |
| + initial_data.Set("sinksAndIdentity", sinks_and_identity.release()); |
| scoped_ptr<base::ListValue> routes(RoutesToValue(media_router_ui_->routes(), |
| media_router_ui_->joinable_route_ids(), |