Loading core/java/android/content/pm/PackageManager.java +11 −0 Original line number Diff line number Diff line Loading @@ -1711,6 +1711,15 @@ public abstract class PackageManager { * {@hide} */ public static final int DELETE_FAILED_USED_SHARED_LIBRARY = -6; /** * Deletion failed return code: this is passed to the * {@link IPackageDeleteObserver} if the system failed to delete the package * because there is an app pinned. * * @hide */ public static final int DELETE_FAILED_APP_PINNED = -7; /** * Return code that is passed to the {@link IPackageMoveObserver} when the * package has been successfully moved by the system. Loading Loading @@ -7739,6 +7748,7 @@ public abstract class PackageManager { case DELETE_FAILED_OWNER_BLOCKED: return "DELETE_FAILED_OWNER_BLOCKED"; case DELETE_FAILED_ABORTED: return "DELETE_FAILED_ABORTED"; case DELETE_FAILED_USED_SHARED_LIBRARY: return "DELETE_FAILED_USED_SHARED_LIBRARY"; case DELETE_FAILED_APP_PINNED: return "DELETE_FAILED_APP_PINNED"; default: return Integer.toString(status); } } Loading @@ -7753,6 +7763,7 @@ public abstract class PackageManager { case DELETE_FAILED_OWNER_BLOCKED: return PackageInstaller.STATUS_FAILURE_BLOCKED; case DELETE_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED; case DELETE_FAILED_USED_SHARED_LIBRARY: return PackageInstaller.STATUS_FAILURE_CONFLICT; case DELETE_FAILED_APP_PINNED: return PackageInstaller.STATUS_FAILURE_BLOCKED; default: return PackageInstaller.STATUS_FAILURE; } } Loading services/core/java/com/android/server/pm/PackageManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -18713,6 +18713,19 @@ public class PackageManagerService extends IPackageManager.Stub final String packageName = versionedPackage.getPackageName(); final long versionCode = versionedPackage.getLongVersionCode(); final String internalPackageName; try { if (mInjector.getLocalService(ActivityTaskManagerInternal.class) .isBaseOfLockedTask(packageName)) { observer.onPackageDeleted( packageName, PackageManager.DELETE_FAILED_APP_PINNED, null); EventLog.writeEvent(0x534e4554, "127605586", -1, ""); return; } } catch (RemoteException e) { e.rethrowFromSystemServer(); } synchronized (mLock) { // Normalize package name to handle renamed packages and static libs internalPackageName = resolveInternalPackageNameLPr(packageName, versionCode); services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -565,4 +565,10 @@ public abstract class ActivityTaskManagerInternal { /** Set all associated companion app that belongs to an userId. */ public abstract void setCompanionAppPackages(int userId, Set<String> companionAppPackages); /** * @param packageName The package to check * @return Whether the package is the base of any locked task */ public abstract boolean isBaseOfLockedTask(String packageName); } services/core/java/com/android/server/wm/ActivityTaskManagerService.java +8 −0 Original line number Diff line number Diff line Loading @@ -7432,5 +7432,13 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { mCompanionAppUidsMap.put(userId, result); } } @Override public boolean isBaseOfLockedTask(String packageName) { synchronized (mGlobalLock) { return getLockTaskController().isBaseOfLockedTask(packageName); } } } } services/core/java/com/android/server/wm/LockTaskController.java +15 −0 Original line number Diff line number Diff line Loading @@ -870,6 +870,21 @@ public class LockTaskController { return new Pair<>(flags1, flags2); } /** * @param packageName The package to check * @return Whether the package is the base of any locked task */ boolean isBaseOfLockedTask(String packageName) { for (int i = 0; i < mLockTaskModeTasks.size(); i++) { final Intent bi = mLockTaskModeTasks.get(i).getBaseIntent(); if (bi != null && packageName.equals(bi.getComponent() .getPackageName())) { return true; } } return false; } /** * Gets the cached value of LockTask feature flags for a specific user. */ Loading Loading
core/java/android/content/pm/PackageManager.java +11 −0 Original line number Diff line number Diff line Loading @@ -1711,6 +1711,15 @@ public abstract class PackageManager { * {@hide} */ public static final int DELETE_FAILED_USED_SHARED_LIBRARY = -6; /** * Deletion failed return code: this is passed to the * {@link IPackageDeleteObserver} if the system failed to delete the package * because there is an app pinned. * * @hide */ public static final int DELETE_FAILED_APP_PINNED = -7; /** * Return code that is passed to the {@link IPackageMoveObserver} when the * package has been successfully moved by the system. Loading Loading @@ -7739,6 +7748,7 @@ public abstract class PackageManager { case DELETE_FAILED_OWNER_BLOCKED: return "DELETE_FAILED_OWNER_BLOCKED"; case DELETE_FAILED_ABORTED: return "DELETE_FAILED_ABORTED"; case DELETE_FAILED_USED_SHARED_LIBRARY: return "DELETE_FAILED_USED_SHARED_LIBRARY"; case DELETE_FAILED_APP_PINNED: return "DELETE_FAILED_APP_PINNED"; default: return Integer.toString(status); } } Loading @@ -7753,6 +7763,7 @@ public abstract class PackageManager { case DELETE_FAILED_OWNER_BLOCKED: return PackageInstaller.STATUS_FAILURE_BLOCKED; case DELETE_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED; case DELETE_FAILED_USED_SHARED_LIBRARY: return PackageInstaller.STATUS_FAILURE_CONFLICT; case DELETE_FAILED_APP_PINNED: return PackageInstaller.STATUS_FAILURE_BLOCKED; default: return PackageInstaller.STATUS_FAILURE; } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -18713,6 +18713,19 @@ public class PackageManagerService extends IPackageManager.Stub final String packageName = versionedPackage.getPackageName(); final long versionCode = versionedPackage.getLongVersionCode(); final String internalPackageName; try { if (mInjector.getLocalService(ActivityTaskManagerInternal.class) .isBaseOfLockedTask(packageName)) { observer.onPackageDeleted( packageName, PackageManager.DELETE_FAILED_APP_PINNED, null); EventLog.writeEvent(0x534e4554, "127605586", -1, ""); return; } } catch (RemoteException e) { e.rethrowFromSystemServer(); } synchronized (mLock) { // Normalize package name to handle renamed packages and static libs internalPackageName = resolveInternalPackageNameLPr(packageName, versionCode);
services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -565,4 +565,10 @@ public abstract class ActivityTaskManagerInternal { /** Set all associated companion app that belongs to an userId. */ public abstract void setCompanionAppPackages(int userId, Set<String> companionAppPackages); /** * @param packageName The package to check * @return Whether the package is the base of any locked task */ public abstract boolean isBaseOfLockedTask(String packageName); }
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +8 −0 Original line number Diff line number Diff line Loading @@ -7432,5 +7432,13 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { mCompanionAppUidsMap.put(userId, result); } } @Override public boolean isBaseOfLockedTask(String packageName) { synchronized (mGlobalLock) { return getLockTaskController().isBaseOfLockedTask(packageName); } } } }
services/core/java/com/android/server/wm/LockTaskController.java +15 −0 Original line number Diff line number Diff line Loading @@ -870,6 +870,21 @@ public class LockTaskController { return new Pair<>(flags1, flags2); } /** * @param packageName The package to check * @return Whether the package is the base of any locked task */ boolean isBaseOfLockedTask(String packageName) { for (int i = 0; i < mLockTaskModeTasks.size(); i++) { final Intent bi = mLockTaskModeTasks.get(i).getBaseIntent(); if (bi != null && packageName.equals(bi.getComponent() .getPackageName())) { return true; } } return false; } /** * Gets the cached value of LockTask feature flags for a specific user. */ Loading