Run Binder.dump away from main thread
Fixes: 158212653 Test: ensure .dump() is no longer run on main thread Change-Id: I7c6e1c9f54c65c21e411813ffda636377a1c2bbe
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user