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

Side by Side Diff: chrome/browser/ui/webui/media_router/media_router_ui.cc

Issue 2487673003: [Media Router] Make per-hostname cast mode selections persist (Closed)
Patch Set: Address Jennifer's comments, rebase Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
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_ui.h" 5 #include "chrome/browser/ui/webui/media_router/media_router_ui.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <unordered_map> 9 #include <unordered_map>
10 #include <utility> 10 #include <utility>
(...skipping 18 matching lines...) Expand all
29 #include "chrome/browser/media/router/media_source.h" 29 #include "chrome/browser/media/router/media_source.h"
30 #include "chrome/browser/media/router/media_source_helper.h" 30 #include "chrome/browser/media/router/media_source_helper.h"
31 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h" 31 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h"
32 #include "chrome/browser/media/router/presentation_service_delegate_impl.h" 32 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
33 #include "chrome/browser/media/router/route_request_result.h" 33 #include "chrome/browser/media/router/route_request_result.h"
34 #include "chrome/browser/profiles/profile.h" 34 #include "chrome/browser/profiles/profile.h"
35 #include "chrome/browser/sessions/session_tab_helper.h" 35 #include "chrome/browser/sessions/session_tab_helper.h"
36 #include "chrome/browser/ui/webui/media_router/media_router_localized_strings_pr ovider.h" 36 #include "chrome/browser/ui/webui/media_router/media_router_localized_strings_pr ovider.h"
37 #include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h " 37 #include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h "
38 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h" 38 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h"
39 #include "chrome/common/pref_names.h"
39 #include "chrome/common/url_constants.h" 40 #include "chrome/common/url_constants.h"
40 #include "chrome/grit/generated_resources.h" 41 #include "chrome/grit/generated_resources.h"
42 #include "components/prefs/pref_service.h"
43 #include "components/prefs/scoped_user_pref_update.h"
41 #include "content/public/browser/web_contents.h" 44 #include "content/public/browser/web_contents.h"
42 #include "content/public/browser/web_ui.h" 45 #include "content/public/browser/web_ui.h"
43 #include "content/public/browser/web_ui_data_source.h" 46 #include "content/public/browser/web_ui_data_source.h"
44 #include "extensions/browser/extension_registry.h" 47 #include "extensions/browser/extension_registry.h"
45 #include "extensions/common/constants.h" 48 #include "extensions/common/constants.h"
46 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" 49 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
47 #include "third_party/icu/source/i18n/unicode/coll.h" 50 #include "third_party/icu/source/i18n/unicode/coll.h"
48 #include "ui/base/l10n/l10n_util.h" 51 #include "ui/base/l10n/l10n_util.h"
49 #include "ui/web_dialogs/web_dialog_delegate.h" 52 #include "ui/web_dialogs/web_dialog_delegate.h"
50 53
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 const std::string source_id = source ? source->id() : ""; 503 const std::string source_id = source ? source->id() : "";
501 504
502 // The CreateRoute() part of the function is accomplished in the callback 505 // The CreateRoute() part of the function is accomplished in the callback
503 // OnSearchSinkResponseReceived(). 506 // OnSearchSinkResponseReceived().
504 router_->SearchSinks( 507 router_->SearchSinks(
505 sink_id, source_id, search_criteria, domain, 508 sink_id, source_id, search_criteria, domain,
506 base::Bind(&MediaRouterUI::OnSearchSinkResponseReceived, 509 base::Bind(&MediaRouterUI::OnSearchSinkResponseReceived,
507 weak_factory_.GetWeakPtr(), cast_mode)); 510 weak_factory_.GetWeakPtr(), cast_mode));
508 } 511 }
509 512
513 MediaCastMode MediaRouterUI::GetCastModeSelectionForCurrentHost() const {
514 const base::DictionaryValue* selections =
515 Profile::FromWebUI(web_ui())->GetPrefs()->GetDictionary(
516 prefs::kMediaRouterCastModeSelections);
517 int cast_mode = MediaCastMode::DEFAULT;
518 selections->GetInteger(GetInitiatorHostname(), &cast_mode);
519 return static_cast<MediaCastMode>(cast_mode);
imcheng 2016/11/14 19:32:27 DCHECK the value from pref that it is a valid cast
takumif 2016/11/16 01:34:27 Done.
520 }
521
522 void MediaRouterUI::RecordCastModeSelection(MediaCastMode cast_mode) {
523 // Desktop mirroring isn't domain-specific, so we don't record the selection.
524 if (cast_mode == MediaCastMode::DESKTOP_MIRROR)
525 return;
526
527 DictionaryPrefUpdate update(Profile::FromWebUI(web_ui())->GetPrefs(),
528 prefs::kMediaRouterCastModeSelections);
529 update->SetInteger(GetInitiatorHostname(), static_cast<int>(cast_mode));
530 }
531
510 void MediaRouterUI::OnResultsUpdated( 532 void MediaRouterUI::OnResultsUpdated(
511 const std::vector<MediaSinkWithCastModes>& sinks) { 533 const std::vector<MediaSinkWithCastModes>& sinks) {
512 sinks_ = sinks; 534 sinks_ = sinks;
513 535
514 const icu::Collator* collator_ptr = collator_.get(); 536 const icu::Collator* collator_ptr = collator_.get();
515 std::sort(sinks_.begin(), sinks_.end(), 537 std::sort(sinks_.begin(), sinks_.end(),
516 [collator_ptr](const MediaSinkWithCastModes& sink1, 538 [collator_ptr](const MediaSinkWithCastModes& sink1,
517 const MediaSinkWithCastModes& sink2) { 539 const MediaSinkWithCastModes& sink2) {
518 return sink1.sink.CompareUsingCollator(sink2.sink, collator_ptr); 540 return sink1.sink.CompareUsingCollator(sink2.sink, collator_ptr);
519 }); 541 });
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 MediaRouterMetrics::RecordMediaRouterDialogLoaded( 711 MediaRouterMetrics::RecordMediaRouterDialogLoaded(
690 base::Time::Now() - start_time_); 712 base::Time::Now() - start_time_);
691 start_time_ = base::Time(); 713 start_time_ = base::Time();
692 } 714 }
693 } 715 }
694 716
695 void MediaRouterUI::UpdateMaxDialogHeight(int height) { 717 void MediaRouterUI::UpdateMaxDialogHeight(int height) {
696 handler_->UpdateMaxDialogHeight(height); 718 handler_->UpdateMaxDialogHeight(height);
697 } 719 }
698 720
721 std::string MediaRouterUI::GetInitiatorHostname() const {
722 return initiator_ ? initiator_->GetLastCommittedURL().HostNoBrackets() : "";
723 }
724
699 } // namespace media_router 725 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698