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

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

Issue 1680743006: [Media Router] Show user email in header if cloud sink is present. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Overhauled implementation to use observers and fire events as well as push down logic into native m… Created 4 years, 10 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 7be4f3302903c383a71bda1e697580f9481cdaaa..746a9928c4466bf54af70d856cc61f830190734e 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
@@ -63,15 +63,26 @@ const char kSetInitialData[] = "media_router.ui.setInitialData";
const char kOnCreateRouteResponseReceived[] =
"media_router.ui.onCreateRouteResponseReceived";
const char kSetIssue[] = "media_router.ui.setIssue";
-const char kSetSinkList[] = "media_router.ui.setSinkList";
+const char kSetSinkListAndIdentityVisibility[] =
+ "media_router.ui.setSinkListAndIdentityVisibility";
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(
+scoped_ptr<base::DictionaryValue> SinksToValue(
const std::vector<MediaSinkWithCastModes>& sinks) {
+
+ Profile* profile = Profile::FromWebUI(web_ui());
+ SigninManagerBase* signin_manager =
+ SigninManagerFactory::GetForProfile(profile);
+ std::string userDomain =
+ signin_manager->GetAuthenticatedAccountInfo().hosted_domain;
+
+ scoped_ptr<base::DictionaryValue> sink_list_and_identity(
+ new base::DictionaryValue);
scoped_ptr<base::ListValue> value(new base::ListValue);
+ int identityVisibility = 0;
for (const MediaSinkWithCastModes& sink_with_cast_modes : sinks) {
scoped_ptr<base::DictionaryValue> sink_val(new base::DictionaryValue);
@@ -82,8 +93,20 @@ 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 (!sink.domain().empty()) {
+ std::string domain = sink.domain();
+ // Convert default domains to user domain
+ if (sink.domain() == "default")
+ domain = userDomain;
+
+ sink_val->SetString("domain", domain);
+
+ // Don't reset visibliity to 1 if it was already 2
apacible 2016/02/13 08:13:02 nit: "visibility" misspelled
amp 2016/02/16 22:19:12 Done.
+ if (identityVisibility == 0)
apacible 2016/02/13 08:13:02 Declare identity visibility options as enums here
amp 2016/02/16 22:19:12 Done. I declared a local enum to this class but d
+ identityVisibility = 1;
+ if (domain != userDomain)
+ identityVisibility = 2;
+ }
int cast_mode_bits = 0;
for (MediaCastMode cast_mode : sink_with_cast_modes.cast_modes)
@@ -93,7 +116,10 @@ scoped_ptr<base::ListValue> SinksToValue(
value->Append(sink_val.release());
}
- return value;
+ sink_list_and_identity->Set("sinks", sinks);
+ sink_list_and_identity->SetInteger("identityVisibility",
+ identityVisibility);
+ return sink_list_and_identity;
}
scoped_ptr<base::DictionaryValue> RouteToValue(
@@ -207,8 +233,9 @@ 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_val(SinksToValue(sinks));
+ web_ui()->CallJavascriptFunction(
+ kSetSinkListAndIdentityVisibility, *sinks_val);
}
void MediaRouterWebUIMessageHandler::UpdateRoutes(
@@ -349,8 +376,14 @@ 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_with_identity(SinksToValue(
+ media_router_ui_->sinks()));
+ const base::ListValue* sinks_val = nullptr;
+ sinks_with_identity->GetList("sinks", &sinks_val);
+ int identity_visibility = -1;
+ sinks_with_identity->GetInteger("identityVisibility", &identity_visibility);
+ initial_data.Set("sinks", &sinks_val);
+ initial_data.SetInteger("identityVisibility", identity_visibility);
scoped_ptr<base::ListValue> routes(RoutesToValue(media_router_ui_->routes(),
media_router_ui_->joinable_route_ids(),
@@ -376,14 +409,18 @@ void MediaRouterWebUIMessageHandler::OnRequestInitialData(
// enabled. If the user enables sync after acknowledging the first run flow,
// this is treated as the user opting into Google services, including cloud
// services, if the browser is a Chrome branded build.
+ SigninManagerBase* signin_manager =
+ SigninManagerFactory::GetForProfile(profile);
if (!profile->GetPrefs()->GetBoolean(
prefs::kMediaRouterCloudServicesPrefSet) &&
profile->IsSyncAllowed()) {
- SigninManagerBase* signin_manager =
- SigninManagerFactory::GetForProfile(profile);
show_cloud_pref = signin_manager && signin_manager->IsAuthenticated() &&
ProfileSyncServiceFactory::GetForProfile(profile)->IsSyncActive();
}
+ initial_data.SetString("userEmail",
+ signin_manager->GetAuthenticatedAccountInfo().email);
+ initial_data.SetString("userDomain",
+ signin_manager->GetAuthenticatedAccountInfo().hosted_domain);
#endif // defined(GOOGLE_CHROME_BUILD)
initial_data.SetBoolean("showFirstRunFlowCloudPref", show_cloud_pref);

Powered by Google App Engine
This is Rietveld 408576698