Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e5b03b4 authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge "Add Demux/Descrambler request impl and test for TRM service" into rvc-dev

parents acc504a3 9c9d2f21
Loading
Loading
Loading
Loading
+31 −9
Original line number Diff line number Diff line
@@ -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
@@ -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;
+36 −0
Original line number Diff line number Diff line
@@ -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);
    }
}