From 5f8498bcf1d31c58f27521eb78a7ce421b1eddad Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Sat, 2 May 2020 01:17:26 -0700 Subject: [PATCH] Add support for TvInputManager.acquireTvInputHardware CTS 1. Add a test api in TvInputManager to add hardware device for testing 2. Add Shell permission for TV_INPUT_HARDWARE 3. Add TUNER_RESOURCE_ACCESS permission for TvInput Framework. Test: atest android.media.tv.cts Bug: 155114656 Change-Id: I227f13cbf14532d8732729412ae9c2518755ef02 --- api/test-current.txt | 9 +++++ data/etc/privapp-permissions-platform.xml | 2 ++ .../android/media/tv/ITvInputManager.aidl | 4 +++ .../java/android/media/tv/TvInputManager.java | 35 +++++++++++++++++++ packages/Shell/AndroidManifest.xml | 3 ++ .../server/tv/TvInputManagerService.java | 31 ++++++++++++++++ 6 files changed, 84 insertions(+) diff --git a/api/test-current.txt b/api/test-current.txt index 46049bd949c55..fb656b44689e4 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 83d72189de74c..4a4a835137e67 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -300,6 +300,9 @@ + + +