Chromium Code Reviews| 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 <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/metrics/histogram_macros.h" | 12 #include "base/metrics/histogram_macros.h" |
| 13 #include "base/metrics/sparse_histogram.h" | 13 #include "base/metrics/sparse_histogram.h" |
| 14 #include "base/metrics/user_metrics.h" | 14 #include "base/metrics/user_metrics.h" |
| 15 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
| 16 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 17 #include "base/values.h" | 17 #include "base/values.h" |
| 18 #include "chrome/browser/media/router/media_router_metrics.h" | 18 #include "chrome/browser/media/router/media_router_metrics.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 19 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/browser/signin/signin_manager_factory.h" | 20 #include "chrome/browser/signin/signin_manager_factory.h" |
| 21 #include "chrome/browser/sync/profile_sync_service_factory.h" | 21 #include "chrome/browser/sync/profile_sync_service_factory.h" |
| 22 #include "chrome/browser/ui/webui/media_router/media_cast_mode.h" | 22 #include "chrome/browser/ui/webui/media_router/media_cast_mode.h" |
| 23 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" | 23 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" |
| 24 #include "chrome/common/media_router/issue.h" | 24 #include "chrome/common/chrome_features.h" |
| 25 #include "chrome/common/pref_names.h" | 25 #include "chrome/common/pref_names.h" |
| 26 #include "chrome/grit/generated_resources.h" | 26 #include "chrome/grit/generated_resources.h" |
| 27 #include "components/browser_sync/profile_sync_service.h" | 27 #include "components/browser_sync/profile_sync_service.h" |
| 28 #include "components/prefs/pref_service.h" | 28 #include "components/prefs/pref_service.h" |
| 29 #include "components/signin/core/browser/signin_manager.h" | 29 #include "components/signin/core/browser/signin_manager.h" |
| 30 #include "content/public/browser/web_ui.h" | 30 #include "content/public/browser/web_ui.h" |
| 31 #include "extensions/common/constants.h" | 31 #include "extensions/common/constants.h" |
| 32 #include "ui/base/l10n/l10n_util.h" | 32 #include "ui/base/l10n/l10n_util.h" |
| 33 | 33 |
| 34 namespace media_router { | 34 namespace media_router { |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 55 const char kReportInitialState[] = "reportInitialState"; | 55 const char kReportInitialState[] = "reportInitialState"; |
| 56 const char kReportNavigateToView[] = "reportNavigateToView"; | 56 const char kReportNavigateToView[] = "reportNavigateToView"; |
| 57 const char kReportRouteCreationOutcome[] = "reportRouteCreationOutcome"; | 57 const char kReportRouteCreationOutcome[] = "reportRouteCreationOutcome"; |
| 58 const char kReportRouteCreation[] = "reportRouteCreation"; | 58 const char kReportRouteCreation[] = "reportRouteCreation"; |
| 59 const char kReportSelectedCastMode[] = "reportSelectedCastMode"; | 59 const char kReportSelectedCastMode[] = "reportSelectedCastMode"; |
| 60 const char kReportSinkCount[] = "reportSinkCount"; | 60 const char kReportSinkCount[] = "reportSinkCount"; |
| 61 const char kReportTimeToClickSink[] = "reportTimeToClickSink"; | 61 const char kReportTimeToClickSink[] = "reportTimeToClickSink"; |
| 62 const char kReportTimeToInitialActionClose[] = "reportTimeToInitialActionClose"; | 62 const char kReportTimeToInitialActionClose[] = "reportTimeToInitialActionClose"; |
| 63 const char kSearchSinksAndCreateRoute[] = "searchSinksAndCreateRoute"; | 63 const char kSearchSinksAndCreateRoute[] = "searchSinksAndCreateRoute"; |
| 64 const char kOnInitialDataReceived[] = "onInitialDataReceived"; | 64 const char kOnInitialDataReceived[] = "onInitialDataReceived"; |
| 65 const char kOnRouteDetailsClosed[] = "onRouteDetailsClosed"; | |
|
mark a. foltz
2017/04/26 21:01:19
onMediaControllerAvailable
takumif
2017/04/27 03:04:18
Done.
| |
| 66 const char kOnRouteDetailsOpened[] = "onRouteDetailsOpened"; | |
|
mark a. foltz
2017/04/26 21:01:18
OnMediaControllerClosed
takumif
2017/04/27 03:04:18
Done.
| |
| 67 const char kPauseRoute[] = "pauseRoute"; | |
|
mark a. foltz
2017/04/26 21:01:19
Prefer pauseCurrentMedia, playCurrentMedia, etc.
takumif
2017/04/27 03:04:17
Done.
| |
| 68 const char kPlayRoute[] = "playRoute"; | |
| 69 const char kSeekRoute[] = "seekRoute"; | |
| 70 const char kSetRouteMute[] = "setRouteMute"; | |
| 71 const char kSetRouteVolume[] = "setRouteVolume"; | |
| 65 | 72 |
| 66 // JS function names. | 73 // JS function names. |
| 67 const char kSetInitialData[] = "media_router.ui.setInitialData"; | 74 const char kSetInitialData[] = "media_router.ui.setInitialData"; |
| 68 const char kOnCreateRouteResponseReceived[] = | 75 const char kOnCreateRouteResponseReceived[] = |
| 69 "media_router.ui.onCreateRouteResponseReceived"; | 76 "media_router.ui.onCreateRouteResponseReceived"; |
| 77 const char kOnRouteControllerInvalidated[] = | |
| 78 "media_router.ui.onRouteControllerInvalidated"; | |
| 70 const char kReceiveSearchResult[] = "media_router.ui.receiveSearchResult"; | 79 const char kReceiveSearchResult[] = "media_router.ui.receiveSearchResult"; |
| 71 const char kSetFirstRunFlowData[] = "media_router.ui.setFirstRunFlowData"; | 80 const char kSetFirstRunFlowData[] = "media_router.ui.setFirstRunFlowData"; |
| 72 const char kSetIssue[] = "media_router.ui.setIssue"; | 81 const char kSetIssue[] = "media_router.ui.setIssue"; |
| 73 const char kSetSinkListAndIdentity[] = "media_router.ui.setSinkListAndIdentity"; | 82 const char kSetSinkListAndIdentity[] = "media_router.ui.setSinkListAndIdentity"; |
| 74 const char kSetRouteList[] = "media_router.ui.setRouteList"; | 83 const char kSetRouteList[] = "media_router.ui.setRouteList"; |
| 75 const char kSetCastModeList[] = "media_router.ui.setCastModeList"; | 84 const char kSetCastModeList[] = "media_router.ui.setCastModeList"; |
| 76 const char kUpdateMaxHeight[] = "media_router.ui.updateMaxHeight"; | 85 const char kUpdateMaxHeight[] = "media_router.ui.updateMaxHeight"; |
| 86 const char kUpdateRouteStatus[] = "media_router.ui.updateRouteStatus"; | |
| 77 const char kWindowOpen[] = "window.open"; | 87 const char kWindowOpen[] = "window.open"; |
| 78 | 88 |
| 79 std::unique_ptr<base::DictionaryValue> SinksAndIdentityToValue( | 89 std::unique_ptr<base::DictionaryValue> SinksAndIdentityToValue( |
| 80 const std::vector<MediaSinkWithCastModes>& sinks, | 90 const std::vector<MediaSinkWithCastModes>& sinks, |
| 81 const AccountInfo& account_info) { | 91 const AccountInfo& account_info) { |
| 82 std::unique_ptr<base::DictionaryValue> sink_list_and_identity( | 92 std::unique_ptr<base::DictionaryValue> sink_list_and_identity( |
| 83 new base::DictionaryValue); | 93 new base::DictionaryValue); |
| 84 bool show_email = false; | 94 bool show_email = false; |
| 85 bool show_domain = false; | 95 bool show_domain = false; |
| 86 std::string user_domain; | 96 std::string user_domain; |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 307 void MediaRouterWebUIMessageHandler::ClearIssue() { | 317 void MediaRouterWebUIMessageHandler::ClearIssue() { |
| 308 DVLOG(2) << "ClearIssue"; | 318 DVLOG(2) << "ClearIssue"; |
| 309 web_ui()->CallJavascriptFunctionUnsafe(kSetIssue, base::Value()); | 319 web_ui()->CallJavascriptFunctionUnsafe(kSetIssue, base::Value()); |
| 310 } | 320 } |
| 311 | 321 |
| 312 void MediaRouterWebUIMessageHandler::UpdateMaxDialogHeight(int height) { | 322 void MediaRouterWebUIMessageHandler::UpdateMaxDialogHeight(int height) { |
| 313 DVLOG(2) << "UpdateMaxDialogHeight"; | 323 DVLOG(2) << "UpdateMaxDialogHeight"; |
| 314 web_ui()->CallJavascriptFunctionUnsafe(kUpdateMaxHeight, base::Value(height)); | 324 web_ui()->CallJavascriptFunctionUnsafe(kUpdateMaxHeight, base::Value(height)); |
| 315 } | 325 } |
| 316 | 326 |
| 327 void MediaRouterWebUIMessageHandler::UpdateMediaRouteStatus( | |
| 328 const MediaStatus& status) { | |
| 329 base::DictionaryValue status_value; | |
| 330 status_value.SetString("title", status.title); | |
| 331 status_value.SetString("description", status.description); | |
| 332 status_value.SetBoolean("canPlayPause", status.can_play_pause); | |
| 333 status_value.SetBoolean("canMute", status.can_mute); | |
| 334 status_value.SetBoolean("canSetVolume", status.can_set_volume); | |
| 335 status_value.SetBoolean("canSeek", status.can_seek); | |
| 336 status_value.SetBoolean("isPaused", status.is_paused); | |
| 337 status_value.SetBoolean("isMuted", status.is_muted); | |
| 338 status_value.SetInteger("duration", status.duration.InSeconds()); | |
| 339 status_value.SetInteger("currentTime", status.current_time.InSeconds()); | |
| 340 status_value.SetDouble("volume", status.volume); | |
| 341 web_ui()->CallJavascriptFunctionUnsafe(kUpdateRouteStatus, | |
| 342 std::move(status_value)); | |
|
mark a. foltz
2017/04/26 21:01:19
imcheng@: What did we conclude about migrating Web
imcheng
2017/04/26 21:48:39
We can migrate to Mojo, but just weren't sure how
| |
| 343 } | |
| 344 | |
| 345 void MediaRouterWebUIMessageHandler::OnRouteControllerInvalidated() { | |
| 346 web_ui()->CallJavascriptFunctionUnsafe(kOnRouteControllerInvalidated); | |
| 347 } | |
| 348 | |
| 317 void MediaRouterWebUIMessageHandler::RegisterMessages() { | 349 void MediaRouterWebUIMessageHandler::RegisterMessages() { |
| 318 web_ui()->RegisterMessageCallback( | 350 web_ui()->RegisterMessageCallback( |
| 319 kRequestInitialData, | 351 kRequestInitialData, |
| 320 base::Bind(&MediaRouterWebUIMessageHandler::OnRequestInitialData, | 352 base::Bind(&MediaRouterWebUIMessageHandler::OnRequestInitialData, |
| 321 base::Unretained(this))); | 353 base::Unretained(this))); |
| 322 web_ui()->RegisterMessageCallback( | 354 web_ui()->RegisterMessageCallback( |
| 323 kCreateRoute, | 355 kCreateRoute, |
| 324 base::Bind(&MediaRouterWebUIMessageHandler::OnCreateRoute, | 356 base::Bind(&MediaRouterWebUIMessageHandler::OnCreateRoute, |
| 325 base::Unretained(this))); | 357 base::Unretained(this))); |
| 326 web_ui()->RegisterMessageCallback( | 358 web_ui()->RegisterMessageCallback( |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 393 &MediaRouterWebUIMessageHandler::OnReportTimeToInitialActionClose, | 425 &MediaRouterWebUIMessageHandler::OnReportTimeToInitialActionClose, |
| 394 base::Unretained(this))); | 426 base::Unretained(this))); |
| 395 web_ui()->RegisterMessageCallback( | 427 web_ui()->RegisterMessageCallback( |
| 396 kSearchSinksAndCreateRoute, | 428 kSearchSinksAndCreateRoute, |
| 397 base::Bind(&MediaRouterWebUIMessageHandler::OnSearchSinksAndCreateRoute, | 429 base::Bind(&MediaRouterWebUIMessageHandler::OnSearchSinksAndCreateRoute, |
| 398 base::Unretained(this))); | 430 base::Unretained(this))); |
| 399 web_ui()->RegisterMessageCallback( | 431 web_ui()->RegisterMessageCallback( |
| 400 kOnInitialDataReceived, | 432 kOnInitialDataReceived, |
| 401 base::Bind(&MediaRouterWebUIMessageHandler::OnInitialDataReceived, | 433 base::Bind(&MediaRouterWebUIMessageHandler::OnInitialDataReceived, |
| 402 base::Unretained(this))); | 434 base::Unretained(this))); |
| 435 web_ui()->RegisterMessageCallback( | |
| 436 kOnRouteDetailsClosed, | |
| 437 base::Bind(&MediaRouterWebUIMessageHandler::OnRouteDetailsClosed, | |
| 438 base::Unretained(this))); | |
| 439 web_ui()->RegisterMessageCallback( | |
| 440 kOnRouteDetailsOpened, | |
| 441 base::Bind(&MediaRouterWebUIMessageHandler::OnRouteDetailsOpened, | |
| 442 base::Unretained(this))); | |
| 443 web_ui()->RegisterMessageCallback( | |
| 444 kPauseRoute, base::Bind(&MediaRouterWebUIMessageHandler::OnPauseRoute, | |
| 445 base::Unretained(this))); | |
| 446 web_ui()->RegisterMessageCallback( | |
| 447 kPlayRoute, base::Bind(&MediaRouterWebUIMessageHandler::OnPlayRoute, | |
| 448 base::Unretained(this))); | |
| 449 web_ui()->RegisterMessageCallback( | |
| 450 kSeekRoute, base::Bind(&MediaRouterWebUIMessageHandler::OnSeekRoute, | |
| 451 base::Unretained(this))); | |
| 452 web_ui()->RegisterMessageCallback( | |
| 453 kSetRouteMute, base::Bind(&MediaRouterWebUIMessageHandler::OnSetRouteMute, | |
| 454 base::Unretained(this))); | |
| 455 web_ui()->RegisterMessageCallback( | |
| 456 kSetRouteVolume, | |
| 457 base::Bind(&MediaRouterWebUIMessageHandler::OnSetRouteVolume, | |
| 458 base::Unretained(this))); | |
| 403 } | 459 } |
| 404 | 460 |
| 405 void MediaRouterWebUIMessageHandler::OnRequestInitialData( | 461 void MediaRouterWebUIMessageHandler::OnRequestInitialData( |
| 406 const base::ListValue* args) { | 462 const base::ListValue* args) { |
| 407 DVLOG(1) << "OnRequestInitialData"; | 463 DVLOG(1) << "OnRequestInitialData"; |
| 408 media_router_ui_->OnUIInitiallyLoaded(); | 464 media_router_ui_->OnUIInitiallyLoaded(); |
| 409 base::DictionaryValue initial_data; | 465 base::DictionaryValue initial_data; |
| 410 | 466 |
| 411 // "No Cast devices found?" Chromecast help center page. | 467 // "No Cast devices found?" Chromecast help center page. |
| 412 initial_data.SetString("deviceMissingUrl", | 468 initial_data.SetString("deviceMissingUrl", |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 427 initial_data.Set("castModes", std::move(cast_modes_list)); | 483 initial_data.Set("castModes", std::move(cast_modes_list)); |
| 428 | 484 |
| 429 // If the cast mode last chosen for the current origin is tab mirroring, | 485 // If the cast mode last chosen for the current origin is tab mirroring, |
| 430 // that should be the cast mode initially selected in the dialog. Otherwise | 486 // that should be the cast mode initially selected in the dialog. Otherwise |
| 431 // the initial cast mode should be chosen automatically by the dialog. | 487 // the initial cast mode should be chosen automatically by the dialog. |
| 432 bool use_tab_mirroring = | 488 bool use_tab_mirroring = |
| 433 base::ContainsKey(cast_modes, MediaCastMode::TAB_MIRROR) && | 489 base::ContainsKey(cast_modes, MediaCastMode::TAB_MIRROR) && |
| 434 media_router_ui_->UserSelectedTabMirroringForCurrentOrigin(); | 490 media_router_ui_->UserSelectedTabMirroringForCurrentOrigin(); |
| 435 initial_data.SetBoolean("useTabMirroring", use_tab_mirroring); | 491 initial_data.SetBoolean("useTabMirroring", use_tab_mirroring); |
| 436 | 492 |
| 493 initial_data.SetBoolean( | |
| 494 "useNewRouteControls", | |
| 495 base::FeatureList::IsEnabled(features::kMediaRouterUIRouteController)); | |
| 496 | |
| 437 web_ui()->CallJavascriptFunctionUnsafe(kSetInitialData, initial_data); | 497 web_ui()->CallJavascriptFunctionUnsafe(kSetInitialData, initial_data); |
| 438 media_router_ui_->UIInitialized(); | 498 media_router_ui_->UIInitialized(); |
| 439 } | 499 } |
| 440 | 500 |
| 441 void MediaRouterWebUIMessageHandler::OnCreateRoute( | 501 void MediaRouterWebUIMessageHandler::OnCreateRoute( |
| 442 const base::ListValue* args) { | 502 const base::ListValue* args) { |
| 443 DVLOG(1) << "OnCreateRoute"; | 503 DVLOG(1) << "OnCreateRoute"; |
| 444 const base::DictionaryValue* args_dict = nullptr; | 504 const base::DictionaryValue* args_dict = nullptr; |
| 445 std::string sink_id; | 505 std::string sink_id; |
| 446 int cast_mode_num = -1; | 506 int cast_mode_num = -1; |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 782 static_cast<MediaCastMode>(cast_mode_num)); | 842 static_cast<MediaCastMode>(cast_mode_num)); |
| 783 } | 843 } |
| 784 | 844 |
| 785 void MediaRouterWebUIMessageHandler::OnInitialDataReceived( | 845 void MediaRouterWebUIMessageHandler::OnInitialDataReceived( |
| 786 const base::ListValue* args) { | 846 const base::ListValue* args) { |
| 787 DVLOG(1) << "OnInitialDataReceived"; | 847 DVLOG(1) << "OnInitialDataReceived"; |
| 788 media_router_ui_->OnUIInitialDataReceived(); | 848 media_router_ui_->OnUIInitialDataReceived(); |
| 789 MaybeUpdateFirstRunFlowData(); | 849 MaybeUpdateFirstRunFlowData(); |
| 790 } | 850 } |
| 791 | 851 |
| 852 void MediaRouterWebUIMessageHandler::OnRouteDetailsClosed( | |
| 853 const base::ListValue* args) { | |
| 854 media_router_ui_->OnUIDetailsViewClosed(); | |
| 855 } | |
| 856 | |
| 857 void MediaRouterWebUIMessageHandler::OnRouteDetailsOpened( | |
| 858 const base::ListValue* args) { | |
| 859 const base::DictionaryValue* args_dict = nullptr; | |
| 860 std::string route_id; | |
| 861 if (!args->GetDictionary(0, &args_dict) || | |
| 862 !args_dict->GetString("routeId", &route_id)) { | |
| 863 DVLOG(1) << "Unable to extract media route ID"; | |
| 864 return; | |
| 865 } | |
| 866 media_router_ui_->OnUIDetailsViewOpened(route_id); | |
| 867 } | |
| 868 | |
| 869 void MediaRouterWebUIMessageHandler::OnPauseRoute(const base::ListValue* args) { | |
| 870 media_router_ui_->PauseRoute(); | |
| 871 } | |
| 872 | |
| 873 void MediaRouterWebUIMessageHandler::OnPlayRoute(const base::ListValue* args) { | |
| 874 media_router_ui_->PlayRoute(); | |
| 875 } | |
| 876 | |
| 877 void MediaRouterWebUIMessageHandler::OnSeekRoute(const base::ListValue* args) { | |
| 878 const base::DictionaryValue* args_dict = nullptr; | |
| 879 int time; | |
| 880 if (!args->GetDictionary(0, &args_dict) || | |
| 881 !args_dict->GetInteger("time", &time)) { | |
| 882 DVLOG(1) << "Unable to extract time"; | |
| 883 return; | |
| 884 } | |
| 885 media_router_ui_->SeekRoute(base::TimeDelta::FromSeconds(time)); | |
| 886 } | |
| 887 | |
| 888 void MediaRouterWebUIMessageHandler::OnSetRouteMute( | |
| 889 const base::ListValue* args) { | |
| 890 const base::DictionaryValue* args_dict = nullptr; | |
| 891 bool mute; | |
| 892 if (!args->GetDictionary(0, &args_dict) || | |
| 893 !args_dict->GetBoolean("mute", &mute)) { | |
| 894 DVLOG(1) << "Unable to extract mute"; | |
| 895 return; | |
| 896 } | |
| 897 media_router_ui_->SetRouteMute(mute); | |
| 898 } | |
| 899 | |
| 900 void MediaRouterWebUIMessageHandler::OnSetRouteVolume( | |
| 901 const base::ListValue* args) { | |
| 902 const base::DictionaryValue* args_dict = nullptr; | |
| 903 double volume; | |
| 904 if (!args->GetDictionary(0, &args_dict) || | |
| 905 !args_dict->GetDouble("volume", &volume)) { | |
| 906 DVLOG(1) << "Unable to extract volume"; | |
| 907 return; | |
| 908 } | |
| 909 media_router_ui_->SetRouteVolume(volume); | |
| 910 } | |
| 911 | |
| 792 bool MediaRouterWebUIMessageHandler::ActOnIssueType( | 912 bool MediaRouterWebUIMessageHandler::ActOnIssueType( |
| 793 IssueInfo::Action action_type, | 913 IssueInfo::Action action_type, |
| 794 const base::DictionaryValue* args) { | 914 const base::DictionaryValue* args) { |
| 795 if (action_type == IssueInfo::Action::LEARN_MORE) { | 915 if (action_type == IssueInfo::Action::LEARN_MORE) { |
| 796 std::string learn_more_url = GetLearnMoreUrl(args); | 916 std::string learn_more_url = GetLearnMoreUrl(args); |
| 797 if (learn_more_url.empty()) | 917 if (learn_more_url.empty()) |
| 798 return false; | 918 return false; |
| 799 std::unique_ptr<base::ListValue> open_args(new base::ListValue); | 919 std::unique_ptr<base::ListValue> open_args(new base::ListValue); |
| 800 open_args->AppendString(learn_more_url); | 920 open_args->AppendString(learn_more_url); |
| 801 web_ui()->CallJavascriptFunctionUnsafe(kWindowOpen, *open_args); | 921 web_ui()->CallJavascriptFunctionUnsafe(kWindowOpen, *open_args); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 894 } | 1014 } |
| 895 | 1015 |
| 896 return value; | 1016 return value; |
| 897 } | 1017 } |
| 898 | 1018 |
| 899 void MediaRouterWebUIMessageHandler::SetWebUIForTest(content::WebUI* web_ui) { | 1019 void MediaRouterWebUIMessageHandler::SetWebUIForTest(content::WebUI* web_ui) { |
| 900 set_web_ui(web_ui); | 1020 set_web_ui(web_ui); |
| 901 } | 1021 } |
| 902 | 1022 |
| 903 } // namespace media_router | 1023 } // namespace media_router |
| OLD | NEW |