OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h" | 5 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
56 const char kReportSinkCount[] = "reportSinkCount"; | 56 const char kReportSinkCount[] = "reportSinkCount"; |
57 const char kReportTimeToClickSink[] = "reportTimeToClickSink"; | 57 const char kReportTimeToClickSink[] = "reportTimeToClickSink"; |
58 const char kReportTimeToInitialActionClose[] = "reportTimeToInitialActionClose"; | 58 const char kReportTimeToInitialActionClose[] = "reportTimeToInitialActionClose"; |
59 const char kOnInitialDataReceived[] = "onInitialDataReceived"; | 59 const char kOnInitialDataReceived[] = "onInitialDataReceived"; |
60 | 60 |
61 // JS function names. | 61 // JS function names. |
62 const char kSetInitialData[] = "media_router.ui.setInitialData"; | 62 const char kSetInitialData[] = "media_router.ui.setInitialData"; |
63 const char kOnCreateRouteResponseReceived[] = | 63 const char kOnCreateRouteResponseReceived[] = |
64 "media_router.ui.onCreateRouteResponseReceived"; | 64 "media_router.ui.onCreateRouteResponseReceived"; |
65 const char kSetIssue[] = "media_router.ui.setIssue"; | 65 const char kSetIssue[] = "media_router.ui.setIssue"; |
66 const char kSetSinkList[] = "media_router.ui.setSinkList"; | 66 const char kSetSinkListAndIdentityVisibility[] = |
67 "media_router.ui.setSinkListAndIdentityVisibility"; | |
67 const char kSetRouteList[] = "media_router.ui.setRouteList"; | 68 const char kSetRouteList[] = "media_router.ui.setRouteList"; |
68 const char kSetCastModeList[] = "media_router.ui.setCastModeList"; | 69 const char kSetCastModeList[] = "media_router.ui.setCastModeList"; |
69 const char kUpdateMaxHeight[] = "media_router.ui.updateMaxHeight"; | 70 const char kUpdateMaxHeight[] = "media_router.ui.updateMaxHeight"; |
70 const char kWindowOpen[] = "window.open"; | 71 const char kWindowOpen[] = "window.open"; |
71 | 72 |
72 scoped_ptr<base::ListValue> SinksToValue( | 73 scoped_ptr<base::DictionaryValue> SinksToValue( |
73 const std::vector<MediaSinkWithCastModes>& sinks) { | 74 const std::vector<MediaSinkWithCastModes>& sinks) { |
75 | |
76 Profile* profile = Profile::FromWebUI(web_ui()); | |
77 SigninManagerBase* signin_manager = | |
78 SigninManagerFactory::GetForProfile(profile); | |
79 std::string userDomain = | |
80 signin_manager->GetAuthenticatedAccountInfo().hosted_domain; | |
81 | |
82 scoped_ptr<base::DictionaryValue> sink_list_and_identity( | |
83 new base::DictionaryValue); | |
74 scoped_ptr<base::ListValue> value(new base::ListValue); | 84 scoped_ptr<base::ListValue> value(new base::ListValue); |
85 int identityVisibility = 0; | |
75 | 86 |
76 for (const MediaSinkWithCastModes& sink_with_cast_modes : sinks) { | 87 for (const MediaSinkWithCastModes& sink_with_cast_modes : sinks) { |
77 scoped_ptr<base::DictionaryValue> sink_val(new base::DictionaryValue); | 88 scoped_ptr<base::DictionaryValue> sink_val(new base::DictionaryValue); |
78 | 89 |
79 const MediaSink& sink = sink_with_cast_modes.sink; | 90 const MediaSink& sink = sink_with_cast_modes.sink; |
80 sink_val->SetString("id", sink.id()); | 91 sink_val->SetString("id", sink.id()); |
81 sink_val->SetString("name", sink.name()); | 92 sink_val->SetString("name", sink.name()); |
82 sink_val->SetInteger("iconType", sink.icon_type()); | 93 sink_val->SetInteger("iconType", sink.icon_type()); |
83 if (!sink.description().empty()) | 94 if (!sink.description().empty()) |
84 sink_val->SetString("description", sink.description()); | 95 sink_val->SetString("description", sink.description()); |
85 if (!sink.domain().empty()) | 96 if (!sink.domain().empty()) { |
86 sink_val->SetString("domain", sink.domain()); | 97 std::string domain = sink.domain(); |
98 // Convert default domains to user domain | |
99 if (sink.domain() == "default") | |
100 domain = userDomain; | |
101 | |
102 sink_val->SetString("domain", domain); | |
103 | |
104 // 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.
| |
105 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
| |
106 identityVisibility = 1; | |
107 if (domain != userDomain) | |
108 identityVisibility = 2; | |
109 } | |
87 | 110 |
88 int cast_mode_bits = 0; | 111 int cast_mode_bits = 0; |
89 for (MediaCastMode cast_mode : sink_with_cast_modes.cast_modes) | 112 for (MediaCastMode cast_mode : sink_with_cast_modes.cast_modes) |
90 cast_mode_bits |= cast_mode; | 113 cast_mode_bits |= cast_mode; |
91 | 114 |
92 sink_val->SetInteger("castModes", cast_mode_bits); | 115 sink_val->SetInteger("castModes", cast_mode_bits); |
93 value->Append(sink_val.release()); | 116 value->Append(sink_val.release()); |
94 } | 117 } |
95 | 118 |
96 return value; | 119 sink_list_and_identity->Set("sinks", sinks); |
120 sink_list_and_identity->SetInteger("identityVisibility", | |
121 identityVisibility); | |
122 return sink_list_and_identity; | |
97 } | 123 } |
98 | 124 |
99 scoped_ptr<base::DictionaryValue> RouteToValue( | 125 scoped_ptr<base::DictionaryValue> RouteToValue( |
100 const MediaRoute& route, bool canJoin, const std::string& extension_id) { | 126 const MediaRoute& route, bool canJoin, const std::string& extension_id) { |
101 scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); | 127 scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); |
102 dictionary->SetString("id", route.media_route_id()); | 128 dictionary->SetString("id", route.media_route_id()); |
103 dictionary->SetString("sinkId", route.media_sink_id()); | 129 dictionary->SetString("sinkId", route.media_sink_id()); |
104 dictionary->SetString("description", route.description()); | 130 dictionary->SetString("description", route.description()); |
105 dictionary->SetBoolean("isLocal", route.is_local()); | 131 dictionary->SetBoolean("isLocal", route.is_local()); |
106 dictionary->SetBoolean("canJoin", canJoin); | 132 dictionary->SetBoolean("canJoin", canJoin); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
200 media_router_ui_(media_router_ui) { | 226 media_router_ui_(media_router_ui) { |
201 DCHECK(media_router_ui_); | 227 DCHECK(media_router_ui_); |
202 } | 228 } |
203 | 229 |
204 MediaRouterWebUIMessageHandler::~MediaRouterWebUIMessageHandler() { | 230 MediaRouterWebUIMessageHandler::~MediaRouterWebUIMessageHandler() { |
205 } | 231 } |
206 | 232 |
207 void MediaRouterWebUIMessageHandler::UpdateSinks( | 233 void MediaRouterWebUIMessageHandler::UpdateSinks( |
208 const std::vector<MediaSinkWithCastModes>& sinks) { | 234 const std::vector<MediaSinkWithCastModes>& sinks) { |
209 DVLOG(2) << "UpdateSinks"; | 235 DVLOG(2) << "UpdateSinks"; |
210 scoped_ptr<base::ListValue> sinks_val(SinksToValue(sinks)); | 236 scoped_ptr<base::DictionaryValue> sinks_val(SinksToValue(sinks)); |
211 web_ui()->CallJavascriptFunction(kSetSinkList, *sinks_val); | 237 web_ui()->CallJavascriptFunction( |
238 kSetSinkListAndIdentityVisibility, *sinks_val); | |
212 } | 239 } |
213 | 240 |
214 void MediaRouterWebUIMessageHandler::UpdateRoutes( | 241 void MediaRouterWebUIMessageHandler::UpdateRoutes( |
215 const std::vector<MediaRoute>& routes, | 242 const std::vector<MediaRoute>& routes, |
216 const std::vector<MediaRoute::Id>& joinable_route_ids) { | 243 const std::vector<MediaRoute::Id>& joinable_route_ids) { |
217 scoped_ptr<base::ListValue> routes_val(RoutesToValue(routes, | 244 scoped_ptr<base::ListValue> routes_val(RoutesToValue(routes, |
218 joinable_route_ids, | 245 joinable_route_ids, |
219 media_router_ui_->GetRouteProviderExtensionId())); | 246 media_router_ui_->GetRouteProviderExtensionId())); |
220 web_ui()->CallJavascriptFunction(kSetRouteList, *routes_val); | 247 web_ui()->CallJavascriptFunction(kSetRouteList, *routes_val); |
221 } | 248 } |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
342 // "Casting to a Hangout from Chrome" Chromecast help center page. | 369 // "Casting to a Hangout from Chrome" Chromecast help center page. |
343 initial_data.SetString("firstRunFlowCloudPrefLearnMoreUrl", | 370 initial_data.SetString("firstRunFlowCloudPrefLearnMoreUrl", |
344 base::StringPrintf(kHelpPageUrlPrefix, 6320939)); | 371 base::StringPrintf(kHelpPageUrlPrefix, 6320939)); |
345 #endif // defined(GOOGLE_CHROME_BUILD) | 372 #endif // defined(GOOGLE_CHROME_BUILD) |
346 // General Chromecast learn more page. | 373 // General Chromecast learn more page. |
347 initial_data.SetString("firstRunFlowLearnMoreUrl", kCastLearnMorePageUrl); | 374 initial_data.SetString("firstRunFlowLearnMoreUrl", kCastLearnMorePageUrl); |
348 // "No Cast devices found?" Chromecast help center page. | 375 // "No Cast devices found?" Chromecast help center page. |
349 initial_data.SetString("deviceMissingUrl", | 376 initial_data.SetString("deviceMissingUrl", |
350 base::StringPrintf(kHelpPageUrlPrefix, 3249268)); | 377 base::StringPrintf(kHelpPageUrlPrefix, 3249268)); |
351 | 378 |
352 scoped_ptr<base::ListValue> sinks(SinksToValue(media_router_ui_->sinks())); | 379 scoped_ptr<base::DictionaryValue> sinks_with_identity(SinksToValue( |
353 initial_data.Set("sinks", sinks.release()); | 380 media_router_ui_->sinks())); |
381 const base::ListValue* sinks_val = nullptr; | |
382 sinks_with_identity->GetList("sinks", &sinks_val); | |
383 int identity_visibility = -1; | |
384 sinks_with_identity->GetInteger("identityVisibility", &identity_visibility); | |
385 initial_data.Set("sinks", &sinks_val); | |
386 initial_data.SetInteger("identityVisibility", identity_visibility); | |
354 | 387 |
355 scoped_ptr<base::ListValue> routes(RoutesToValue(media_router_ui_->routes(), | 388 scoped_ptr<base::ListValue> routes(RoutesToValue(media_router_ui_->routes(), |
356 media_router_ui_->joinable_route_ids(), | 389 media_router_ui_->joinable_route_ids(), |
357 media_router_ui_->GetRouteProviderExtensionId())); | 390 media_router_ui_->GetRouteProviderExtensionId())); |
358 initial_data.Set("routes", routes.release()); | 391 initial_data.Set("routes", routes.release()); |
359 | 392 |
360 const std::set<MediaCastMode> cast_modes = media_router_ui_->cast_modes(); | 393 const std::set<MediaCastMode> cast_modes = media_router_ui_->cast_modes(); |
361 scoped_ptr<base::ListValue> cast_modes_list( | 394 scoped_ptr<base::ListValue> cast_modes_list( |
362 CastModesToValue(cast_modes, | 395 CastModesToValue(cast_modes, |
363 media_router_ui_->GetPresentationRequestSourceName())); | 396 media_router_ui_->GetPresentationRequestSourceName())); |
364 initial_data.Set("castModes", cast_modes_list.release()); | 397 initial_data.Set("castModes", cast_modes_list.release()); |
365 | 398 |
366 Profile* profile = Profile::FromWebUI(web_ui()); | 399 Profile* profile = Profile::FromWebUI(web_ui()); |
367 | 400 |
368 bool first_run_flow_acknowledged = | 401 bool first_run_flow_acknowledged = |
369 profile->GetPrefs()->GetBoolean( | 402 profile->GetPrefs()->GetBoolean( |
370 prefs::kMediaRouterFirstRunFlowAcknowledged); | 403 prefs::kMediaRouterFirstRunFlowAcknowledged); |
371 initial_data.SetBoolean("wasFirstRunFlowAcknowledged", | 404 initial_data.SetBoolean("wasFirstRunFlowAcknowledged", |
372 first_run_flow_acknowledged); | 405 first_run_flow_acknowledged); |
373 bool show_cloud_pref = false; | 406 bool show_cloud_pref = false; |
374 #if defined(GOOGLE_CHROME_BUILD) | 407 #if defined(GOOGLE_CHROME_BUILD) |
375 // Cloud services preference is shown if user is logged in and has sync | 408 // Cloud services preference is shown if user is logged in and has sync |
376 // enabled. If the user enables sync after acknowledging the first run flow, | 409 // enabled. If the user enables sync after acknowledging the first run flow, |
377 // this is treated as the user opting into Google services, including cloud | 410 // this is treated as the user opting into Google services, including cloud |
378 // services, if the browser is a Chrome branded build. | 411 // services, if the browser is a Chrome branded build. |
412 SigninManagerBase* signin_manager = | |
413 SigninManagerFactory::GetForProfile(profile); | |
379 if (!profile->GetPrefs()->GetBoolean( | 414 if (!profile->GetPrefs()->GetBoolean( |
380 prefs::kMediaRouterCloudServicesPrefSet) && | 415 prefs::kMediaRouterCloudServicesPrefSet) && |
381 profile->IsSyncAllowed()) { | 416 profile->IsSyncAllowed()) { |
382 SigninManagerBase* signin_manager = | |
383 SigninManagerFactory::GetForProfile(profile); | |
384 show_cloud_pref = signin_manager && signin_manager->IsAuthenticated() && | 417 show_cloud_pref = signin_manager && signin_manager->IsAuthenticated() && |
385 ProfileSyncServiceFactory::GetForProfile(profile)->IsSyncActive(); | 418 ProfileSyncServiceFactory::GetForProfile(profile)->IsSyncActive(); |
386 } | 419 } |
420 initial_data.SetString("userEmail", | |
421 signin_manager->GetAuthenticatedAccountInfo().email); | |
422 initial_data.SetString("userDomain", | |
423 signin_manager->GetAuthenticatedAccountInfo().hosted_domain); | |
387 #endif // defined(GOOGLE_CHROME_BUILD) | 424 #endif // defined(GOOGLE_CHROME_BUILD) |
388 initial_data.SetBoolean("showFirstRunFlowCloudPref", show_cloud_pref); | 425 initial_data.SetBoolean("showFirstRunFlowCloudPref", show_cloud_pref); |
389 | 426 |
390 web_ui()->CallJavascriptFunction(kSetInitialData, initial_data); | 427 web_ui()->CallJavascriptFunction(kSetInitialData, initial_data); |
391 media_router_ui_->UIInitialized(); | 428 media_router_ui_->UIInitialized(); |
392 } | 429 } |
393 | 430 |
394 void MediaRouterWebUIMessageHandler::OnCreateRoute( | 431 void MediaRouterWebUIMessageHandler::OnCreateRoute( |
395 const base::ListValue* args) { | 432 const base::ListValue* args) { |
396 DVLOG(1) << "OnCreateRoute"; | 433 DVLOG(1) << "OnCreateRoute"; |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
693 // Do nothing; no other issue action types require any other action. | 730 // Do nothing; no other issue action types require any other action. |
694 return true; | 731 return true; |
695 } | 732 } |
696 } | 733 } |
697 | 734 |
698 void MediaRouterWebUIMessageHandler::SetWebUIForTest(content::WebUI* web_ui) { | 735 void MediaRouterWebUIMessageHandler::SetWebUIForTest(content::WebUI* web_ui) { |
699 set_web_ui(web_ui); | 736 set_web_ui(web_ui); |
700 } | 737 } |
701 | 738 |
702 } // namespace media_router | 739 } // namespace media_router |
OLD | NEW |