diff --git a/api/test-current.txt b/api/test-current.txt
index 5dc7bdb9a9407..a163dea357555 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1728,6 +1728,15 @@ package android.media.audiopolicy {
}
+package android.media.tv {
+
+ public final class TvInputManager {
+ method public void addHardwareDevice(int);
+ method public void removeHardwareDevice(int);
+ }
+
+}
+
package android.metrics {
public class LogMaker {
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index bdb6bcc1f19f3..8d73f8a94dae7 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -409,6 +409,8 @@ applications that come with the platform
+
+
diff --git a/media/java/android/media/tv/ITvInputManager.aidl b/media/java/android/media/tv/ITvInputManager.aidl
index 508a46f492dd9..1fbb672608952 100644
--- a/media/java/android/media/tv/ITvInputManager.aidl
+++ b/media/java/android/media/tv/ITvInputManager.aidl
@@ -111,4 +111,8 @@ interface ITvInputManager {
// For preview channels and programs
void sendTvInputNotifyIntent(in Intent intent, int userId);
void requestChannelBrowsable(in Uri channelUri, int userId);
+
+ // For CTS purpose only. Add/remove a TvInputHardware device
+ void addHardwareDevice(in int deviceId);
+ void removeHardwareDevice(in int deviceId);
}
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index e701055c28941..98a01a4cb449c 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -23,6 +23,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
+import android.annotation.TestApi;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
@@ -1801,6 +1802,40 @@ public final class TvInputManager {
executor, callback);
}
+ /**
+ * API to add a hardware device in the TvInputHardwareManager for CTS testing
+ * purpose.
+ *
+ * @param deviceId Id of the adding hardware device.
+ *
+ * @hide
+ */
+ @TestApi
+ public void addHardwareDevice(int deviceId) {
+ try {
+ mService.addHardwareDevice(deviceId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * API to remove a hardware device in the TvInputHardwareManager for CTS testing
+ * purpose.
+ *
+ * @param deviceId Id of the removing hardware device.
+ *
+ * @hide
+ */
+ @TestApi
+ public void removeHardwareDevice(int deviceId) {
+ try {
+ mService.removeHardwareDevice(deviceId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
private Hardware acquireTvInputHardwareInternal(int deviceId, TvInputInfo info,
String tvInputSessionId, int priorityHint,
Executor executor, final HardwareCallback callback) {
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index b85c7714bf960..a0130f8e9b830 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -300,6 +300,9 @@
+
+
+