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

Commit 2ed09527 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Automerger Merge Worker
Browse files

Merge "Forward dumps from PermissionControllerManager to permissionmgr" into rvc-dev am: f7d1f1a4

Change-Id: I6a179fc69d68b70107de794c113c6acfcef67f3f
parents 10662e54 f7d1f1a4
Loading
Loading
Loading
Loading
+37 −0
Original line number 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.RemoteStream;
import com.android.internal.infra.ServiceConnector;
import com.android.internal.os.TransferPipe;
import com.android.internal.util.CollectionUtils;

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.RetentionPolicy;
import java.util.ArrayList;
@@ -67,7 +72,9 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;

/**
@@ -475,6 +482,36 @@ public final class PermissionControllerManager {
        }, 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.
     *
+7 −0
Original line number 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.Preconditions;

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

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

import libcore.util.EmptyArray;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -417,6 +419,11 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        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.
     * <p>