diff options
| author | 2020-03-13 15:16:33 -0700 | |
|---|---|---|
| committer | 2020-03-13 15:48:14 -0700 | |
| commit | 9c9d2f21884ce79971081b6c749e8c8449d5ca19 (patch) | |
| tree | 8905aa6bf158d2275a16cf8d9c98212a6d54c9fd | |
| parent | cd0e8ae101509fa29fd1f20ece8adffe36cd4de9 (diff) | |
Add Demux/Descrambler request impl and test for TRM service
Test: atest TunerResourceManagerServiceTest
Bug: 151186028
Change-Id: Ifea50b37b00f901eb64cc89023a5f16bf644c494
2 files changed, 67 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java index 6c55926d65be..bd63b2daad83 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java @@ -200,7 +200,7 @@ public class TunerResourceManagerService extends SystemService { enforceTunerAccessPermission("requestFrontend"); enforceTrmAccessPermission("requestFrontend"); if (frontendHandle == null) { - throw new RemoteException("frontendId can't be null"); + throw new RemoteException("frontendHandle can't be null"); } synchronized (mLock) { try { @@ -222,24 +222,28 @@ public class TunerResourceManagerService extends SystemService { @Override public boolean requestDemux(@NonNull TunerDemuxRequest request, - @NonNull int[] demuxHandle) { + @NonNull int[] demuxHandle) throws RemoteException { enforceTunerAccessPermission("requestDemux"); enforceTrmAccessPermission("requestDemux"); - if (DEBUG) { - Slog.d(TAG, "requestDemux(request=" + request + ")"); + if (demuxHandle == null) { + throw new RemoteException("demuxHandle can't be null"); + } + synchronized (mLock) { + return requestDemuxInternal(request, demuxHandle); } - return true; } @Override public boolean requestDescrambler(@NonNull TunerDescramblerRequest request, - @NonNull int[] descrambleHandle) { + @NonNull int[] descrambleHandle) throws RemoteException { enforceDescramblerAccessPermission("requestDescrambler"); enforceTrmAccessPermission("requestDescrambler"); - if (DEBUG) { - Slog.d(TAG, "requestDescrambler(request=" + request + ")"); + if (descrambleHandle == null) { + throw new RemoteException("descrambleHandle can't be null"); + } + synchronized (mLock) { + return requestDescramblerInternal(request, descrambleHandle); } - return true; } @Override @@ -481,6 +485,24 @@ public class TunerResourceManagerService extends SystemService { } @VisibleForTesting + boolean requestDemuxInternal(TunerDemuxRequest request, int[] demuxHandle) { + if (DEBUG) { + Slog.d(TAG, "requestDemux(request=" + request + ")"); + } + demuxHandle[0] = generateResourceHandle(TUNER_RESOURCE_TYPE_DEMUX, 0); + return true; + } + + @VisibleForTesting + boolean requestDescramblerInternal(TunerDescramblerRequest request, int[] descramblerHandle) { + if (DEBUG) { + Slog.d(TAG, "requestDescrambler(request=" + request + ")"); + } + descramblerHandle[0] = generateResourceHandle(TUNER_RESOURCE_TYPE_DESCRAMBLER, 0); + return true; + } + + @VisibleForTesting protected class ResourcesReclaimListenerRecord implements IBinder.DeathRecipient { private final IResourcesReclaimListener mListener; private final int mClientId; diff --git a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java index 1b98fa85f926..155c6ddd4507 100644 --- a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java @@ -28,6 +28,8 @@ import android.media.tv.TvInputService; import android.media.tv.tuner.frontend.FrontendSettings; import android.media.tv.tunerresourcemanager.IResourcesReclaimListener; import android.media.tv.tunerresourcemanager.ResourceClientProfile; +import android.media.tv.tunerresourcemanager.TunerDemuxRequest; +import android.media.tv.tunerresourcemanager.TunerDescramblerRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerResourceManager; @@ -524,4 +526,38 @@ public class TunerResourceManagerServiceTest { assertThat(mTunerResourceManagerService.checkClientExists(clientId[0])).isFalse(); } + + @Test + public void requestDemuxTest() { + // Register client + ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); + int[] clientId = new int[1]; + mTunerResourceManagerService.registerClientProfileInternal( + profile, null /*listener*/, clientId); + assertThat(clientId[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); + + int[] demuxHandle = new int[1]; + TunerDemuxRequest request = new TunerDemuxRequest(clientId[0]); + assertThat(mTunerResourceManagerService.requestDemuxInternal(request, demuxHandle)) + .isTrue(); + assertThat(getResourceIdFromHandle(demuxHandle[0])).isEqualTo(0); + } + + @Test + public void requestDescramblerTest() { + // Register client + ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); + int[] clientId = new int[1]; + mTunerResourceManagerService.registerClientProfileInternal( + profile, null /*listener*/, clientId); + assertThat(clientId[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); + + int[] desHandle = new int[1]; + TunerDescramblerRequest request = new TunerDescramblerRequest(clientId[0]); + assertThat(mTunerResourceManagerService.requestDescramblerInternal(request, desHandle)) + .isTrue(); + assertThat(getResourceIdFromHandle(desHandle[0])).isEqualTo(0); + } } |