trancoding: Rework some API signature.

This is for addressing part of API counsel comments.

1. Remove AutoCloseable from MediaTranscodeManager.
2. Return job id in progress update callback.
3. Hide PRIORITY_OFFLINE.

Bug: 160260102
Test: Unit test
Change-Id: I7ae4d723a8f1b325ddc5fe7e81c49783adcbae19
diff --git a/api/system-current.txt b/api/system-current.txt
index dbe2e31..812153a 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4334,11 +4334,8 @@
     field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int RADIO_TUNER = 1998; // 0x7ce
   }
 
-  public final class MediaTranscodeManager implements java.lang.AutoCloseable {
-    method public void close();
+  public final class MediaTranscodeManager {
     method @NonNull public android.media.MediaTranscodeManager.TranscodingJob enqueueRequest(@NonNull android.media.MediaTranscodeManager.TranscodingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaTranscodeManager.OnTranscodingFinishedListener) throws java.io.FileNotFoundException;
-    method protected void finalize();
-    field public static final int PRIORITY_OFFLINE = 2; // 0x2
     field public static final int PRIORITY_REALTIME = 1; // 0x1
     field public static final int TRANSCODING_TYPE_VIDEO = 1; // 0x1
   }
@@ -4367,7 +4364,7 @@
   }
 
   @java.lang.FunctionalInterface public static interface MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener {
-    method public void onProgressUpdate(@IntRange(from=0, to=100) int);
+    method public void onProgressUpdate(@NonNull android.media.MediaTranscodeManager.TranscodingJob, @IntRange(from=0, to=100) int);
   }
 
   public static final class MediaTranscodeManager.TranscodingRequest {
diff --git a/api/test-current.txt b/api/test-current.txt
index 2dd7409..6a11c6c4 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1819,11 +1819,8 @@
     method @NonNull public String getOriginalId();
   }
 
