diff options
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]); |