Loading services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +31 −9 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 Loading Loading @@ -480,6 +484,24 @@ public class TunerResourceManagerService extends SystemService { return false; } @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; Loading services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java +36 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading
services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +31 −9 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 Loading Loading @@ -480,6 +484,24 @@ public class TunerResourceManagerService extends SystemService { return false; } @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; Loading
services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java +36 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } }