[MediaController] Add new capability APIs (#5472)
authorHaesu Gwon <haesu.gwon@samsung.com>
Fri, 11 Aug 2023 05:22:40 +0000 (14:22 +0900)
committerGitHub <noreply@github.com>
Fri, 11 Aug 2023 05:22:40 +0000 (14:22 +0900)
src/Tizen.Multimedia.Remoting/MediaController/CustomCommandCapabilityUpdatedEventArgs.cs [new file with mode: 0644]
src/Tizen.Multimedia.Remoting/MediaController/InternalEnums.cs
src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs
src/Tizen.Multimedia.Remoting/MediaController/MediaController.Events.cs
src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs
src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs
src/Tizen.Multimedia.Remoting/MediaController/Mode360CapabilityUpdatedEventArgs.cs [new file with mode: 0644]
src/Tizen.Multimedia.Remoting/MediaController/PlaybackPositionCapabilityUpdatedEventArgs.cs [new file with mode: 0644]
src/Tizen.Multimedia.Remoting/MediaController/PlaylistCapabilityUpdatedEventArgs.cs [new file with mode: 0644]
src/Tizen.Multimedia.Remoting/MediaController/SearchCapabilityUpdatedEventArgs.cs [new file with mode: 0644]
src/Tizen.Multimedia.Remoting/MediaController/SubtitleCapabilityUpdatedEventArgs.cs [new file with mode: 0644]

diff --git a/src/Tizen.Multimedia.Remoting/MediaController/CustomCommandCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/CustomCommandCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..fef9e6a
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia.Remoting
+{
+    /// <summary>
+    /// Provides data for the <see cref="MediaController.CustomCommandCapabilityUpdated"/> event.
+    /// </summary>
+    /// <since_tizen> 11 </since_tizen>
+    public class CustomCommandCapabilityUpdatedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="CustomCommandCapabilityUpdatedEventArgs"/> class.
+        /// </summary>
+        /// <param name="support">The custom command capability.</param>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is not valid.</exception>
+        /// <seealso cref="CustomCommand"/>
+        /// <since_tizen> 11 </since_tizen>
+        internal CustomCommandCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Support = support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the custom command is supported or not.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport Support { get; }
+    }
+}
\ No newline at end of file
index 1ce95d7..f981c34 100644 (file)
@@ -92,7 +92,7 @@ namespace Tizen.Multimedia.Remoting
         Repeat,
         PlaybackPosition,
         Playlist,
-        ClientCustom,
+        CustomCommand, // The same as CLIENT_CUSTOM of native fw
         Search,
         Subtitle,
         Mode360
index 7e0d5e3..a3e24af 100644 (file)
@@ -638,6 +638,82 @@ namespace Tizen.Multimedia.Remoting
         }
 
         /// <summary>
+        /// Sets the <see cref="MediaControlCapabilitySupport"/> indicating playback position is supported or not.
+        /// </summary>
+        /// <param name="support">A value indicating whether the playback position is supported or not.</param>
+        /// <exception cref="InvalidOperationException">
+        ///     The server is not running .<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is invalid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public static void SetPlaybackPositionCapability(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.PlaybackPosition, support).
+                ThrowIfError("Failed to set playback position capability.");
+        }
+
+        /// <summary>
+        /// Sets the <see cref="MediaControlCapabilitySupport"/> indicating playlist is supported or not.
+        /// </summary>
+        /// <param name="support">A value indicating whether the playlist is supported or not.</param>
+        /// <exception cref="InvalidOperationException">
+        ///     The server is not running .<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is invalid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public static void SetPlaylistCapability(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.Playlist, support).
+                ThrowIfError("Failed to set playlist capability.");
+        }
+
+        /// <summary>
+        /// Sets the <see cref="MediaControlCapabilitySupport"/> indicating custom command is supported or not.
+        /// </summary>
+        /// <param name="support">A value indicating whether the custom command is supported or not.</param>
+        /// <exception cref="InvalidOperationException">
+        ///     The server is not running .<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is invalid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public static void SetCustomCommandCapability(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.CustomCommand, support).
+                ThrowIfError("Failed to set custom command capability.");
+        }
+
+        /// <summary>
+        /// Sets the <see cref="MediaControlCapabilitySupport"/> indicating search is supported or not.
+        /// </summary>
+        /// <param name="support">A value indicating whether the search is supported or not.</param>
+        /// <exception cref="InvalidOperationException">
+        ///     The server is not running .<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is invalid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public static void SetSearchCapability(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.Search, support).
+                ThrowIfError("Failed to set search capability.");
+        }
+
+        /// <summary>
         /// Sets the <see cref="MediaControlCapabilitySupport"/> indicating whether subtitle mode is supported or not.
         /// </summary>
         /// <param name="support">A value indicating whether the subtitle mode is supported or not.</param>
