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

Commit c095ca1c authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Corp badging for Recents"

parents 438d77e0 4f0a49e6
Loading
Loading
Loading
Loading
+15 −2
Original line number Original line Diff line number Diff line
@@ -17,10 +17,12 @@
package com.android.systemui.recent;
package com.android.systemui.recent;


import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.AppGlobals;
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.ActivityInfo;
import android.content.pm.ActivityInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.content.res.Resources;
@@ -30,7 +32,9 @@ import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Handler;
import android.os.Process;
import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
import android.util.Log;
import android.view.MotionEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View;
@@ -162,9 +166,14 @@ public class RecentTasksLoader implements View.OnTouchListener {
            intent.setComponent(origActivity);
            intent.setComponent(origActivity);
        }
        }
        final PackageManager pm = mContext.getPackageManager();
        final PackageManager pm = mContext.getPackageManager();
        final IPackageManager ipm = AppGlobals.getPackageManager();
        intent.setFlags((intent.getFlags()&~Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
        intent.setFlags((intent.getFlags()&~Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
                | Intent.FLAG_ACTIVITY_NEW_TASK);
                | Intent.FLAG_ACTIVITY_NEW_TASK);
        final ResolveInfo resolveInfo = pm.resolveActivity(intent, 0);
        ResolveInfo resolveInfo = null;
        try {
            resolveInfo = ipm.resolveIntent(intent, null, 0, userId);
        } catch (RemoteException re) {
        }
        if (resolveInfo != null) {
        if (resolveInfo != null) {
            final ActivityInfo info = resolveInfo.activityInfo;
            final ActivityInfo info = resolveInfo.activityInfo;
            final String title = info.loadLabel(pm).toString();
            final String title = info.loadLabel(pm).toString();
@@ -192,7 +201,11 @@ public class RecentTasksLoader implements View.OnTouchListener {
        final PackageManager pm = mContext.getPackageManager();
        final PackageManager pm = mContext.getPackageManager();
        Bitmap thumbnail = am.getTaskTopThumbnail(td.persistentTaskId);
        Bitmap thumbnail = am.getTaskTopThumbnail(td.persistentTaskId);
        Drawable icon = getFullResIcon(td.resolveInfo, pm);
        Drawable icon = getFullResIcon(td.resolveInfo, pm);

        if (td.userId != UserHandle.myUserId()) {
            // Need to badge the icon
            final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
            icon = um.getBadgedDrawableForUser(icon, new UserHandle(td.userId));
        }
        if (DEBUG) Log.v(TAG, "Loaded bitmap for task "
        if (DEBUG) Log.v(TAG, "Loaded bitmap for task "
                + td + ": " + thumbnail);
                + td + ": " + thumbnail);
        synchronized (td) {
        synchronized (td) {
+5 −4
Original line number Original line Diff line number Diff line
@@ -192,8 +192,9 @@ class TaskResourceLoader implements Runnable {
                                    " forceLoad: " + forceLoadTask);
                                    " forceLoad: " + forceLoadTask);
                    // Load the application icon
                    // Load the application icon
                    if (loadIcon == null || forceLoadTask) {
                    if (loadIcon == null || forceLoadTask) {
                        ActivityInfo info = ssp.getActivityInfo(t.key.baseIntent.getComponent());
                        ActivityInfo info = ssp.getActivityInfo(t.key.baseIntent.getComponent(),
                        Drawable icon = ssp.getActivityIcon(info);
                                t.userId);
                        Drawable icon = ssp.getActivityIcon(info, t.userId);
                        if (!mCancelled) {
                        if (!mCancelled) {
                            if (icon != null) {
                            if (icon != null) {
                                Console.log(Constants.DebugFlags.App.TaskDataLoader,
                                Console.log(Constants.DebugFlags.App.TaskDataLoader,
@@ -411,7 +412,7 @@ public class RecentsTaskLoader {
        int taskCount = tasks.size();
        int taskCount = tasks.size();
        for (int i = 0; i < taskCount; i++) {
        for (int i = 0; i < taskCount; i++) {
            ActivityManager.RecentTaskInfo t = tasks.get(i);
            ActivityManager.RecentTaskInfo t = tasks.get(i);
            ActivityInfo info = ssp.getActivityInfo(t.baseIntent.getComponent());
            ActivityInfo info = ssp.getActivityInfo(t.baseIntent.getComponent(), t.userId);
            String activityLabel = (t.activityLabel == null ? ssp.getActivityLabel(info) :
            String activityLabel = (t.activityLabel == null ? ssp.getActivityLabel(info) :
                    t.activityLabel.toString());
                    t.activityLabel.toString());
            Bitmap activityIcon = t.activityIcon;
            Bitmap activityIcon = t.activityIcon;
@@ -437,7 +438,7 @@ public class RecentsTaskLoader {
                    }
                    }
                }
                }
                if (task.applicationIcon == null) {
                if (task.applicationIcon == null) {
                    task.applicationIcon = ssp.getActivityIcon(info);
                    task.applicationIcon = ssp.getActivityIcon(info, task.userId);
                    if (task.applicationIcon != null) {
                    if (task.applicationIcon != null) {
                        mApplicationIconCache.put(task.key, task.applicationIcon);
                        mApplicationIconCache.put(task.key, task.applicationIcon);
                    } else {
                    } else {
+30 −9
Original line number Original line Diff line number Diff line
@@ -18,14 +18,19 @@ package com.android.systemui.recents;


import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityOptions;
import android.app.AppGlobals;
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.ActivityInfo;
import android.content.pm.ActivityInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
@@ -38,6 +43,8 @@ import java.util.Random;
public class SystemServicesProxy {
public class SystemServicesProxy {
    ActivityManager mAm;
    ActivityManager mAm;
    PackageManager mPm;
    PackageManager mPm;
    IPackageManager mIpm;
    UserManager mUm;
    String mPackage;
    String mPackage;


    Bitmap mDummyIcon;
    Bitmap mDummyIcon;
@@ -46,6 +53,8 @@ public class SystemServicesProxy {
    public SystemServicesProxy(Context context) {
    public SystemServicesProxy(Context context) {
        mAm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        mAm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        mPm = context.getPackageManager();
        mPm = context.getPackageManager();
        mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
        mIpm = AppGlobals.getPackageManager();
        mPackage = context.getPackageName();
        mPackage = context.getPackageName();


        if (Constants.DebugFlags.App.EnableSystemServicesProxy) {
        if (Constants.DebugFlags.App.EnableSystemServicesProxy) {
@@ -142,14 +151,19 @@ public class SystemServicesProxy {
        mAm.removeTask(taskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
        mAm.removeTask(taskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
    }
    }


    /** Returns the activity info for a given component name */
    /**
    public ActivityInfo getActivityInfo(ComponentName cn) {
     * Returns the activity info for a given component name.
        if (mPm == null) return null;
     * 
     * @param ComponentName The component name of the activity.
     * @param userId The userId of the user that this is for.
     */
    public ActivityInfo getActivityInfo(ComponentName cn, int userId) {
        if (mIpm == null) return null;
        if (Constants.DebugFlags.App.EnableSystemServicesProxy) return null;
        if (Constants.DebugFlags.App.EnableSystemServicesProxy) return null;


        try {
        try {
            return mPm.getActivityInfo(cn, PackageManager.GET_META_DATA);
            return mIpm.getActivityInfo(cn, PackageManager.GET_META_DATA, userId);
        } catch (PackageManager.NameNotFoundException e) {
        } catch (RemoteException e) {
            e.printStackTrace();
            e.printStackTrace();
            return null;
            return null;
        }
        }
@@ -167,15 +181,22 @@ public class SystemServicesProxy {
        return info.loadLabel(mPm).toString();
        return info.loadLabel(mPm).toString();
    }
    }


    /** Returns the activity icon */
    /**
    public Drawable getActivityIcon(ActivityInfo info) {
     * Returns the activity icon for the ActivityInfo for a user, badging if
        if (mPm == null) return null;
     * necessary.
     */
    public Drawable getActivityIcon(ActivityInfo info, int userId) {
        if (mPm == null || mUm == null) return null;


        // If we are mocking, then return a mock label
        // If we are mocking, then return a mock label
        if (Constants.DebugFlags.App.EnableSystemServicesProxy) {
        if (Constants.DebugFlags.App.EnableSystemServicesProxy) {
            return new ColorDrawable(0xFF666666);
            return new ColorDrawable(0xFF666666);
        }
        }


        return info.loadIcon(mPm);
        Drawable icon = info.loadIcon(mPm);
        if (userId != UserHandle.myUserId()) {
            icon = mUm.getBadgedDrawableForUser(icon, new UserHandle(userId));
        }
        return icon;
    }
    }
}
}
+13 −5
Original line number Original line Diff line number Diff line
@@ -37,25 +37,33 @@ public class Task {
    public static class TaskKey {
    public static class TaskKey {
        public final int id;
        public final int id;
        public final Intent baseIntent;
        public final Intent baseIntent;
        public final int userId;


        public TaskKey(int id, Intent intent) {
        public TaskKey(int id, Intent intent, int userId) {
            this.id = id;
            this.id = id;
            this.baseIntent = intent;
            this.baseIntent = intent;
            this.userId = userId;
        }
        }


        @Override
        @Override
        public boolean equals(Object o) {
        public boolean equals(Object o) {
            return hashCode() == o.hashCode();
            if (!(o instanceof TaskKey)) {
                return false;
            }
            return id == ((TaskKey) o).id
                    && userId == ((TaskKey) o).userId;
        }
        }


        @Override
        @Override
        public int hashCode() {
        public int hashCode() {
            return id;
            return (id << 5) + userId;
        }
        }


        @Override
        @Override
        public String toString() {
        public String toString() {
            return "Task.Key: " + id + ", " + baseIntent.getComponent().getPackageName();
            return "Task.Key: " + id + ", "
                    + "u" + userId + ", "
                    + baseIntent.getComponent().getPackageName();
        }
        }
    }
    }


@@ -75,7 +83,7 @@ public class Task {


    public Task(int id, boolean isActive, Intent intent, String activityTitle,
    public Task(int id, boolean isActive, Intent intent, String activityTitle,
                Bitmap activityIcon, int userId) {
                Bitmap activityIcon, int userId) {
        this.key = new TaskKey(id, intent);
        this.key = new TaskKey(id, intent, userId);
        this.activityLabel = activityTitle;
        this.activityLabel = activityTitle;
        this.activityIcon = activityIcon;
        this.activityIcon = activityIcon;
        this.isActive = isActive;
        this.isActive = isActive;