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

Commit 5ab27fca authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Forward dumps from PermissionControllerManager to permissionmgr

Test: adb shell dumpsys permissionmgr
Bug: 155680199
Change-Id: Iab5da24277eb6333ef047ab84dfcb65b7c4c2ff2
parent 7efdd5d9
Loading
Loading
Loading
Loading
+37 −0
Original line number Original line Diff line number Diff line
@@ -56,10 +56,15 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.AndroidFuture;
import com.android.internal.infra.AndroidFuture;
import com.android.internal.infra.RemoteStream;
import com.android.internal.infra.RemoteStream;
import com.android.internal.infra.ServiceConnector;
import com.android.internal.infra.ServiceConnector;
import com.android.internal.os.TransferPipe;
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.CollectionUtils;


import libcore.util.EmptyArray;
import libcore.util.EmptyArray;


import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -67,7 +72,9 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Collections;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.function.Consumer;


/**
/**
@@ -475,6 +482,36 @@ public final class PermissionControllerManager {
        }, executor);
        }, executor);
    }
    }


    /**
     * Dump permission controller state.
     *
     * @hide
     */
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @Nullable String[] args) {
        CompletableFuture<Throwable> dumpResult = new CompletableFuture<>();
        mRemoteService.postForResult(
                service -> TransferPipe.dumpAsync(service.asBinder(), args))
                .whenComplete(
                        (dump, err) -> {
                            try (FileOutputStream out = new FileOutputStream(fd)) {
                                out.write(dump);
                            } catch (IOException | NullPointerException e) {
                                Log.e(TAG, "Could for forwards permission controller dump", e);
                            }

                            dumpResult.complete(err);
                        });

        try {
            Throwable err = dumpResult.get(UNBIND_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
            if (err != null) {
                throw err;
            }
        } catch (Throwable e) {
            Log.e(TAG, "Could not dump permission controller state", e);
        }
    }

    /**
    /**
     * Gets the runtime permissions for an app.
     * Gets the runtime permissions for an app.
     *
     *
+7 −0
Original line number Original line Diff line number Diff line
@@ -50,9 +50,11 @@ import com.android.internal.infra.AndroidFuture;
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;


import java.io.FileDescriptor;
import java.io.IOException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
import java.util.List;
import java.util.List;
@@ -494,6 +496,11 @@ public abstract class PermissionControllerService extends Service {
                        "packageName cannot be null");
                        "packageName cannot be null");
                onOneTimePermissionSessionTimeout(packageName);
                onOneTimePermissionSessionTimeout(packageName);
            }
            }

            @Override
            protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
                PermissionControllerService.this.dump(fd, writer, args);
            }
        };
        };
    }
    }
}
}
+7 −0
Original line number Original line Diff line number Diff line
@@ -149,6 +149,8 @@ import com.android.server.policy.SoftRestrictedPermissionPolicy;


import libcore.util.EmptyArray;
import libcore.util.EmptyArray;


import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -417,6 +419,11 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        LocalServices.addService(PermissionManagerInternal.class, localService);
        LocalServices.addService(PermissionManagerInternal.class, localService);
    }
    }


    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        mContext.getSystemService(PermissionControllerManager.class).dump(fd, pw, args);
    }

    /**
    /**
     * Creates and returns an initialized, internal service for use by other components.
     * Creates and returns an initialized, internal service for use by other components.
     * <p>
     * <p>