[M120 Migration][VD] Enable direct rendering for TVPlus
[platform/framework/web/chromium-efl.git] / components / system_media_controls / system_media_controls.h
1 // Copyright 2019 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_SYSTEM_MEDIA_CONTROLS_SYSTEM_MEDIA_CONTROLS_H_
6 #define COMPONENTS_SYSTEM_MEDIA_CONTROLS_SYSTEM_MEDIA_CONTROLS_H_
7
8 #include <string>
9
10 #include "base/component_export.h"
11 #include "services/media_session/public/cpp/media_position.h"
12 #include "third_party/skia/include/core/SkBitmap.h"
13
14 namespace system_media_controls {
15
16 class SystemMediaControlsObserver;
17
18 // OSes often provide a system-level media controls API (e.g. Media Player
19 // Remote Interfacing Specification on Linux or System Media Transport Controls
20 // on Windows). These tend to have similar APIs to each other.
21 // SystemMediaControls is a platform-agnostic API that clients can use to
22 // interface with the operating system's media controls API if it exists.
23 class COMPONENT_EXPORT(SYSTEM_MEDIA_CONTROLS) SystemMediaControls {
24  public:
25   enum class PlaybackStatus {
26     kPlaying,
27     kPaused,
28     kStopped,
29   };
30
31   // |window| used by Windows OS for web app (dPWA) connections.
32   static std::unique_ptr<SystemMediaControls> Create(
33       const std::string& product_name,
34       int window = -1);
35
36   virtual ~SystemMediaControls() = default;
37
38   virtual void AddObserver(SystemMediaControlsObserver* observer) = 0;
39   virtual void RemoveObserver(SystemMediaControlsObserver* observer) = 0;
40
41   // Enable or disable the service.
42   virtual void SetEnabled(bool enabled) = 0;
43
44   // Enable or disable specific controls.
45   virtual void SetIsNextEnabled(bool value) = 0;
46   virtual void SetIsPreviousEnabled(bool value) = 0;
47   virtual void SetIsPlayPauseEnabled(bool value) = 0;
48   virtual void SetIsStopEnabled(bool value) = 0;
49   virtual void SetIsSeekToEnabled(bool value) {}
50
51   // Setters for metadata.
52   virtual void SetPlaybackStatus(PlaybackStatus value) = 0;
53   virtual void SetID(const std::string* value) {}
54   virtual void SetTitle(const std::u16string& value) = 0;
55   virtual void SetArtist(const std::u16string& value) = 0;
56   virtual void SetAlbum(const std::u16string& value) = 0;
57   virtual void SetThumbnail(const SkBitmap& bitmap) = 0;
58   virtual void SetPosition(const media_session::MediaPosition& position) {}
59
60   // Helpers for metadata
61   virtual void ClearThumbnail() = 0;
62   virtual void ClearMetadata() = 0;
63   virtual void UpdateDisplay() = 0;
64 };
65
66 }  // namespace system_media_controls
67
68 #endif  // COMPONENTS_SYSTEM_MEDIA_CONTROLS_SYSTEM_MEDIA_CONTROLS_H_