Merge changes from topic "handle_per" into rvc-dev am: 78688bc4e5 am: 34c3bae990
Change-Id: Idfe82049d9f2b70c3741ecb48b3056d925a1d006
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user