Merge "transcoding: Do not throw exception in registerClient." into sc-dev
diff --git a/apex/media/framework/java/android/media/MediaTranscodeManager.java b/apex/media/framework/java/android/media/MediaTranscodeManager.java
index c924d9a..ca5aeb8 100644
--- a/apex/media/framework/java/android/media/MediaTranscodeManager.java
+++ b/apex/media/framework/java/android/media/MediaTranscodeManager.java
@@ -295,8 +295,8 @@
                 /* ignore */
             }
         }
-
-        throw new UnsupportedOperationException("Failed to connect to MediaTranscoding service");
+        Log.w(TAG, "Failed to get service");
+        return null;
     }
 
     /*
@@ -463,8 +463,7 @@
                 }
             };
 
-    private ITranscodingClient registerClient(IMediaTranscodingService service)
-            throws UnsupportedOperationException {
+    private ITranscodingClient registerClient(IMediaTranscodingService service) {
         synchronized (mLock) {
             try {
                 // Registers the client with MediaTranscoding service.
@@ -476,13 +475,12 @@
                 if (mTranscodingClient != null) {
                     mTranscodingClient.asBinder().linkToDeath(() -> onClientDied(), /* flags */ 0);
                 }
-                return mTranscodingClient;
-            } catch (RemoteException re) {
-                Log.e(TAG, "Failed to register new client due to exception " + re);
+            } catch (Exception ex) {
+                Log.e(TAG, "Failed to register new client due to exception " + ex);
                 mTranscodingClient = null;
             }
         }
-        throw new UnsupportedOperationException("Failed to register new client");
+        return mTranscodingClient;
     }
 
     /**
@@ -495,7 +493,9 @@
         mUid = Os.getuid();
         mPid = Os.getpid();
         IMediaTranscodingService service = getService(false /*retry*/);
-        mTranscodingClient = registerClient(service);
+        if (service != null) {
+            mTranscodingClient = registerClient(service);
+        }
     }
 
     public static final class TranscodingRequest {
@@ -1567,6 +1567,10 @@
                     if (mTranscodingClient == null) {
                         // Try to register with the service again.
                         IMediaTranscodingService service = getService(false /*retry*/);
+                        if (service == null) {
+                            throw new MediaTranscodingException.ServiceNotAvailableException(
+                                    "Service rebooting. Try again later");
+                        }
                         mTranscodingClient = registerClient(service);
                         // If still fails, throws an exception to tell client to try later.
                         if (mTranscodingClient == null) {