-  public final class MediaTranscodeManager implements java.lang.AutoCloseable {
-    method public void close();
+  public final class MediaTranscodeManager {
     method @NonNull public android.media.MediaTranscodeManager.TranscodingJob enqueueRequest(@NonNull android.media.MediaTranscodeManager.TranscodingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaTranscodeManager.OnTranscodingFinishedListener) throws java.io.FileNotFoundException;
-    method protected void finalize();
-    field public static final int PRIORITY_OFFLINE = 2; // 0x2
     field public static final int PRIORITY_REALTIME = 1; // 0x1
     field public static final int TRANSCODING_TYPE_VIDEO = 1; // 0x1
   }
@@ -1852,7 +1849,7 @@
   }
 
   @java.lang.FunctionalInterface public static interface MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener {
-    method public void onProgressUpdate(@IntRange(from=0, to=100) int);
+    method public void onProgressUpdate(@NonNull android.media.MediaTranscodeManager.TranscodingJob, @IntRange(from=0, to=100) int);
   }
 
   public static final class MediaTranscodeManager.TranscodingRequest {
diff --git a/media/java/android/media/MediaTranscodeManager.java b/media/java/android/media/MediaTranscodeManager.java
index cf61152..1c5288b 100644
--- a/media/java/android/media/MediaTranscodeManager.java
+++ b/media/java/android/media/MediaTranscodeManager.java
@@ -102,7 +102,7 @@
  */
 @TestApi
 @SystemApi
-public final class MediaTranscodeManager implements AutoCloseable {
+public final class MediaTranscodeManager {
     private static final String TAG = "MediaTranscodeManager";
 
     private static final String MEDIA_TRANSCODING_SERVICE = "media.transcoding";
@@ -131,28 +131,6 @@
      */
     public static final int TRANSCODING_TYPE_IMAGE = 2;
 
-    @Override
-    public void close() {
-        release();
-    }
-
-    /**
-     * Releases the MediaTranscodeManager.
-     */
-    private void release() {
-        synchronized (mLock) {
-            try {
-                if (mTranscodingClient != null) {
-                    mTranscodingClient.unregister();
-                }
-            } catch (Exception ex) {
-                Log.e(TAG, "Failed to unregister the client");
-            } finally {
-                mTranscodingClient = null;
-            }
-        }
-    }
-
     /** @hide */
     @IntDef(prefix = {"TRANSCODING_TYPE_"}, value = {
             TRANSCODING_TYPE_UNKNOWN,
@@ -182,6 +160,7 @@
      * <p>Jobs with PRIORITY_OFFLINE will be scheduled behind PRIORITY_REALTIME. Always set to
      * PRIORITY_OFFLINE if client does not need the result as soon as possible and could accept
      * delay of the transcoding result.
+     * @hide
      * TODO(hkuang): Add more description of this when priority is finalized.
      */
     public static final int PRIORITY_OFFLINE = 2;
@@ -287,7 +266,7 @@
             // Notifies client the progress update.
             if (job.mProgressUpdateExecutor != null && job.mProgressUpdateListener != null) {
                 job.mProgressUpdateExecutor.execute(
-                        () -> job.mProgressUpdateListener.onProgressUpdate(newProgress));
+                        () -> job.mProgressUpdateListener.onProgressUpdate(job, newProgress));
             }
         }
     }
@@ -503,11 +482,6 @@
         mTranscodingClient = registerClient(service);
     }
 
-    @Override
-    protected void finalize() {
-        release();
-    }
-
     public static final class TranscodingRequest {
         /** Uri of the source media file. */
         private @NonNull Uri mSourceUri;
@@ -892,9 +866,12 @@
             /**
              * Called when the progress changes. The progress is in percentage between 0 and 1,
              * where 0 means that the job has not yet started and 100 means that it has finished.
+             *
+             * @param job      The job associated with the progress.
              * @param progress The new progress ranging from 0 ~ 100 inclusive.
              */
-            void onProgressUpdate(@IntRange(from = 0, to = 100) int progress);
+            void onProgressUpdate(@NonNull TranscodingJob job,
+                    @IntRange(from = 0, to = 100) int progress);
         }
 
         private final ITranscodingClient mJobOwner;
diff --git a/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerDiedTest.java b/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerDiedTest.java
index 6ea573e..f00c14d 100644
--- a/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerDiedTest.java
+++ b/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerDiedTest.java
@@ -231,7 +231,7 @@
         job.setOnProgressUpdateListener(listenerExecutor,
                 new TranscodingJob.OnProgressUpdateListener() {
                     @Override
-                    public void onProgressUpdate(int newProgress) {
+                    public void onProgressUpdate(TranscodingJob job, int newProgress) {
                         if (newProgress > 0) {
                             jobStartedSemaphore.release();
                         }
diff --git a/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java b/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java
index a54655d..1a3e360 100644
--- a/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java
+++ b/media/tests/MediaTranscodingTest/src/com/android/mediatranscodingtest/MediaTranscodeManagerTest.java
@@ -532,7 +532,7 @@
                     int mPreviousProgress = 0;
 
                     @Override
-                    public void onProgressUpdate(int newProgress) {
+                    public void onProgressUpdate(TranscodingJob job, int newProgress) {
                         assertTrue("Invalid proress update", newProgress > mPreviousProgress);
                         assertTrue("Invalid proress update", newProgress <= 100);
                         if (newProgress > 0) {
diff --git a/non-updatable-api/system-current.txt b/non-updatable-api/system-current.txt
index f64be2b..04e4b82 100644
--- a/non-updatable-api/system-current.txt
+++ b/non-updatable-api/system-current.txt
@@ -4274,11 +4274,8 @@
     field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int RADIO_TUNER = 1998; // 0x7ce
   }
 
-  public final class MediaTranscodeManager implements java.lang.AutoCloseable {
-    method public void close();
+  public final class MediaTranscodeManager {
     method @NonNull public android.media.MediaTranscodeManager.TranscodingJob enqueueRequest(@NonNull android.media.MediaTranscodeManager.TranscodingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaTranscodeManager.OnTranscodingFinishedListener) throws java.io.FileNotFoundException;
-    method protected void finalize();
-    field public static final int PRIORITY_OFFLINE = 2; // 0x2
     field public static final int PRIORITY_REALTIME = 1; // 0x1
     field public static final int TRANSCODING_TYPE_VIDEO = 1; // 0x1
   }
@@ -4307,7 +4304,7 @@
   }
 
   @java.lang.FunctionalInterface public static interface MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener {
-    method public void onProgressUpdate(@IntRange(from=0, to=100) int);
+    method public void onProgressUpdate(@NonNull android.media.MediaTranscodeManager.TranscodingJob, @IntRange(from=0, to=100) int);
   }
 
   public static final class MediaTranscodeManager.TranscodingRequest {