diff options
| -rw-r--r-- | apex/media/framework/api/system-current.txt | 2 | ||||
| -rw-r--r-- | apex/media/framework/java/android/media/MediaTranscodeManager.java | 33 |
2 files changed, 35 insertions, 0 deletions
diff --git a/apex/media/framework/api/system-current.txt b/apex/media/framework/api/system-current.txt index ad681695ace5..8d83309f5be0 100644 --- a/apex/media/framework/api/system-current.txt +++ b/apex/media/framework/api/system-current.txt @@ -25,7 +25,9 @@ package android.media { } public static final class MediaTranscodeManager.TranscodingSession { + method public void addClientUid(int); method public void cancel(); + method @NonNull public java.util.List<java.lang.Integer> getClientUids(); method public int getErrorCode(); method @IntRange(from=0, to=100) public int getProgress(); method public int getResult(); diff --git a/apex/media/framework/java/android/media/MediaTranscodeManager.java b/apex/media/framework/java/android/media/MediaTranscodeManager.java index 7f4685ee053a..fef48654eb59 100644 --- a/apex/media/framework/java/android/media/MediaTranscodeManager.java +++ b/apex/media/framework/java/android/media/MediaTranscodeManager.java @@ -1352,6 +1352,8 @@ public final class MediaTranscodeManager { private @TranscodingSessionErrorCode int mErrorCode = ERROR_NONE; @GuardedBy("mLock") private boolean mHasRetried = false; + @GuardedBy("mLock") + private @NonNull List<Integer> mClientUidList = new ArrayList<>(); // The original request that associated with this session. private final TranscodingRequest mRequest; @@ -1370,6 +1372,7 @@ public final class MediaTranscodeManager { mListenerExecutor = executor; mListener = listener; mRequest = request; + mClientUidList.add(request.getClientUid()); } /** @@ -1515,6 +1518,36 @@ public final class MediaTranscodeManager { } /** + * Adds a client uid that is also waiting for this transcoding session. + * <p> + * 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 + * transcoding. If the client does not have the permission, the transcoding will fail. + */ + public void addClientUid(int uid) { + if (uid < 0) { + throw new IllegalArgumentException("Invalid Uid"); + } + synchronized (mLock) { + if (!mClientUidList.contains(uid)) { + // see ag/14023202 for implementation + mClientUidList.add(uid); + } + } + } + + /** + * Query all the client that waiting for this transcoding session + * @return a list containing all the client uids. + */ + @NonNull + public List<Integer> getClientUids() { + synchronized (mLock) { + return mClientUidList; + } + } + + /** * Gets sessionId of the transcoding session. * @return session id. */ |