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

Commit 0edbb19c authored by Sunny Goyal's avatar Sunny Goyal Committed by Android (Google) Code Review
Browse files

Merge changes from topic "am-ce7ed750-6b89-4e1c-80d9-bd9a3ec4b170" into ub-launcher3-master

* changes:
  [automerger] Caching system app flag to avoid unnecessary system calls when scrolling am: 6b0aa870
  Caching system app flag to avoid unnecessary system calls when scrolling
parents 9b8e36b9 9c73d4ff
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.launcher3;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherActivityInfo;
import android.os.UserHandle;
import android.os.UserHandle;


@@ -31,6 +32,10 @@ import com.android.launcher3.util.PackageManagerHelper;
 */
 */
public class AppInfo extends ItemInfoWithIcon {
public class AppInfo extends ItemInfoWithIcon {


    public static final int FLAG_SYSTEM_UNKNOWN = 0;
    public static final int FLAG_SYSTEM_YES = 1 << 0;
    public static final int FLAG_SYSTEM_NO = 1 << 1;

    /**
    /**
     * The intent used to start the application.
     * The intent used to start the application.
     */
     */
@@ -43,6 +48,11 @@ public class AppInfo extends ItemInfoWithIcon {
     */
     */
    public int isDisabled = ShortcutInfo.DEFAULT;
    public int isDisabled = ShortcutInfo.DEFAULT;


    /**
     * Stores if the app is a system app or not.
     */
    public int isSystemApp;

    public AppInfo() {
    public AppInfo() {
        itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
        itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
    }
    }
@@ -71,6 +81,10 @@ public class AppInfo extends ItemInfoWithIcon {
        }
        }


        intent = makeLaunchIntent(info);
        intent = makeLaunchIntent(info);

        isSystemApp = (info.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) == 0
                ? FLAG_SYSTEM_NO : FLAG_SYSTEM_YES;

    }
    }


    public AppInfo(AppInfo info) {
    public AppInfo(AppInfo info) {
@@ -79,6 +93,7 @@ public class AppInfo extends ItemInfoWithIcon {
        title = Utilities.trim(info.title);
        title = Utilities.trim(info.title);
        intent = new Intent(info.intent);
        intent = new Intent(info.intent);
        isDisabled = info.isDisabled;
        isDisabled = info.isDisabled;
        isSystemApp = info.isSystemApp;
    }
    }


    @Override
    @Override
+14 −4
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import java.net.URISyntaxException;
public class UninstallDropTarget extends ButtonDropTarget {
public class UninstallDropTarget extends ButtonDropTarget {


    private static final String TAG = "UninstallDropTarget";
    private static final String TAG = "UninstallDropTarget";
    private static Boolean sUninstallDisabled;


    public UninstallDropTarget(Context context, AttributeSet attrs) {
    public UninstallDropTarget(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
        this(context, attrs, 0);
@@ -48,13 +49,22 @@ public class UninstallDropTarget extends ButtonDropTarget {
    }
    }


    public static boolean supportsDrop(Context context, ItemInfo info) {
    public static boolean supportsDrop(Context context, ItemInfo info) {
        if (sUninstallDisabled == null) {
            UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
            UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
            Bundle restrictions = userManager.getUserRestrictions();
            Bundle restrictions = userManager.getUserRestrictions();
        if (restrictions.getBoolean(UserManager.DISALLOW_APPS_CONTROL, false)
            sUninstallDisabled = restrictions.getBoolean(UserManager.DISALLOW_APPS_CONTROL, false)
                || restrictions.getBoolean(UserManager.DISALLOW_UNINSTALL_APPS, false)) {
                    || restrictions.getBoolean(UserManager.DISALLOW_UNINSTALL_APPS, false);
        }
        if (sUninstallDisabled) {
            return false;
            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;
        return getUninstallTarget(context, info) != null;
    }
    }