diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-09-29 07:54:37 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2017-09-29 07:55:25 -0700 |
commit | 6b0aa870b821b5531f6eec782542a2b1e0f2c0ee (patch) | |
tree | 1d4d5bf59a4d6230436f2c7bd0b4c799635a9d6d /src/com/android/launcher3/UninstallDropTarget.java | |
parent | 510fdfbcea6bc6bf76e29a67fef106b78e8b0d89 (diff) | |
download | android_packages_apps_Trebuchet-6b0aa870b821b5531f6eec782542a2b1e0f2c0ee.tar.gz android_packages_apps_Trebuchet-6b0aa870b821b5531f6eec782542a2b1e0f2c0ee.tar.bz2 android_packages_apps_Trebuchet-6b0aa870b821b5531f6eec782542a2b1e0f2c0ee.zip |
Caching system app flag to avoid unnecessary system calls
when scrolling
Bug: 65493000
Change-Id: If60ec6dec23e7efa1031d72e76775fa2449bcd7b
Diffstat (limited to 'src/com/android/launcher3/UninstallDropTarget.java')
-rw-r--r-- | src/com/android/launcher3/UninstallDropTarget.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/com/android/launcher3/UninstallDropTarget.java b/src/com/android/launcher3/UninstallDropTarget.java index 84d6a9b34..902fd3439 100644 --- a/src/com/android/launcher3/UninstallDropTarget.java +++ b/src/com/android/launcher3/UninstallDropTarget.java @@ -21,6 +21,7 @@ import java.net.URISyntaxException; public class UninstallDropTarget extends ButtonDropTarget { private static final String TAG = "UninstallDropTarget"; + private static Boolean sUninstallDisabled; public UninstallDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); @@ -48,13 +49,22 @@ public class UninstallDropTarget extends ButtonDropTarget { } public static boolean supportsDrop(Context context, ItemInfo info) { - UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); - Bundle restrictions = userManager.getUserRestrictions(); - if (restrictions.getBoolean(UserManager.DISALLOW_APPS_CONTROL, false) - || restrictions.getBoolean(UserManager.DISALLOW_UNINSTALL_APPS, false)) { + if (sUninstallDisabled == null) { + UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); + Bundle restrictions = userManager.getUserRestrictions(); + sUninstallDisabled = restrictions.getBoolean(UserManager.DISALLOW_APPS_CONTROL, false) + || restrictions.getBoolean(UserManager.DISALLOW_UNINSTALL_APPS, false); + } + if (sUninstallDisabled) { return false; } + if (info instanceof AppInfo) { + AppInfo appInfo = (AppInfo) info; + if (appInfo.isSystemApp != AppInfo.FLAG_SYSTEM_UNKNOWN) { + return (appInfo.isSystemApp & AppInfo.FLAG_SYSTEM_NO) != 0; + } + } return getUninstallTarget(context, info) != null; } |