summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/system-current.txt4
-rw-r--r--media/java/android/media/MediaCas.java10
-rw-r--r--media/java/android/media/tv/flags/media_tv.aconfig2
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java10
-rw-r--r--media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java14
-rw-r--r--media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl11
-rw-r--r--services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java30
-rw-r--r--services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java21
-rw-r--r--services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java40
9 files changed, 75 insertions, 67 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 4b83b43bfd8f..77d76653aec7 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -7775,7 +7775,7 @@ package android.media {
}
public final class MediaCas implements java.lang.AutoCloseable {
- method @FlaggedApi("android.media.tv.flags.set_resource_holder_retain") @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public void setResourceHolderRetain(boolean);
+ method @FlaggedApi("android.media.tv.flags.set_resource_holder_retain") @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public void setResourceOwnershipRetention(boolean);
method @FlaggedApi("android.media.tv.flags.mediacas_update_client_profile_priority") @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public boolean updateResourcePriority(int, int);
}
@@ -8688,8 +8688,8 @@ package android.media.tv.tuner {
method public int setLnaEnabled(boolean);
method public int setMaxNumberOfFrontends(int, @IntRange(from=0) int);
method public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
- method @FlaggedApi("android.media.tv.flags.set_resource_holder_retain") @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public void setResourceHolderRetain(boolean);
method public void setResourceLostListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.Tuner.OnResourceLostListener);
+ method @FlaggedApi("android.media.tv.flags.set_resource_holder_retain") @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public void setResourceOwnershipRetention(boolean);
method public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
method public int transferOwner(@NonNull android.media.tv.tuner.Tuner);
method public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
diff --git a/media/java/android/media/MediaCas.java b/media/java/android/media/MediaCas.java
index 1ecba31ce07f..3efb5f961dc8 100644
--- a/media/java/android/media/MediaCas.java
+++ b/media/java/android/media/MediaCas.java
@@ -1010,17 +1010,17 @@ public final class MediaCas implements AutoCloseable {
* scenario, when both resource holder and resource challenger have same processId and same
* priority.
*
- * @param resourceHolderRetain Set to {@code true} to allow the resource holder to retain
- * ownership, or false to allow the resource challenger to acquire the resource.
- * If not explicitly set, resourceHolderRetain is set to {@code false}.
+ *@param enabled Set to {@code true} to allow the resource holder to retain ownership,
+ * or false to allow the resource challenger to acquire the resource.
+ * If not explicitly set, enabled is set to {@code false}.
* @hide
*/
@FlaggedApi(FLAG_SET_RESOURCE_HOLDER_RETAIN)
@SystemApi
@RequiresPermission(android.Manifest.permission.TUNER_RESOURCE_ACCESS)
- public void setResourceHolderRetain(boolean resourceHolderRetain) {
+ public void setResourceOwnershipRetention(boolean enabled) {
if (mTunerResourceManager != null) {
- mTunerResourceManager.setResourceHolderRetain(mClientId, resourceHolderRetain);
+ mTunerResourceManager.setResourceOwnershipRetention(mClientId, enabled);
}
}
diff --git a/media/java/android/media/tv/flags/media_tv.aconfig b/media/java/android/media/tv/flags/media_tv.aconfig
index 4b832aee49c5..55bc5712a85a 100644
--- a/media/java/android/media/tv/flags/media_tv.aconfig
+++ b/media/java/android/media/tv/flags/media_tv.aconfig
@@ -93,7 +93,7 @@ flag {
name: "set_resource_holder_retain"
is_exported: true
namespace: "media_tv"
- description: "Feature flag to add setResourceHolderRetain api to MediaCas and Tuner JAVA."
+ description: "Feature flag to add setResourceOwnershipRetention api to MediaCas and Tuner JAVA."
bug: "372973197"
}
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index b1adb77f9543..7f7a23969411 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -757,14 +757,14 @@ public class Tuner implements AutoCloseable {
* scenario, when both resource holder and resource challenger have same processId and same
* priority.
*
- * @param resourceHolderRetain Set to true to allow the resource holder to retain ownership, or
- * false to allow the resource challenger to acquire the resource. If not explicitly set,
- * resourceHolderRetain is set to false.
+ * @param enabled Set to {@code true} to allow the resource holder to retain ownership,
+ * or false to allow the resource challenger to acquire the resource.
+ * If not explicitly set, enabled is set to {@code false}.
*/
@FlaggedApi(FLAG_SET_RESOURCE_HOLDER_RETAIN)
@RequiresPermission(android.Manifest.permission.TUNER_RESOURCE_ACCESS)
- public void setResourceHolderRetain(boolean resourceHolderRetain) {
- mTunerResourceManager.setResourceHolderRetain(mClientId, resourceHolderRetain);
+ public void setResourceOwnershipRetention(boolean enabled) {
+ mTunerResourceManager.setResourceOwnershipRetention(mClientId, enabled);
}
/**
diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java b/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java
index be65ad98c35b..2ed642eecb81 100644
--- a/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java
+++ b/media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java
@@ -21,6 +21,7 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresFeature;
+import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.annotation.SystemService;
import android.annotation.TestApi;
@@ -227,15 +228,16 @@ public class TunerResourceManager {
* scenario, when both resource holder and resource challenger have same processId and same
* priority.
*
- * @param clientId The client id used to set ownership of resource to owner in case of resource
+ * @param clientId The client id used to set ownership of resource in case of resource
* challenger situation.
- * @param resourceHolderRetain Set to true to allow the resource holder to retain ownership, or
- * false to allow the resource challenger to acquire the resource. If not explicitly set,
- * resourceHolderRetain is set to false.
+ * @param enabled Set to {@code true} to allow the resource holder to retain ownership,
+ * or false to allow the resource challenger to acquire the resource.
+ * If not explicitly set, enabled is set to {@code false}.
*/
- public void setResourceHolderRetain(int clientId, boolean resourceHolderRetain) {
+ @RequiresPermission(android.Manifest.permission.TUNER_RESOURCE_ACCESS)
+ public void setResourceOwnershipRetention(int clientId, boolean enabled) {
try {
- mService.setResourceHolderRetain(clientId, resourceHolderRetain);
+ mService.setResourceOwnershipRetention(clientId, enabled);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl
index c57be1b09b66..50f9fe556cee 100644
--- a/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl
+++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl
@@ -156,12 +156,13 @@ interface ITunerResourceManager {
* scenario, when both Resource Holder and Resource Challenger have same processId and same
* priority.
*
- * @param clientId The resourceHolderRetain of the client is updated using client ID.
- * @param resourceHolderRetain set to true to allow the Resource Holder to retain ownership, or
- * false to allow the Resource Challenger to acquire the resource. If not explicitly set,
- * resourceHolderRetain is set to false.
+ * @param clientId The client id used to set ownership of resource in case of resource
+ * challenger situation.
+ * @param enabled Set to {@code true} to allow the Resource Holder to retain ownership,
+ * or false to allow the Resource Challenger to acquire the resource.
+ * If not explicitly set, enabled is set to {@code false}.
*/
- void setResourceHolderRetain(int clientId, boolean resourceHolderRetain);
+ void setResourceOwnershipRetention(int clientId, boolean enabled);
/*
* This API is used by the Tuner framework to request a frontend from the TunerHAL.
diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java b/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java
index 38bc026c473a..e191ff20a518 100644
--- a/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java
+++ b/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java
@@ -119,14 +119,14 @@ public final class ClientProfile {
* If resource holder retains ownership of the resource in a challenge scenario then value is
* true.
*/
- private boolean mResourceHolderRetain;
+ private boolean mResourceOwnershipRetention;
private ClientProfile(Builder builder) {
this.mId = builder.mId;
this.mTvInputSessionId = builder.mTvInputSessionId;
this.mUseCase = builder.mUseCase;
this.mProcessId = builder.mProcessId;
- this.mResourceHolderRetain = builder.mResourceHolderRetain;
+ this.mResourceOwnershipRetention = builder.mResourceOwnershipRetention;
}
public int getId() {
@@ -149,8 +149,8 @@ public final class ClientProfile {
* Returns true when the resource holder retains ownership of the resource in a challenge
* scenario.
*/
- public boolean shouldResourceHolderRetain() {
- return mResourceHolderRetain;
+ public boolean resourceOwnershipRetentionEnabled() {
+ return mResourceOwnershipRetention;
}
/**
@@ -199,12 +199,12 @@ public final class ClientProfile {
* scenario, when both resource holder and resource challenger have same processId and same
* priority.
*
- * @param resourceHolderRetain Set to true to allow the resource holder to retain ownership, or
- * false (or resourceHolderRetain not set at all) to allow the resource challenger to
- * acquire the resource. If not explicitly set, resourceHolderRetain is set to false.
+ * @param enabled Set to {@code true} to allow the resource holder to retain ownership,
+ * or false to allow the resource challenger to acquire the resource.
+ * If not explicitly set, enabled is set to {@code false}.
*/
- public void setResourceHolderRetain(boolean resourceHolderRetain) {
- mResourceHolderRetain = resourceHolderRetain;
+ public void setResourceOwnershipRetention(boolean enabled) {
+ mResourceOwnershipRetention = enabled;
}
/**
@@ -389,7 +389,7 @@ public final class ClientProfile {
private String mTvInputSessionId;
private int mUseCase;
private int mProcessId;
- private boolean mResourceHolderRetain = false;
+ private boolean mResourceOwnershipRetention = false;
Builder(int id) {
this.mId = id;
@@ -428,12 +428,12 @@ public final class ClientProfile {
/**
* Builder for {@link ClientProfile}.
*
- * @param resourceHolderRetain the determining factor for resource ownership during
- * challenger scenario. The default behavior favors the resource challenger and grants
- * them ownership of the resource if resourceHolderRetain is not explicitly set to true.
+ * @param enabled the determining factor for resource ownership during challenger scenario.
+ * The default behavior favors the resource challenger and grants them ownership of
+ * the resource if resourceOwnershipRetention is not explicitly set to true.
*/
- public Builder resourceHolderRetain(boolean resourceHolderRetain) {
- this.mResourceHolderRetain = resourceHolderRetain;
+ public Builder resourceOwnershipRetention(boolean enabled) {
+ this.mResourceOwnershipRetention = enabled;
return this;
}
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 5ae8c11f1d8f..bb192c0b4603 100644
--- a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java
+++ b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java
@@ -231,10 +231,10 @@ public class TunerResourceManagerService extends SystemService implements IBinde
}
@Override
- public void setResourceHolderRetain(int clientId, boolean resourceHolderRetain) {
- enforceTrmAccessPermission("setResourceHolderRetain");
+ public void setResourceOwnershipRetention(int clientId, boolean enabled) {
+ enforceTrmAccessPermission("setResourceOwnershipRetention");
synchronized (mLock) {
- getClientProfile(clientId).setResourceHolderRetain(resourceHolderRetain);
+ getClientProfile(clientId).setResourceOwnershipRetention(enabled);
}
}
@@ -1079,7 +1079,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde
|| ((requestClient.getPriority() == currentLowestPriority)
&& isRequestFromSameProcess
&& !(setResourceHolderRetain()
- && requestClient.shouldResourceHolderRetain())))) {
+ && requestClient
+ .resourceOwnershipRetentionEnabled())))) {
frontendHandle[0] = inUseLowestPriorityFrontend.getHandle();
reclaimOwnerId[0] = inUseLowestPriorityFrontend.getOwnerClientId();
return true;
@@ -1265,7 +1266,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde
|| ((requestClient.getPriority() == currentLowestPriority)
&& isRequestFromSameProcess
&& !(setResourceHolderRetain()
- && requestClient.shouldResourceHolderRetain())))) {
+ && requestClient
+ .resourceOwnershipRetentionEnabled())))) {
lnbHandle[0] = inUseLowestPriorityLnb.getHandle();
reclaimOwnerId[0] = inUseLowestPriorityLnb.getOwnerClientId();
return true;
@@ -1352,7 +1354,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde
|| ((requestClient.getPriority() == currentLowestPriority)
&& isRequestFromSameProcess
&& !(setResourceHolderRetain()
- && requestClient.shouldResourceHolderRetain())))) {
+ && requestClient
+ .resourceOwnershipRetentionEnabled())))) {
casSessionHandle[0] = cas.getHandle();
reclaimOwnerId[0] = lowestPriorityOwnerId;
return true;
@@ -1439,7 +1442,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde
|| ((requestClient.getPriority() == currentLowestPriority)
&& isRequestFromSameProcess
&& !(setResourceHolderRetain()
- && requestClient.shouldResourceHolderRetain())))) {
+ && requestClient
+ .resourceOwnershipRetentionEnabled())))) {
ciCamHandle[0] = ciCam.getHandle();
reclaimOwnerId[0] = lowestPriorityOwnerId;
return true;
@@ -1677,7 +1681,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde
|| ((requestClient.getPriority() == currentLowestPriority)
&& isRequestFromSameProcess
&& !(setResourceHolderRetain()
- && requestClient.shouldResourceHolderRetain())))) {
+ && requestClient
+ .resourceOwnershipRetentionEnabled())))) {
demuxHandle[0] = inUseLowestPriorityDemux.getHandle();
reclaimOwnerId[0] = inUseLowestPriorityDemux.getOwnerClientId();
return true;
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 5852af780b8b..d20f73d3c834 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
@@ -506,9 +506,9 @@ public class TunerResourceManagerServiceTest {
assertThat(client0.getProfile().getInUseFrontendHandles())
.isEqualTo(new HashSet<Long>(Arrays.asList(infos[0].handle)));
- // setResourceHolderRetain sets mResourceHolderRetain to true to allow the Resource Holder
- // (client0) to maintain ownership such as requester will not get the resources.
- client1.getProfile().setResourceHolderRetain(true);
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to true to allow the Resource
+ // Holder (client0) to maintain ownership such as requester will not get the resources.
+ client1.getProfile().setResourceOwnershipRetention(true);
request = tunerFrontendRequest(client1.getId() /*clientId*/, FrontendSettings.TYPE_DVBT);
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendHandle))
@@ -520,10 +520,10 @@ public class TunerResourceManagerServiceTest {
.isEqualTo(client0.getId());
assertThat(client0.isReclaimed()).isFalse();
- // setResourceHolderRetain sets mResourceHolderRetain to false to allow the Resource
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to false to allow the Resource
// Challenger (client1) to acquire the resource and Resource Holder loses ownership of the
// resources.
- client1.getProfile().setResourceHolderRetain(false);
+ client1.getProfile().setResourceOwnershipRetention(false);
assertThat(mTunerResourceManagerService.requestFrontendInternal(request, frontendHandle))
.isTrue();
@@ -645,9 +645,9 @@ public class TunerResourceManagerServiceTest {
.isEqualTo(new HashSet<Integer>(Arrays.asList(client0.getId())));
assertThat(mTunerResourceManagerService.getCasResource(1).isFullyUsed()).isTrue();
- // setResourceHolderRetain sets mResourceHolderRetain to true to allow the Resource Holder
- // to maintain ownership such as requester (client1) will not get the resources.
- client1.getProfile().setResourceHolderRetain(true);
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to true to allow the Resource
+ // Holder to maintain ownership such as requester (client1) will not get the resources.
+ client1.getProfile().setResourceOwnershipRetention(true);
request = casSessionRequest(client1.getId(), 1);
assertThat(
@@ -663,10 +663,10 @@ public class TunerResourceManagerServiceTest {
assertThat(mTunerResourceManagerService.getCasResource(1).isFullyUsed()).isTrue();
assertThat(client0.isReclaimed()).isFalse();
- // setResourceHolderRetain sets mResourceHolderRetain to false to allow the Resource
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to false to allow the Resource
// Challenger (client1) to acquire the resource and Resource Holder loses ownership of the
// resources.
- client1.getProfile().setResourceHolderRetain(false);
+ client1.getProfile().setResourceOwnershipRetention(false);
assertThat(
mTunerResourceManagerService.requestCasSessionInternal(request, casSessionHandle))
@@ -759,9 +759,9 @@ public class TunerResourceManagerServiceTest {
.isEqualTo(new HashSet<Integer>(Arrays.asList(client0.getId())));
assertThat(mTunerResourceManagerService.getCiCamResource(1).isFullyUsed()).isTrue();
- // setResourceHolderRetain sets mResourceHolderRetain to true to allow the Resource Holder
- // (client0) to maintain ownership such as requester will not get the resources.
- client1.getProfile().setResourceHolderRetain(true);
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to true to allow the Resource
+ // Holder (client0) to maintain ownership such as requester will not get the resources.
+ client1.getProfile().setResourceOwnershipRetention(true);
request = tunerCiCamRequest(client1.getId(), 1);
assertThat(mTunerResourceManagerService.requestCiCamInternal(request, ciCamHandle))
@@ -776,10 +776,10 @@ public class TunerResourceManagerServiceTest {
assertThat(mTunerResourceManagerService.getCiCamResource(1).isFullyUsed()).isTrue();
assertThat(client0.isReclaimed()).isFalse();
- // setResourceHolderRetain sets mResourceHolderRetain to false to allow the Resource
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to false to allow the Resource
// Challenger (client1) to acquire the resource and Resource Holder loses ownership of the
// resources.
- client1.getProfile().setResourceHolderRetain(false);
+ client1.getProfile().setResourceOwnershipRetention(false);
assertThat(mTunerResourceManagerService.requestCiCamInternal(request, ciCamHandle))
.isTrue();
@@ -927,9 +927,9 @@ public class TunerResourceManagerServiceTest {
assertThat(client0.getProfile().getInUseLnbHandles())
.isEqualTo(new HashSet<Long>(Arrays.asList(lnbHandles[0])));
- // setResourceHolderRetain sets mResourceHolderRetain to true to allow the Resource Holder
- // (client0) to maintain ownership such as requester will not get the resources.
- client1.getProfile().setResourceHolderRetain(true);
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to true to allow the Resource
+ // Holder (client0) to maintain ownership such as requester will not get the resources.
+ client1.getProfile().setResourceOwnershipRetention(true);
request = new TunerLnbRequest();
request.clientId = client1.getId();
@@ -942,10 +942,10 @@ public class TunerResourceManagerServiceTest {
assertThat(client0.isReclaimed()).isFalse();
assertThat(client1.getProfile().getInUseLnbHandles().size()).isEqualTo(0);
- // setResourceHolderRetain sets mResourceHolderRetain to false to allow the Resource
+ // setResourceOwnershipRetention sets mResourceOwnerRetention to false to allow the Resource
// Challenger (client1) to acquire the resource and Resource Holder loses ownership of the
// resources.
- client1.getProfile().setResourceHolderRetain(false);
+ client1.getProfile().setResourceOwnershipRetention(false);
assertThat(mTunerResourceManagerService.requestLnbInternal(request, lnbHandle)).isTrue();
assertThat(lnbHandle[0]).isEqualTo(lnbHandles[0]);