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

Commit 09fd12d9 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...

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

Change-Id: Ie3e2a56ea85000d760a9abe23ead133236b764bb
parents fcfaee98 2ed09527
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>