index a9b0fa7..98907a6 100644 (file)
@@ -237,7 +237,7 @@ namespace Tizen.Multimedia.Remoting
         }
 
         /// <summary>
-        /// Occurs when the repeat mode capabilities are updated.
+        /// Occurs when the repeat mode capability is updated.
         /// </summary>
         /// <since_tizen> 5 </since_tizen>
         public event EventHandler<RepeatModeCapabilityUpdatedEventArgs> RepeatModeCapabilityUpdated;
@@ -248,7 +248,7 @@ namespace Tizen.Multimedia.Remoting
         }
 
         /// <summary>
-        /// Occurs when the shuffle mode capabilities are updated.
+        /// Occurs when the shuffle mode capability is updated.
         /// </summary>
         /// <since_tizen> 5 </since_tizen>
         public event EventHandler<ShuffleModeCapabilityUpdatedEventArgs> ShuffleModeCapabilityUpdated;
@@ -259,7 +259,73 @@ namespace Tizen.Multimedia.Remoting
         }
 
         /// <summary>
-        /// Occurs when the display mode capabilities are updated.
+        /// Occurs when the playback position capability is updated.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<PlaybackPositionCapabilityUpdatedEventArgs> PlaybackPositionCapabilityUpdated;
+
+        internal void RaisePlaybackPositionCapabilityUpdatedEvent(MediaControlCapabilitySupport support)
+        {
+            PlaybackPositionCapabilityUpdated?.Invoke(this, new PlaybackPositionCapabilityUpdatedEventArgs(support));
+        }
+
+        /// <summary>
+        /// Occurs when the playlist capability is updated.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<PlaylistCapabilityUpdatedEventArgs> PlaylistCapabilityUpdated;
+
+        internal void RaisePlaylistCapabilityUpdatedEvent(MediaControlCapabilitySupport support)
+        {
+            PlaylistCapabilityUpdated?.Invoke(this, new PlaylistCapabilityUpdatedEventArgs(support));
+        }
+
+        /// <summary>
+        /// Occurs when the custom command capability is updated.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<CustomCommandCapabilityUpdatedEventArgs> CustomCommandCapabilityUpdated;
+
+        internal void RaiseCustomCommandCapabilityUpdatedEvent(MediaControlCapabilitySupport support)
+        {
+            CustomCommandCapabilityUpdated?.Invoke(this, new CustomCommandCapabilityUpdatedEventArgs(support));
+        }
+
+        /// <summary>
+        /// Occurs when the search capability is updated.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<SearchCapabilityUpdatedEventArgs> SearchCapabilityUpdated;
+
+        internal void RaiseSearchCapabilityUpdatedEvent(MediaControlCapabilitySupport support)
+        {
+            SearchCapabilityUpdated?.Invoke(this, new SearchCapabilityUpdatedEventArgs(support));
+        }
+
+        /// <summary>
+        /// Occurs when the subtitle capability is updated.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<SubtitleCapabilityUpdatedEventArgs> SubtitleCapabilityUpdated;
+
+        internal void RaiseSubtitleCapabilityUpdatedEvent(MediaControlCapabilitySupport support)
+        {
+            SubtitleCapabilityUpdated?.Invoke(this, new SubtitleCapabilityUpdatedEventArgs(support));
+        }
+
+        /// <summary>
+        /// Occurs when the mode360 capability is updated.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public event EventHandler<Mode360CapabilityUpdatedEventArgs> Mode360CapabilityUpdated;
+
+        internal void RaiseMode360CapabilityUpdatedEvent(MediaControlCapabilitySupport support)
+        {
+            Mode360CapabilityUpdated?.Invoke(this, new Mode360CapabilityUpdatedEventArgs(support));
+        }
+
+        /// <summary>
+        /// Occurs when the display mode capability is updated.
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
         public event EventHandler<DisplayModeCapabilityUpdatedEventArgs> DisplayModeCapabilityUpdated;
