#ifndef CHROME_BROWSER_UI_VIEWS_GLOBAL_MEDIA_CONTROLS_MEDIA_ITEM_UI_HELPER_H_
#define CHROME_BROWSER_UI_VIEWS_GLOBAL_MEDIA_CONTROLS_MEDIA_ITEM_UI_HELPER_H_
#include <memory>
#include <optional>
#include <string>
#include "base/memory/weak_ptr.h"
#include "components/global_media_controls/public/constants.h"
#include "components/global_media_controls/public/mojom/device_service.mojom.h"
#include "components/media_message_center/notification_theme.h"
class MediaItemUIDeviceSelectorDelegate;
class Profile;
namespace content {
class BrowserContext;
}
namespace gfx {
struct VectorIcon;
}
namespace global_media_controls {
class MediaItemUIDeviceSelector;
class MediaItemUIFooter;
}
namespace global_media_controls::mojom {
class DeviceService;
}
namespace media_message_center {
class MediaNotificationItem;
}
namespace media_router {
class MediaRoute;
}
struct HostAndClientPair { … };
bool ShouldShowDeviceSelectorView(
Profile* profile,
global_media_controls::mojom::DeviceService* device_service,
const std::string& item_id,
const base::WeakPtr<media_message_center::MediaNotificationItem>& item,
MediaItemUIDeviceSelectorDelegate* selector_delegate);
HostAndClientPair CreateHostAndClient(
Profile* profile,
const std::string& id,
const base::WeakPtr<media_message_center::MediaNotificationItem>& item,
global_media_controls::mojom::DeviceService* device_service);
base::RepeatingClosure GetStopCastingCallback(
Profile* profile,
const std::string& id,
const base::WeakPtr<media_message_center::MediaNotificationItem>& item);
bool HasRemotePlaybackRoute(
base::WeakPtr<media_message_center::MediaNotificationItem> item);
std::optional<media_router::MediaRoute> GetSessionRoute(
const std::string& item_id,
base::WeakPtr<media_message_center::MediaNotificationItem> item,
content::BrowserContext* context);
std::unique_ptr<global_media_controls::MediaItemUIDeviceSelector>
BuildDeviceSelector(
const std::string& id,
base::WeakPtr<media_message_center::MediaNotificationItem> item,
global_media_controls::mojom::DeviceService* device_service,
MediaItemUIDeviceSelectorDelegate* selector_delegate,
Profile* profile,
global_media_controls::GlobalMediaControlsEntryPoint entry_point,
bool show_devices = false,
std::optional<media_message_center::MediaColorTheme> media_color_theme =
std::nullopt);
std::unique_ptr<global_media_controls::MediaItemUIFooter> BuildFooter(
const std::string& id,
base::WeakPtr<media_message_center::MediaNotificationItem> item,
Profile* profile,
std::optional<media_message_center::MediaColorTheme> media_color_theme =
std::nullopt);
media_message_center::MediaColorTheme GetMediaColorTheme();
const gfx::VectorIcon& GetVectorIcon(
global_media_controls::mojom::IconType icon);
#endif