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

Commit 61ff16a2 authored by Eugene Susla's avatar Eugene Susla Committed by Automerger Merge Worker
Browse files

Merge "No need for copying dump state for PC" into rvc-dev am: 0728a4fe

Change-Id: I965a3ad44c779788d2a8c5c721831fe0fe10f592
parents cfefeafe 0728a4fe
Loading
Loading
Loading
Loading
+11 −26
Original line number Diff line number Diff line
@@ -56,15 +56,11 @@ 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;
@@ -72,7 +68,6 @@ 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;
@@ -88,6 +83,7 @@ import java.util.function.Consumer;
public final class PermissionControllerManager {
    private static final String TAG = PermissionControllerManager.class.getSimpleName();

    private static final long REQUEST_TIMEOUT_MILLIS = 60000;
    private static final long UNBIND_TIMEOUT_MILLIS = 10000;
    private static final int CHUNK_SIZE = 4 * 1024;

@@ -226,6 +222,11 @@ public final class PermissionControllerManager {
                        return handler;
                    }

                    @Override
                    protected long getRequestTimeoutMs() {
                        return REQUEST_TIMEOUT_MILLIS;
                    }

                    @Override
                    protected long getAutoDisconnectTimeoutMs() {
                        return UNBIND_TIMEOUT_MILLIS;
@@ -487,28 +488,12 @@ public final class PermissionControllerManager {
     *
     * @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);
                        });

    public void dump(@NonNull FileDescriptor fd, @Nullable String[] args) {
        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);
            mRemoteService.post(service -> service.asBinder().dump(fd, args))
                    .get(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
        } catch (Exception e) {
            Log.e(TAG, "Could not get dump", e);
        }
    }

+5 −0
Original line number Diff line number Diff line
@@ -499,6 +499,11 @@ public abstract class PermissionControllerService extends Service {

            @Override
            protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
                checkNotNull(fd, "fd");
                checkNotNull(writer, "writer");

                enforceSomePermissionsGrantedToCaller(Manifest.permission.GET_RUNTIME_PERMISSIONS);

                PermissionControllerService.this.dump(fd, writer, args);
            }
        };
+1 −1
Original line number Diff line number Diff line
@@ -421,7 +421,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {

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

    /**