@@ -270,7 +336,7 @@ namespace Tizen.Multimedia.Remoting
         }
 
         /// <summary>
-        /// Occurs when the display rotation capabilities are updated.
+        /// Occurs when the display rotation capability is updated.
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
         public event EventHandler<DisplayRotationCapabilityUpdatedEventArgs> DisplayRotationCapabilityUpdated;
index 51ac909..6aaf55d 100644 (file)
@@ -680,6 +680,90 @@ namespace Tizen.Multimedia.Remoting
         }
 
         /// <summary>
+        /// Gets the value whether the playback position is supported or not.
+        /// </summary>
+        /// <returns>A <see cref="MediaControlCapabilitySupport"/>.</returns>
+        /// <exception cref="InvalidOperationException">
+        ///     The server has already been stopped.<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport GetPlaybackPositionCapability()
+        {
+            ThrowIfStopped();
+
+            Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.PlaybackPosition, out MediaControlCapabilitySupport support).
+                ThrowIfError("Failed to get playback position capability");
+
+            return support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the playlist is supported or not.
+        /// </summary>
+        /// <returns>A <see cref="MediaControlCapabilitySupport"/>.</returns>
+        /// <exception cref="InvalidOperationException">
+        ///     The server has already been stopped.<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport GetPlaylistCapability()
+        {
+            ThrowIfStopped();
+
+            Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.Playlist, out MediaControlCapabilitySupport support).
+                ThrowIfError("Failed to get playlist capability");
+
+            return support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the custom command is supported or not.
+        /// </summary>
+        /// <returns>A <see cref="MediaControlCapabilitySupport"/>.</returns>
+        /// <exception cref="InvalidOperationException">
+        ///     The server has already been stopped.<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport GetCustomCommandCapability()
+        {
+            ThrowIfStopped();
+
+            Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.CustomCommand, out MediaControlCapabilitySupport support).
+                ThrowIfError("Failed to get custom command capability");
+
+            return support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the search is supported or not.
+        /// </summary>
+        /// <returns>A <see cref="MediaControlCapabilitySupport"/>.</returns>
+        /// <exception cref="InvalidOperationException">
+        ///     The server has already been stopped.<br/>
+        ///     -or-<br/>
+        ///     An internal error occurs.
+        /// </exception>
+        /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport GetSearchCapability()
+        {
+            ThrowIfStopped();
+
+            Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.Search, out MediaControlCapabilitySupport support).
+                ThrowIfError("Failed to get search capability");
+
+            return support;
+        }
+
+        /// <summary>
         /// Gets the value whether the repeat mode is supported or not.
         /// </summary>
         /// <returns>
index 7fa8125..6ef8bcf 100644 (file)
@@ -293,11 +293,32 @@ namespace Tizen.Multimedia.Remoting
             {
                 switch (category)
                 {
+                    case MediaControlNativeCapabilityCategory.Shuffle:
+                        GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support);
+                        break;
                     case MediaControlNativeCapabilityCategory.Repeat:
                         GetController(serverName)?.RaiseRepeatModeCapabilityUpdatedEvent(support);
                         break;
-                    case MediaControlNativeCapabilityCategory.Shuffle:
-                        GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support);
+                    case MediaControlNativeCapabilityCategory.PlaybackPosition:
+                        GetController(serverName)?.RaisePlaybackPositionCapabilityUpdatedEvent(support);
+                        break;
+                    case MediaControlNativeCapabilityCategory.Playlist:
+                        GetController(serverName)?.RaisePlaylistCapabilityUpdatedEvent(support);
+                        break;
+                    case MediaControlNativeCapabilityCategory.CustomCommand:
+                        GetController(serverName)?.RaiseCustomCommandCapabilityUpdatedEvent(support);
+                        break;
+                    case MediaControlNativeCapabilityCategory.Search:
+                        GetController(serverName)?.RaiseSearchCapabilityUpdatedEvent(support);
+                        break;
+                    case MediaControlNativeCapabilityCategory.Subtitle:
+                        GetController(serverName)?.RaiseSubtitleCapabilityUpdatedEvent(support);
+                        break;
+                    case MediaControlNativeCapabilityCategory.Mode360:
+                        GetController(serverName)?.RaiseMode360CapabilityUpdatedEvent(support);
+                        break;
+                    default:
+                        Log.Info(GetType().FullName, $"There's no category : {category}");
                         break;
                 }
             };
