Merge "transcoding: Connect the new addClientUid with service." into sc-dev

This commit is contained in:
Hangyu Kuang
2021-04-08 16:48:23 +00:00
committed by Android (Google) Code Review
2 changed files with 39 additions and 12 deletions

View File

@@ -25,7 +25,7 @@ package android.media {
} }
public static final class MediaTranscodeManager.TranscodingSession { public static final class MediaTranscodeManager.TranscodingSession {
method public void addClientUid(int); method public boolean addClientUid(int);
method public void cancel(); method public void cancel();
method @NonNull public java.util.List<java.lang.Integer> getClientUids(); method @NonNull public java.util.List<java.lang.Integer> getClientUids();
method public int getErrorCode(); method public int getErrorCode();

View File

@@ -1361,8 +1361,6 @@ public final class MediaTranscodeManager {
private @TranscodingSessionErrorCode int mErrorCode = ERROR_NONE; private @TranscodingSessionErrorCode int mErrorCode = ERROR_NONE;
@GuardedBy("mLock") @GuardedBy("mLock")
private boolean mHasRetried = false; private boolean mHasRetried = false;
@GuardedBy("mLock")
private @NonNull List<Integer> mClientUidList = new ArrayList<>();
// The original request that associated with this session. // The original request that associated with this session.
private final TranscodingRequest mRequest; private final TranscodingRequest mRequest;
@@ -1381,7 +1379,6 @@ public final class MediaTranscodeManager {
mListenerExecutor = executor; mListenerExecutor = executor;
mListener = listener; mListener = listener;
mRequest = request; mRequest = request;
mClientUidList.add(request.getClientUid());
} }
/** /**
@@ -1532,17 +1529,31 @@ public final class MediaTranscodeManager {
* Only privilege caller with android.permission.WRITE_MEDIA_STORAGE could add the * Only privilege caller with android.permission.WRITE_MEDIA_STORAGE could add the
* uid. Note that the permission check happens on the service side upon starting the * uid. Note that the permission check happens on the service side upon starting the
* transcoding. If the client does not have the permission, the transcoding will fail. * transcoding. If the client does not have the permission, the transcoding will fail.
* @param uid the additional client uid to be added.
* @return true if successfully added, false otherwise.
*/ */
public void addClientUid(int uid) { public boolean addClientUid(int uid) {
if (uid < 0) { if (uid < 0) {
throw new IllegalArgumentException("Invalid Uid"); throw new IllegalArgumentException("Invalid Uid");
} }
synchronized (mLock) {
if (!mClientUidList.contains(uid)) { // Get the client interface.
// see ag/14023202 for implementation ITranscodingClient client = mManager.getTranscodingClient();
mClientUidList.add(uid); if (client == null) {
} Log.e(TAG, "Service is dead...");
return false;
} }
try {
if (!client.addClientUid(mSessionId, uid)) {
Log.e(TAG, "Failed to add client uid");
return false;
}
} catch (Exception ex) {
Log.e(TAG, "Failed to get client uids due to " + ex);
return false;
}
return true;
} }
/** /**
@@ -1551,9 +1562,25 @@ public final class MediaTranscodeManager {
*/ */
@NonNull @NonNull
public List<Integer> getClientUids() { public List<Integer> getClientUids() {
synchronized (mLock) { List<Integer> uidList = new ArrayList<Integer>();
return mClientUidList;
// Get the client interface.
ITranscodingClient client = mManager.getTranscodingClient();
if (client == null) {
Log.e(TAG, "Service is dead...");
return uidList;
} }
try {
int[] clientUids = client.getClientUids(mSessionId);
for (int i : clientUids) {
uidList.add(i);
}
} catch (Exception ex) {
Log.e(TAG, "Failed to get client uids due to " + ex);
}
return uidList;
} }
/** /**