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

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 Derek's comments 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 bool MediaRouterUI::UserSelectedTabMirroringForCurrentHost() const {
514 const base::DictionaryValue* pref =
515 Profile::FromWebUI(web_ui())->GetPrefs()->GetDictionary(
516 prefs::kMediaRouterTabMirroringSelected);
517 bool tab_mirroring = false;
518 pref->GetBooleanWithoutPathExpansion(GetInitiatorHostname(), &tab_mirroring);
519 return tab_mirroring;
520 }
521
522 void MediaRouterUI::RecordCastModeSelection(MediaCastMode cast_mode) {
523 DictionaryPrefUpdate update(Profile::FromWebUI(web_ui())->GetPrefs(),
524 prefs::kMediaRouterTabMirroringSelected);
525
526 switch (cast_mode) {
527 case MediaCastMode::DEFAULT:
528 update->RemoveWithoutPathExpansion(GetInitiatorHostname(), nullptr);
529 break;
530 case MediaCastMode::TAB_MIRROR:
531 update->SetBooleanWithoutPathExpansion(GetInitiatorHostname(), true);
532 break;
533 case MediaCastMode::DESKTOP_MIRROR:
534 // Desktop mirroring isn't domain-specific, so we don't record the
535 // selection.
536 break;
537 default:
538 NOTREACHED();
539 break;
540 }
541 }
542
510 void MediaRouterUI::OnResultsUpdated( 543 void MediaRouterUI::OnResultsUpdated(
511 const std::vector<MediaSinkWithCastModes>& sinks) { 544 const std::vector<MediaSinkWithCastModes>& sinks) {
512 sinks_ = sinks; 545 sinks_ = sinks;
513 546
514 const icu::Collator* collator_ptr = collator_.get(); 547 const icu::Collator* collator_ptr = collator_.get();
515 std::sort(sinks_.begin(), sinks_.end(), 548 std::sort(sinks_.begin(), sinks_.end(),
516 [collator_ptr](const MediaSinkWithCastModes& sink1, 549 [collator_ptr](const MediaSinkWithCastModes& sink1,
517 const MediaSinkWithCastModes& sink2) { 550 const MediaSinkWithCastModes& sink2) {
518 return sink1.sink.CompareUsingCollator(sink2.sink, collator_ptr); 551 return sink1.sink.CompareUsingCollator(sink2.sink, collator_ptr);
519 }); 552 });
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 MediaRouterMetrics::RecordMediaRouterDialogLoaded( 722 MediaRouterMetrics::RecordMediaRouterDialogLoaded(
690 base::Time::Now() - start_time_); 723 base::Time::Now() - start_time_);
691 start_time_ = base::Time(); 724 start_time_ = base::Time();
692 } 725 }
693 } 726 }
694 727
695 void MediaRouterUI::UpdateMaxDialogHeight(int height) { 728 void MediaRouterUI::UpdateMaxDialogHeight(int height) {
696 handler_->UpdateMaxDialogHeight(height); 729 handler_->UpdateMaxDialogHeight(height);
697 } 730 }
698 731
732 std::string MediaRouterUI::GetInitiatorHostname() const {
733 return initiator_ ? initiator_->GetLastCommittedURL().HostNoBrackets() : "";
734 }
735
699 } // namespace media_router 736 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698