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

Commit 9c68e563 authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Android (Google) Code Review
Browse files

Merge "Export loadNameAndIcon() method out for BatteryDiffEntry reusing." into sc-dev

parents 8d8877b6 8483ea48
Loading
Loading
Loading
Loading
+40 −14
Original line number Diff line number Diff line
@@ -55,13 +55,20 @@ public class BatteryEntry {

    public static final class NameAndIcon {
        public final String name;
        public final String packageName;
        public final Drawable icon;
        public final int iconId;

        public NameAndIcon(String name, Drawable icon, int iconId) {
            this(name, /*packageName=*/ null, icon, iconId);
        }

        public NameAndIcon(
                String name, String packageName, Drawable icon, int iconId) {
            this.name = name;
            this.icon = icon;
            this.iconId = iconId;
            this.packageName = packageName;
        }
    }

@@ -102,7 +109,15 @@ public class BatteryEntry {
                    }
                    be = sRequestQueue.remove(0);
                }
                be.loadNameAndIcon();
                final NameAndIcon nameAndIcon =
                    BatteryEntry.loadNameAndIcon(
                        be.mContext, be.getUid(), sHandler, be, be.mDefaultPackageName);
                if (nameAndIcon != null) {
                    be.icon = getNonNull(be.icon, nameAndIcon.icon);
                    be.name = getNonNull(be.name, nameAndIcon.name);
                    be.mDefaultPackageName = getNonNull(
                        be.mDefaultPackageName, nameAndIcon.packageName);
                }
            }
        }
    }
@@ -262,14 +277,20 @@ public class BatteryEntry {
    /**
     * Loads the app label and icon image and stores into the cache.
     */
    public void loadNameAndIcon() {
    public static NameAndIcon loadNameAndIcon(
            Context context,
            int uid,
            Handler handler,
            BatteryEntry batteryEntry,
            String defaultPackageName) {
        String name = null;
        Drawable icon = null;
        // Bail out if the current sipper is not an App sipper.
        final int uid = getUid();
        if (uid == 0 || uid == Process.INVALID_UID) {
            return;
            return null;
        }

        final PackageManager pm = mContext.getPackageManager();
        final PackageManager pm = context.getPackageManager();
        final String[] packages;
        if (uid == Process.SYSTEM_UID) {
            packages = new String[] {PACKAGE_SYSTEM};
@@ -278,11 +299,11 @@ public class BatteryEntry {
        }

        if (packages != null) {
            String[] packageLabels = new String[packages.length];
            final String[] packageLabels = new String[packages.length];
            System.arraycopy(packages, 0, packageLabels, 0, packages.length);

            // Convert package names to user-facing labels where possible
            IPackageManager ipm = AppGlobals.getPackageManager();
            final IPackageManager ipm = AppGlobals.getPackageManager();
            final int userId = UserHandle.getUserId(uid);
            for (int i = 0; i < packageLabels.length; i++) {
                try {
@@ -293,12 +314,12 @@ public class BatteryEntry {
                                + packageLabels[i] + ", user " + userId);
                        continue;
                    }
                    CharSequence label = ai.loadLabel(pm);
                    final CharSequence label = ai.loadLabel(pm);
                    if (label != null) {
                        packageLabels[i] = label.toString();
                    }
                    if (ai.icon != 0) {
                        mDefaultPackageName = packages[i];
                        defaultPackageName = packages[i];
                        icon = ai.loadIcon(pm);
                        break;
                    }
@@ -326,7 +347,7 @@ public class BatteryEntry {
                            if (nm != null) {
                                name = nm.toString();
                                if (pi.applicationInfo.icon != 0) {
                                    mDefaultPackageName = pkgName;
                                    defaultPackageName = pkgName;
                                    icon = pi.applicationInfo.loadIcon(pm);
                                }
                                break;
@@ -352,12 +373,13 @@ public class BatteryEntry {
        UidToDetail utd = new UidToDetail();
        utd.name = name;
        utd.icon = icon;
        utd.packageName = mDefaultPackageName;
        utd.packageName = defaultPackageName;

        sUidCache.put(uidString, utd);
        if (sHandler != null) {
            sHandler.sendMessage(sHandler.obtainMessage(MSG_UPDATE_NAME_ICON, this));
        if (handler != null) {
            handler.sendMessage(sHandler.obtainMessage(MSG_UPDATE_NAME_ICON, batteryEntry));
        }
        return new NameAndIcon(name, defaultPackageName, icon, /*iconId=*/ 0);
    }

    /**
@@ -557,4 +579,8 @@ public class BatteryEntry {
        }
        return new NameAndIcon(name, null /* icon */, iconId);
    }

    private static <T> T getNonNull(T originalObj, T newObj) {
        return newObj != null ? newObj : originalObj;
    }
}