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

Commit aaa8d9fe authored by Eugene Susla's avatar Eugene Susla
Browse files

Run Binder.dump away from main thread

Fixes: 158212653
Test: ensure .dump() is no longer run on main thread
Change-Id: I7c6e1c9f54c65c21e411813ffda636377a1c2bbe
parent 5d075be9
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_DENIE
import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED;
import static android.permission.PermissionControllerService.SERVICE_INTERFACE;

import static com.android.internal.util.FunctionalUtils.uncheckExceptions;
import static com.android.internal.util.Preconditions.checkArgument;
import static com.android.internal.util.Preconditions.checkArgumentNonnegative;
import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull;
@@ -56,6 +57,7 @@ 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.BackgroundThread;
import com.android.internal.util.CollectionUtils;

import libcore.util.EmptyArray;
@@ -497,8 +499,11 @@ public final class PermissionControllerManager {
     */
    public void dump(@NonNull FileDescriptor fd, @Nullable String[] args) {
        try {
            mRemoteService.post(service -> service.asBinder().dump(fd, args))
                    .get(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
            mRemoteService.postAsync(service -> {
                return AndroidFuture.runAsync(uncheckExceptions(() -> {
                    service.asBinder().dump(fd, args);
                }), BackgroundThread.getExecutor());
            }).get(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
        } catch (Exception e) {
            Log.e(TAG, "Could not get dump", e);
        }