Change argument types from FD to PFD

Bug: 142751512
Test: "adb shell cmd jobschduler help"
Test: "adb shell cmd activity help"
Change-Id: Ic35588f7c9fcaa06e3cf4feeedf54b3a0835ad44
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index 593e494..4e96f5e 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -57,6 +57,7 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
+import android.os.ParcelFileDescriptor;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -2688,10 +2689,12 @@
         }
 
         @Override
-        protected int handleShellCommand(@NonNull FileDescriptor in, @NonNull FileDescriptor out,
-                @NonNull FileDescriptor err, @NonNull String[] args) {
+        protected int handleShellCommand(@NonNull ParcelFileDescriptor in,
+                @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
+                @NonNull String[] args) {
             return (new JobSchedulerShellCommand(JobSchedulerService.this)).exec(
-                    this, in, out, err, args);
+                    this, in.getFileDescriptor(), out.getFileDescriptor(), err.getFileDescriptor(),
+                    args);
         }
 
 
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index a856975..fda1539 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -933,7 +933,8 @@
 
         int result = -1;
         try {
-            result = handleShellCommand(in, out, err, args);
+            result = handleShellCommand(new ParcelFileDescriptor(in),
+                    new ParcelFileDescriptor(out), new ParcelFileDescriptor(err), args);
         } finally {
             resultReceiver.send(result, null);
         }
@@ -954,9 +955,10 @@
      * @hide
      */
     // @SystemApi TODO Make it a system API.
-    protected int handleShellCommand(@NonNull FileDescriptor in, @NonNull FileDescriptor out,
-            @NonNull FileDescriptor err, @NonNull String[] args) {
-        FileOutputStream ferr = new FileOutputStream(err);
+    protected int handleShellCommand(@NonNull ParcelFileDescriptor in,
+            @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
+            @NonNull String[] args) {
+        FileOutputStream ferr = new FileOutputStream(err.getFileDescriptor());
         PrintWriter pw = new FastPrintWriter(ferr);
         pw.println("No shell command implementation.");
         pw.flush();