diff --git a/src/Tizen.Multimedia.Remoting/MediaController/Mode360CapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/Mode360CapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..e036ce3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia.Remoting
+{
+    /// <summary>
+    /// Provides data for the <see cref="MediaController.Mode360CapabilityUpdated"/> event.
+    /// </summary>
+    /// <since_tizen> 11 </since_tizen>
+    public class Mode360CapabilityUpdatedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="Mode360CapabilityUpdatedEventArgs"/> class.
+        /// </summary>
+        /// <param name="support">The mode360 capability.</param>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is not valid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        internal Mode360CapabilityUpdatedEventArgs(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Support = support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the mode360 is supported or not.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport Support { get; }
+    }
+}
\ No newline at end of file
diff --git a/src/Tizen.Multimedia.Remoting/MediaController/PlaybackPositionCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/PlaybackPositionCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..8a722f6
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia.Remoting
+{
+    /// <summary>
+    /// Provides data for the <see cref="MediaController.PlaybackPositionCapabilityUpdated"/> event.
+    /// </summary>
+    /// <since_tizen> 11 </since_tizen>
+    public class PlaybackPositionCapabilityUpdatedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="PlaybackPositionCapabilityUpdatedEventArgs"/> class.
+        /// </summary>
+        /// <param name="support">The playback position capability.</param>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is not valid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        internal PlaybackPositionCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Support = support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the playback position is supported or not.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport Support { get; }
+    }
+}
\ No newline at end of file
diff --git a/src/Tizen.Multimedia.Remoting/MediaController/PlaylistCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/PlaylistCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..aeb3f1a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia.Remoting
+{
+    /// <summary>
+    /// Provides data for the <see cref="MediaController.PlaylistCapabilityUpdated"/> event.
+    /// </summary>
+    /// <since_tizen> 11 </since_tizen>
+    public class PlaylistCapabilityUpdatedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="PlaylistCapabilityUpdatedEventArgs"/> class.
+        /// </summary>
+        /// <param name="support">The repeat mode capability.</param>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is not valid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        internal PlaylistCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Support = support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the playlist is supported or not.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport Support { get; }
+    }
+}
\ No newline at end of file
diff --git a/src/Tizen.Multimedia.Remoting/MediaController/SearchCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/SearchCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..f1b0bd8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia.Remoting
+{
+    /// <summary>
+    /// Provides data for the <see cref="MediaController.SearchCapabilityUpdated"/> event.
+    /// </summary>
+    /// <since_tizen> 11 </since_tizen>
+    public class SearchCapabilityUpdatedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SearchCapabilityUpdatedEventArgs"/> class.
+        /// </summary>
+        /// <param name="support">The search capability.</param>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is not valid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        internal SearchCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Support = support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the search is supported or not.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport Support { get; }
+    }
+}
\ No newline at end of file
diff --git a/src/Tizen.Multimedia.Remoting/MediaController/SubtitleCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/SubtitleCapabilityUpdatedEventArgs.cs
new file mode 100644 (file)
index 0000000..2fbcf49
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia.Remoting
+{
+    /// <summary>
+    /// Provides data for the <see cref="MediaController.SubtitleCapabilityUpdated"/> event.
+    /// </summary>
+    /// <since_tizen> 11 </since_tizen>
+    public class SubtitleCapabilityUpdatedEventArgs : EventArgs
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SubtitleCapabilityUpdatedEventArgs"/> class.
+        /// </summary>
+        /// <param name="support">The subtitle capability.</param>
+        /// <exception cref="ArgumentException"><paramref name="support"/> is not valid.</exception>
+        /// <since_tizen> 11 </since_tizen>
+        internal SubtitleCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support)
+        {
+            ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support));
+
+            Support = support;
+        }
+
+        /// <summary>
+        /// Gets the value whether the subtitle is supported or not.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        public MediaControlCapabilitySupport Support { get; }
+    }
+}
\ No newline at end of file