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() {
notification_controller_->HideNotification(media_route_id_);
}
bool CastMediaNotificationItem::SourceIsCast() {
return true;
media_message_center::SourceType CastMediaNotificationItem::SourceType() {
return media_message_center::SourceType::kCast;
}
void CastMediaNotificationItem::OnMediaStatusUpdated(
......
......@@ -52,7 +52,7 @@ class CastMediaNotificationItem
void OnMediaSessionActionButtonPressed(
media_session::mojom::MediaSessionAction action) override;
void Dismiss() override;
bool SourceIsCast() override;
media_message_center::SourceType SourceType() override;
// media_router::mojom::MediaStatusObserver:
void OnMediaStatusUpdated(
......
......@@ -31,6 +31,7 @@ void PresentationRequestNotificationItem::OnMediaSessionActionButtonPressed(
void PresentationRequestNotificationItem::Dismiss() {}
bool PresentationRequestNotificationItem::SourceIsCast() {
return false;
media_message_center::SourceType
PresentationRequestNotificationItem::SourceType() {
return media_message_center::SourceType::kPresentationRequest;
}
......@@ -47,7 +47,7 @@ class PresentationRequestNotificationItem
void OnMediaSessionActionButtonPressed(
media_session::mojom::MediaSessionAction action) final;
void Dismiss() final;
bool SourceIsCast() final;
media_message_center::SourceType SourceType() override;
const std::string id_;
MediaNotificationService* const notification_service_;
......
......@@ -123,7 +123,13 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView(
dismiss_button_container_->AddChildView(std::move(dismiss_button));
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) {
cast_item_ = static_cast<CastMediaNotificationItem*>(item.get());
}
......@@ -177,7 +183,7 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView(
if (base::FeatureList::IsEnabled(
media::kGlobalMediaControlsSeamlessTransfer) &&
!is_cast_notification) {
is_local_media_session) {
auto cast_controller =
media_router::GlobalMediaControlsCastStartStopEnabled()
? service_->CreateCastDialogControllerForSession(id_)
......
......@@ -16,6 +16,13 @@
namespace media_message_center {
enum class SourceType {
kLocalMediaSession,
kCast,
kPresentationRequest,
kMaxValue = kPresentationRequest,
};
class MediaNotificationView;
// MediaNotificationItem manages hiding/showing a MediaNotificationView.
......@@ -58,8 +65,8 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationItem {
// Hides the media notification.
virtual void Dismiss() = 0;
// Return true if this item belongs to a cast media session, false otherwise.
virtual bool SourceIsCast() = 0;
// Returns the type of source.
virtual SourceType SourceType() = 0;
};
} // namespace media_message_center
......
......@@ -165,8 +165,8 @@ void MediaSessionNotificationItem::Dismiss() {
controller_->RemoveItem(request_id_);
}
bool MediaSessionNotificationItem::SourceIsCast() {
return false;
media_message_center::SourceType MediaSessionNotificationItem::SourceType() {
return media_message_center::SourceType::kLocalMediaSession;
}
void MediaSessionNotificationItem::SetController(
......
......@@ -68,7 +68,7 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaSessionNotificationItem
// This will stop the media session associated with this item. The item will
// then call |MediaNotificationController::RemoveItem()| to ensure removal.
void Dismiss() override;
bool SourceIsCast() override;
media_message_center::SourceType SourceType() override;
base::WeakPtr<MediaSessionNotificationItem> 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