blob: 9af478887fb41f5dfd98ffcfda686720f7a20bad [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_MEDIA_MESSAGE_CENTER_MEDIA_NOTIFICATION_VIEW_H_
#define COMPONENTS_MEDIA_MESSAGE_CENTER_MEDIA_NOTIFICATION_VIEW_H_
#include "base/containers/flat_set.h"
#include "services/media_session/public/mojom/media_session.mojom.h"
#include "ui/views/view.h"
namespace gfx {
class ImageSkia;
struct VectorIcon;
} // namespace gfx
namespace media_session {
struct MediaMetadata;
} // namespace media_session
namespace media_message_center {
// MediaNotificationView will show up as a custom view. It will show the
// currently playing media and provide playback controls.
class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationView
: public views::View {
public:
// When |forced_expanded_state| has a value, the notification will be forced
// into that expanded state and the user won't be given a button to toggle the
// expanded state. Subsequent |SetExpanded()| calls will be ignored until
// |SetForcedExpandedState(nullptr)| is called.
virtual void SetForcedExpandedState(bool* forced_expanded_state) = 0;
virtual void SetExpanded(bool expanded) = 0;
virtual void UpdateCornerRadius(int top_radius, int bottom_radius) = 0;
virtual void UpdateWithMediaSessionInfo(
const media_session::mojom::MediaSessionInfoPtr& session_info) = 0;
virtual void UpdateWithMediaMetadata(
const media_session::MediaMetadata& metadata) = 0;
virtual void UpdateWithMediaActions(
const base::flat_set<media_session::mojom::MediaSessionAction>&
actions) = 0;
virtual void UpdateWithMediaPosition(
const media_session::MediaPosition& position) = 0;
virtual void UpdateWithMediaArtwork(const gfx::ImageSkia& image) = 0;
// Updates the background color to match that of the favicon.
virtual void UpdateWithFavicon(const gfx::ImageSkia& icon) = 0;
// Sets the icon to be displayed in the notification's header section.
// |vector_icon| must outlive the MediaNotificationView.
virtual void UpdateWithVectorIcon(const gfx::VectorIcon& vector_icon) = 0;
virtual void UpdateDeviceSelectorAvailability(bool availability) = 0;
// Called by MediaNotificationItem to update mute state.
virtual void UpdateWithMuteStatus(bool mute) = 0;
// Called by MediaNotificationitem to update volume.
virtual void UpdateWithVolume(float volume) = 0;
};
} // namespace media_message_center
#endif // COMPONENTS_MEDIA_MESSAGE_CENTER_MEDIA_NOTIFICATION_VIEW_H_