From 0f8da1c877377a9cd54034058c5f9a7d755a627f Mon Sep 17 00:00:00 2001 From: wangmingming1 Date: Tue, 10 Apr 2018 09:35:25 +0800 Subject: [PATCH] don't block adb while running uninstall Test: Manual 1. setup a work profile 2. set a uninstall restriction on foo app for the work profile by calling set DevicePolicyManager.setUninstallBlocked() 3. observe adb uninstallation can return with 'DELETE_FAILED_OWNER_BLOCKED' message without blocking forever by using the following command line: `adb uninstall --user user-id-of-work-profile com.foo` Test: Manual 1. install lots of apks via adb 2. uninstall apks via adb Change-Id: I68706782ae547250433e3dd8ff285d4932473033 Merged-In: If89978c5a79ef998bde55c254ced4b6a3ff6e645 Signed-off-by: wangmingming1 --- .../com/android/server/pm/PackageManagerShellCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 3857c96f601dc..6369b4de30a67 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -77,7 +77,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.WeakHashMap; -import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; class PackageManagerShellCommand extends ShellCommand { @@ -1750,7 +1750,7 @@ class PackageManagerShellCommand extends ShellCommand { } private static class LocalIntentReceiver { - private final SynchronousQueue mResult = new SynchronousQueue<>(); + private final LinkedBlockingQueue mResult = new LinkedBlockingQueue<>(); private IIntentSender.Stub mLocalSender = new IIntentSender.Stub() { @Override