Merge changes from topic "handle_per" into rvc-dev am: 78688bc4e5

Change-Id: I7ff0ca242f392088b71fe7acda95ca0670844267
This commit is contained in:
Automerger Merge Worker
2020-03-16 08:10:50 +00:00
3 changed files with 132 additions and 62 deletions

View File

@@ -60,11 +60,6 @@ public class TunerResourceManager {
private static final String TAG = "TunerResourceManager"; private static final String TAG = "TunerResourceManager";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
public static final int INVALID_FRONTEND_ID = -1;
public static final int INVALID_CAS_SESSION_RESOURCE_ID = -1;
public static final int INVALID_LNB_ID = -1;
public static final int INVALID_TV_INPUT_DEVICE_ID = -1;
public static final int INVALID_TV_INPUT_PORT_ID = -1;
public static final int INVALID_RESOURCE_HANDLE = -1; public static final int INVALID_RESOURCE_HANDLE = -1;
private final ITunerResourceManager mService; private final ITunerResourceManager mService;

View File

@@ -16,6 +16,7 @@
package com.android.server.tv.tunerresourcemanager; package com.android.server.tv.tunerresourcemanager;
import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.content.Context; import android.content.Context;
@@ -40,6 +41,8 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.server.SystemService; import com.android.server.SystemService;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
@@ -70,9 +73,31 @@ public class TunerResourceManagerService extends SystemService {
private TvInputManager mManager; private TvInputManager mManager;
private UseCasePriorityHints mPriorityCongfig = new UseCasePriorityHints(); private UseCasePriorityHints mPriorityCongfig = new UseCasePriorityHints();
// An internal resource request count to help generate resource handle.
private int mResourceRequestCount = 0;
// Used to synchronize the access to the service. // Used to synchronize the access to the service.
private final Object mLock = new Object(); private final Object mLock = new Object();
/**
* Tuner resource type to help generate resource handle
*/
@IntDef({
TUNER_RESOURCE_TYPE_FRONTEND,
TUNER_RESOURCE_TYPE_DEMUX,
TUNER_RESOURCE_TYPE_DESCRAMBLER,
TUNER_RESOURCE_TYPE_LNB,
TUNER_RESOURCE_TYPE_CAS_SESSION,
})
@Retention(RetentionPolicy.SOURCE)
public @interface TunerResourceType {}
public static final int TUNER_RESOURCE_TYPE_FRONTEND = 0;
public static final int TUNER_RESOURCE_TYPE_DEMUX = 1;
public static final int TUNER_RESOURCE_TYPE_DESCRAMBLER = 2;
public static final int TUNER_RESOURCE_TYPE_LNB = 3;
public static final int TUNER_RESOURCE_TYPE_CAS_SESSION = 4;
public TunerResourceManagerService(@Nullable Context context) { public TunerResourceManagerService(@Nullable Context context) {
super(context); super(context);
} }
@@ -96,7 +121,7 @@ public class TunerResourceManagerService extends SystemService {
public void registerClientProfile(@NonNull ResourceClientProfile profile, public void registerClientProfile(@NonNull ResourceClientProfile profile,
@NonNull IResourcesReclaimListener listener, @NonNull int[] clientId) @NonNull IResourcesReclaimListener listener, @NonNull int[] clientId)
throws RemoteException { throws RemoteException {
enforceAccessPermission(); enforceTrmAccessPermission("registerClientProfile");
if (profile == null) { if (profile == null) {
throw new RemoteException("ResourceClientProfile can't be null"); throw new RemoteException("ResourceClientProfile can't be null");
} }
@@ -120,7 +145,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void unregisterClientProfile(int clientId) throws RemoteException { public void unregisterClientProfile(int clientId) throws RemoteException {
enforceAccessPermission(); enforceTrmAccessPermission("unregisterClientProfile");
synchronized (mLock) { synchronized (mLock) {
if (!checkClientExists(clientId)) { if (!checkClientExists(clientId)) {
Slog.e(TAG, "Unregistering non exists client:" + clientId); Slog.e(TAG, "Unregistering non exists client:" + clientId);
@@ -132,7 +157,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public boolean updateClientPriority(int clientId, int priority, int niceValue) { public boolean updateClientPriority(int clientId, int priority, int niceValue) {
enforceAccessPermission(); enforceTrmAccessPermission("updateClientPriority");
synchronized (mLock) { synchronized (mLock) {
return updateClientPriorityInternal(clientId, priority, niceValue); return updateClientPriorityInternal(clientId, priority, niceValue);
} }
@@ -140,7 +165,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void setFrontendInfoList(@NonNull TunerFrontendInfo[] infos) throws RemoteException { public void setFrontendInfoList(@NonNull TunerFrontendInfo[] infos) throws RemoteException {
enforceAccessPermission(); enforceTrmAccessPermission("setFrontendInfoList");
if (infos == null) { if (infos == null) {
throw new RemoteException("TunerFrontendInfo can't be null"); throw new RemoteException("TunerFrontendInfo can't be null");
} }
@@ -151,6 +176,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void updateCasInfo(int casSystemId, int maxSessionNum) { public void updateCasInfo(int casSystemId, int maxSessionNum) {
enforceTrmAccessPermission("updateCasInfo");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, Slog.d(TAG,
"updateCasInfo(casSystemId=" + casSystemId "updateCasInfo(casSystemId=" + casSystemId
@@ -160,6 +186,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void setLnbInfoList(int[] lnbIds) { public void setLnbInfoList(int[] lnbIds) {
enforceTrmAccessPermission("setLnbInfoList");
if (DEBUG) { if (DEBUG) {
for (int i = 0; i < lnbIds.length; i++) { for (int i = 0; i < lnbIds.length; i++) {
Slog.d(TAG, "updateLnbInfo(lnbId=" + lnbIds[i] + ")"); Slog.d(TAG, "updateLnbInfo(lnbId=" + lnbIds[i] + ")");
@@ -169,14 +196,15 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public boolean requestFrontend(@NonNull TunerFrontendRequest request, public boolean requestFrontend(@NonNull TunerFrontendRequest request,
@NonNull int[] frontendId) throws RemoteException { @NonNull int[] frontendHandle) throws RemoteException {
enforceAccessPermission(); enforceTunerAccessPermission("requestFrontend");
if (frontendId == null) { enforceTrmAccessPermission("requestFrontend");
if (frontendHandle == null) {
throw new RemoteException("frontendId can't be null"); throw new RemoteException("frontendId can't be null");
} }
synchronized (mLock) { synchronized (mLock) {
try { try {
return requestFrontendInternal(request, frontendId); return requestFrontendInternal(request, frontendHandle);
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -185,6 +213,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void shareFrontend(int selfClientId, int targetClientId) { public void shareFrontend(int selfClientId, int targetClientId) {
enforceTunerAccessPermission("shareFrontend");
enforceTrmAccessPermission("shareFrontend");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "shareFrontend from " + selfClientId + " with " + targetClientId); Slog.d(TAG, "shareFrontend from " + selfClientId + " with " + targetClientId);
} }
@@ -193,6 +223,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public boolean requestDemux(@NonNull TunerDemuxRequest request, public boolean requestDemux(@NonNull TunerDemuxRequest request,
@NonNull int[] demuxHandle) { @NonNull int[] demuxHandle) {
enforceTunerAccessPermission("requestDemux");
enforceTrmAccessPermission("requestDemux");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "requestDemux(request=" + request + ")"); Slog.d(TAG, "requestDemux(request=" + request + ")");
} }
@@ -202,6 +234,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public boolean requestDescrambler(@NonNull TunerDescramblerRequest request, public boolean requestDescrambler(@NonNull TunerDescramblerRequest request,
@NonNull int[] descrambleHandle) { @NonNull int[] descrambleHandle) {
enforceDescramblerAccessPermission("requestDescrambler");
enforceTrmAccessPermission("requestDescrambler");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "requestDescrambler(request=" + request + ")"); Slog.d(TAG, "requestDescrambler(request=" + request + ")");
} }
@@ -210,7 +244,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public boolean requestCasSession( public boolean requestCasSession(
@NonNull CasSessionRequest request, @NonNull int[] sessionResourceId) { @NonNull CasSessionRequest request, @NonNull int[] sessionResourceHandle) {
enforceTrmAccessPermission("requestCasSession");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "requestCasSession(request=" + request + ")"); Slog.d(TAG, "requestCasSession(request=" + request + ")");
} }
@@ -219,7 +254,9 @@ public class TunerResourceManagerService extends SystemService {
} }
@Override @Override
public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull int[] lnbId) { public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull int[] lnbHandle) {
enforceTunerAccessPermission("requestLnb");
enforceTrmAccessPermission("requestLnb");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "requestLnb(request=" + request + ")"); Slog.d(TAG, "requestLnb(request=" + request + ")");
} }
@@ -228,6 +265,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void releaseFrontend(int frontendId) { public void releaseFrontend(int frontendId) {
enforceTunerAccessPermission("releaseFrontend");
enforceTrmAccessPermission("releaseFrontend");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "releaseFrontend(id=" + frontendId + ")"); Slog.d(TAG, "releaseFrontend(id=" + frontendId + ")");
} }
@@ -235,6 +274,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void releaseDemux(int demuxHandle) { public void releaseDemux(int demuxHandle) {
enforceTunerAccessPermission("releaseDemux");
enforceTrmAccessPermission("releaseDemux");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "releaseDemux(demuxHandle=" + demuxHandle + ")"); Slog.d(TAG, "releaseDemux(demuxHandle=" + demuxHandle + ")");
} }
@@ -242,6 +283,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void releaseDescrambler(int descramblerHandle) { public void releaseDescrambler(int descramblerHandle) {
enforceTunerAccessPermission("releaseDescrambler");
enforceTrmAccessPermission("releaseDescrambler");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "releaseDescrambler(descramblerHandle=" + descramblerHandle + ")"); Slog.d(TAG, "releaseDescrambler(descramblerHandle=" + descramblerHandle + ")");
} }
@@ -249,6 +292,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void releaseCasSession(int sessionResourceId) { public void releaseCasSession(int sessionResourceId) {
enforceTrmAccessPermission("releaseCasSession");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "releaseCasSession(sessionResourceId=" + sessionResourceId + ")"); Slog.d(TAG, "releaseCasSession(sessionResourceId=" + sessionResourceId + ")");
} }
@@ -256,6 +300,8 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public void releaseLnb(int lnbId) { public void releaseLnb(int lnbId) {
enforceTunerAccessPermission("releaseLnb");
enforceTrmAccessPermission("releaseLnb");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "releaseLnb(lnbId=" + lnbId + ")"); Slog.d(TAG, "releaseLnb(lnbId=" + lnbId + ")");
} }
@@ -264,6 +310,7 @@ public class TunerResourceManagerService extends SystemService {
@Override @Override
public boolean isHigherPriority( public boolean isHigherPriority(
ResourceClientProfile challengerProfile, ResourceClientProfile holderProfile) { ResourceClientProfile challengerProfile, ResourceClientProfile holderProfile) {
enforceTrmAccessPermission("isHigherPriority");
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, Slog.d(TAG,
"isHigherPriority(challengerProfile=" + challengerProfile "isHigherPriority(challengerProfile=" + challengerProfile
@@ -371,13 +418,13 @@ public class TunerResourceManagerService extends SystemService {
} }
@VisibleForTesting @VisibleForTesting
protected boolean requestFrontendInternal(TunerFrontendRequest request, int[] frontendId) protected boolean requestFrontendInternal(TunerFrontendRequest request, int[] frontendHandle)
throws RemoteException { throws RemoteException {
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "requestFrontend(request=" + request + ")"); Slog.d(TAG, "requestFrontend(request=" + request + ")");
} }
frontendId[0] = TunerResourceManager.INVALID_FRONTEND_ID; frontendHandle[0] = TunerResourceManager.INVALID_RESOURCE_HANDLE;
if (!checkClientExists(request.getClientId())) { if (!checkClientExists(request.getClientId())) {
Slog.e(TAG, "Request frontend from unregistered client:" + request.getClientId()); Slog.e(TAG, "Request frontend from unregistered client:" + request.getClientId());
return false; return false;
@@ -413,17 +460,20 @@ public class TunerResourceManagerService extends SystemService {
// Grant frontend when there is unused resource. // Grant frontend when there is unused resource.
if (grantingFrontendId > -1) { if (grantingFrontendId > -1) {
frontendId[0] = grantingFrontendId; frontendHandle[0] = generateResourceHandle(
updateFrontendClientMappingOnNewGrant(frontendId[0], request.getClientId()); TUNER_RESOURCE_TYPE_FRONTEND, grantingFrontendId);
updateFrontendClientMappingOnNewGrant(grantingFrontendId, request.getClientId());
return true; return true;
} }
// When all the resources are occupied, grant the lowest priority resource if the // When all the resources are occupied, grant the lowest priority resource if the
// request client has higher priority. // request client has higher priority.
if (inUseLowestPriorityFrId > -1 && (requestClient.getPriority() > currentLowestPriority)) { if (inUseLowestPriorityFrId > -1 && (requestClient.getPriority() > currentLowestPriority)) {
frontendId[0] = inUseLowestPriorityFrId; frontendHandle[0] = generateResourceHandle(
reclaimFrontendResource(getFrontendResource(frontendId[0]).getOwnerClientId()); TUNER_RESOURCE_TYPE_FRONTEND, inUseLowestPriorityFrId);
updateFrontendClientMappingOnNewGrant(frontendId[0], request.getClientId()); reclaimFrontendResource(getFrontendResource(
inUseLowestPriorityFrId).getOwnerClientId());
updateFrontendClientMappingOnNewGrant(inUseLowestPriorityFrId, request.getClientId());
return true; return true;
} }
@@ -592,8 +642,24 @@ public class TunerResourceManagerService extends SystemService {
return mClientProfiles.keySet().contains(clientId); return mClientProfiles.keySet().contains(clientId);
} }
private void enforceAccessPermission() { private int generateResourceHandle(@TunerResourceType int resourceType, int resourceId) {
getContext().enforceCallingOrSelfPermission( return (resourceType & 0x000000ff) << 24
"android.permission.TUNER_RESOURCE_ACCESS", TAG); | (resourceId << 16)
| (mResourceRequestCount++ & 0xffff);
}
private void enforceTrmAccessPermission(String apiName) {
getContext().enforceCallingPermission("android.permission.TUNER_RESOURCE_ACCESS",
TAG + ": " + "apiName");
}
private void enforceTunerAccessPermission(String apiName) {
getContext().enforceCallingPermission("android.Manifest.permission.ACCESS_TV_TUNER",
TAG + ": " + "apiName");
}
private void enforceDescramblerAccessPermission(String apiName) {
getContext().enforceCallingPermission("android.Manifest.permission.ACCESS_TV_DESCRAMBLER",
TAG + ": " + "apiName");
} }
} }

View File

@@ -92,6 +92,13 @@ public class TunerResourceManagerServiceTest {
} }
}; };
private static int getResourceIdFromHandle(int resourceHandle) {
if (resourceHandle == TunerResourceManager.INVALID_RESOURCE_HANDLE) {
return resourceHandle;
}
return (resourceHandle & 0x00ff0000) >> 16;
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
@@ -229,14 +236,15 @@ public class TunerResourceManagerServiceTest {
public void requestFrontendTest_ClientNotRegistered() { public void requestFrontendTest_ClientNotRegistered() {
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(0 /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(0 /*clientId*/, FrontendSettings.TYPE_DVBT);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isFalse(); .requestFrontendInternal(request, frontendHandle)).isFalse();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(TunerResourceManager.INVALID_FRONTEND_ID); assertThat(getResourceIdFromHandle(frontendHandle[0]))
.isEqualTo(TunerResourceManager.INVALID_RESOURCE_HANDLE);
} }
@Test @Test
@@ -256,14 +264,15 @@ public class TunerResourceManagerServiceTest {
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isFalse(); .requestFrontendInternal(request, frontendHandle)).isFalse();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(TunerResourceManager.INVALID_FRONTEND_ID); assertThat(getResourceIdFromHandle(frontendHandle[0]))
.isEqualTo(TunerResourceManager.INVALID_RESOURCE_HANDLE);
} }
@Test @Test
@@ -287,14 +296,14 @@ public class TunerResourceManagerServiceTest {
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(0); assertThat(getResourceIdFromHandle(frontendHandle[0])).isEqualTo(0);
} }
@Test @Test
@@ -322,26 +331,26 @@ public class TunerResourceManagerServiceTest {
new TunerFrontendInfo(2 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); new TunerFrontendInfo(2 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/);
mTunerResourceManagerService.setFrontendInfoListInternal(infos); mTunerResourceManagerService.setFrontendInfoListInternal(infos);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(infos[0].getId()); assertThat(getResourceIdFromHandle(frontendHandle[0])).isEqualTo(infos[0].getId());
request = request =
new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(infos[1].getId()); assertThat(getResourceIdFromHandle(frontendHandle[0])).isEqualTo(infos[1].getId());
assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getId()) assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getId())
.isInUse()).isTrue(); .isInUse()).isTrue();
assertThat(mTunerResourceManagerService.getFrontendResource(infos[2].getId()) assertThat(mTunerResourceManagerService.getFrontendResource(infos[2].getId())
@@ -382,10 +391,10 @@ public class TunerResourceManagerServiceTest {
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
@@ -393,8 +402,8 @@ public class TunerResourceManagerServiceTest {
request = request =
new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isFalse(); .requestFrontendInternal(request, frontendHandle)).isFalse();
assertThat(listener.isRelaimed()).isFalse(); assertThat(listener.isRelaimed()).isFalse();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
@@ -403,8 +412,8 @@ public class TunerResourceManagerServiceTest {
request = request =
new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS);
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isFalse(); .requestFrontendInternal(request, frontendHandle)).isFalse();
assertThat(listener.isRelaimed()).isFalse(); assertThat(listener.isRelaimed()).isFalse();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
@@ -444,24 +453,24 @@ public class TunerResourceManagerServiceTest {
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(infos[0].getId()); assertThat(getResourceIdFromHandle(frontendHandle[0])).isEqualTo(infos[0].getId());
request = request =
new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS);
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(infos[1].getId()); assertThat(getResourceIdFromHandle(frontendHandle[0])).isEqualTo(infos[1].getId());
assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getId()) assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getId())
.isInUse()).isTrue(); .isInUse()).isTrue();
assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getId()) assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getId())
@@ -493,14 +502,14 @@ public class TunerResourceManagerServiceTest {
TunerFrontendRequest request = TunerFrontendRequest request =
new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT);
int[] frontendId = new int[1]; int[] frontendHandle = new int[1];
try { try {
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendId)) assertThat(mTunerResourceManagerService
.isTrue(); .requestFrontendInternal(request, frontendHandle)).isTrue();
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
assertThat(frontendId[0]).isEqualTo(infos[0].getId()); assertThat(getResourceIdFromHandle(frontendHandle[0])).isEqualTo(infos[0].getId());
assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getId()) assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getId())
.isInUse()).isTrue(); .isInUse()).isTrue();
assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getId()) assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getId())