Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8472184 authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Change FileDescriptor to PFD, per API guidelines.

handleShellCommand() would be a system API, so we should use PFD instead,
per the API guidelines.

Bug: 142751512
Test: "adb shell cmd jobschduler help" -> show help
Test: "$ cmd jobscheduler run abc 123" -> shows "Package not found: abc / user 0"
Test: "adb shell cmd activity help" -> show help
Change-Id: I64b1e4c540db836cc4a46fed24a038b7077ecb63
parent 78cae68f
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import android.os.Binder;
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,13 +2689,14 @@ public class JobSchedulerService extends com.android.server.SystemService
        }

        @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);
        }


        /**
         * <b>For internal system user only!</b>
         * Returns a list of all currently-executing jobs.
+12 −5
Original line number Diff line number Diff line
@@ -932,8 +932,14 @@ public class Binder implements IBinder {
        }

        int result = -1;
        try {
            result = handleShellCommand(in, out, err, args);
        try (ParcelFileDescriptor inPfd = ParcelFileDescriptor.dup(in);
                ParcelFileDescriptor outPfd = ParcelFileDescriptor.dup(out);
                ParcelFileDescriptor errPfd = ParcelFileDescriptor.dup(err)) {
            result = handleShellCommand(inPfd, outPfd, errPfd, args);
        } catch (IOException e) {
            PrintWriter pw = new FastPrintWriter(new FileOutputStream(err));
            pw.println("dup() failed: " + e.getMessage());
            pw.flush();
        } finally {
            resultReceiver.send(result, null);
        }
@@ -954,9 +960,10 @@ public class Binder implements IBinder {
     * @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();