Commit 0f6a46e6 authored by Muyao Xu's avatar Muyao Xu Committed by Commit Bot

[Cast+Zenith] Show the device selector for local media sessions only

This CL adds a |SourceType| enum to represent three different
notification item types: local media sessions, cast sessions, and
Presentation requests.
The device selector view should only show up for local media sessions.

Bug: b/161610050, 1107162
Change-Id: I45ac39af46e9aa931795fd5bb763f9c0c56c1f42
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2453891
Commit-Queue: Muyao Xu <muyaoxu@google.com>
Reviewed-by: default avatarTommy Steimel <steimel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814914}
parent eb63efb4
...@@ -200,8 +200,8 @@ void CastMediaNotificationItem::Dismiss() { ...@@ -200,8 +200,8 @@ void CastMediaNotificationItem::Dismiss() {
notification_controller_->HideNotification(media_route_id_); notification_controller_->HideNotification(media_route_id_);
} }
bool CastMediaNotificationItem::SourceIsCast() { media_message_center::SourceType CastMediaNotificationItem::SourceType() {
return true; return media_message_center::SourceType::kCast;
} }
void CastMediaNotificationItem::OnMediaStatusUpdated( void CastMediaNotificationItem::OnMediaStatusUpdated(
......
...@@ -52,7 +52,7 @@ class CastMediaNotificationItem ...@@ -52,7 +52,7 @@ class CastMediaNotificationItem
void OnMediaSessionActionButtonPressed( void OnMediaSessionActionButtonPressed(
media_session::mojom::MediaSessionAction action) override; media_session::mojom::MediaSessionAction action) override;
void Dismiss() override; void Dismiss() override;
bool SourceIsCast() override; media_message_center::SourceType SourceType() override;
// media_router::mojom::MediaStatusObserver: // media_router::mojom::MediaStatusObserver:
void OnMediaStatusUpdated( void OnMediaStatusUpdated(
......
...@@ -31,6 +31,7 @@ void PresentationRequestNotificationItem::OnMediaSessionActionButtonPressed( ...@@ -31,6 +31,7 @@ void PresentationRequestNotificationItem::OnMediaSessionActionButtonPressed(
void PresentationRequestNotificationItem::Dismiss() {} void PresentationRequestNotificationItem::Dismiss() {}
bool PresentationRequestNotificationItem::SourceIsCast() { media_message_center::SourceType
return false; PresentationRequestNotificationItem::SourceType() {
return media_message_center::SourceType::kPresentationRequest;
} }
...@@ -47,7 +47,7 @@ class PresentationRequestNotificationItem ...@@ -47,7 +47,7 @@ class PresentationRequestNotificationItem
void OnMediaSessionActionButtonPressed( void OnMediaSessionActionButtonPressed(
media_session::mojom::MediaSessionAction action) final; media_session::mojom::MediaSessionAction action) final;
void Dismiss() final; void Dismiss() final;
bool SourceIsCast() final; media_message_center::SourceType SourceType() override;
const std::string id_; const std::string id_;
MediaNotificationService* const notification_service_; MediaNotificationService* const notification_service_;
......
...@@ -123,7 +123,13 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView( ...@@ -123,7 +123,13 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView(
dismiss_button_container_->AddChildView(std::move(dismiss_button)); dismiss_button_container_->AddChildView(std::move(dismiss_button));
UpdateDismissButtonIcon(); UpdateDismissButtonIcon();
bool is_cast_notification = item ? item->SourceIsCast() : false; bool is_local_media_session =
item ? item->SourceType() ==
media_message_center::SourceType::kLocalMediaSession
: false;
bool is_cast_notification =
item ? item->SourceType() == media_message_center::SourceType::kCast
: false;
if (is_cast_notification) { if (is_cast_notification) {
cast_item_ = static_cast<CastMediaNotificationItem*>(item.get()); cast_item_ = static_cast<CastMediaNotificationItem*>(item.get());
} }
...@@ -177,7 +183,7 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView( ...@@ -177,7 +183,7 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView(
if (base::FeatureList::IsEnabled( if (base::FeatureList::IsEnabled(
media::kGlobalMediaControlsSeamlessTransfer) && media::kGlobalMediaControlsSeamlessTransfer) &&
!is_cast_notification) { is_local_media_session) {
auto cast_controller = auto cast_controller =
media_router::GlobalMediaControlsCastStartStopEnabled() media_router::GlobalMediaControlsCastStartStopEnabled()
? service_->CreateCastDialogControllerForSession(id_) ? service_->CreateCastDialogControllerForSession(id_)
......
...@@ -16,6 +16,13 @@ ...@@ -16,6 +16,13 @@
namespace media_message_center { namespace media_message_center {
enum class SourceType {
kLocalMediaSession,
kCast,
kPresentationRequest,
kMaxValue = kPresentationRequest,
};
class MediaNotificationView; class MediaNotificationView;
// MediaNotificationItem manages hiding/showing a MediaNotificationView. // MediaNotificationItem manages hiding/showing a MediaNotificationView.
...@@ -58,8 +65,8 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationItem { ...@@ -58,8 +65,8 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationItem {
// Hides the media notification. // Hides the media notification.
virtual void Dismiss() = 0; virtual void Dismiss() = 0;
// Return true if this item belongs to a cast media session, false otherwise. // Returns the type of source.
virtual bool SourceIsCast() = 0; virtual SourceType SourceType() = 0;
}; };
} // namespace media_message_center } // namespace media_message_center
......
...@@ -165,8 +165,8 @@ void MediaSessionNotificationItem::Dismiss() { ...@@ -165,8 +165,8 @@ void MediaSessionNotificationItem::Dismiss() {
controller_->RemoveItem(request_id_); controller_->RemoveItem(request_id_);
} }
bool MediaSessionNotificationItem::SourceIsCast() { media_message_center::SourceType MediaSessionNotificationItem::SourceType() {
return false; return media_message_center::SourceType::kLocalMediaSession;
} }
void MediaSessionNotificationItem::SetController( void MediaSessionNotificationItem::SetController(
......
...@@ -68,7 +68,7 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaSessionNotificationItem ...@@ -68,7 +68,7 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaSessionNotificationItem
// This will stop the media session associated with this item. The item will // This will stop the media session associated with this item. The item will
// then call |MediaNotificationController::RemoveItem()| to ensure removal. // then call |MediaNotificationController::RemoveItem()| to ensure removal.
void Dismiss() override; void Dismiss() override;
bool SourceIsCast() override; media_message_center::SourceType SourceType() override;
base::WeakPtr<MediaSessionNotificationItem> GetWeakPtr() { base::WeakPtr<MediaSessionNotificationItem> GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr(); return weak_ptr_factory_.GetWeakPtr();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment