Loading core/java/android/app/ActivityManager.java +3 −3 Original line number Diff line number Diff line Loading @@ -884,7 +884,7 @@ public class ActivityManager { if (mIcon != null) { return mIcon; } return loadTaskDescriptionIcon(mIconFilename); return loadTaskDescriptionIcon(mIconFilename, UserHandle.myUserId()); } /** @hide */ Loading @@ -898,11 +898,11 @@ public class ActivityManager { } /** @hide */ public static Bitmap loadTaskDescriptionIcon(String iconFilename) { public static Bitmap loadTaskDescriptionIcon(String iconFilename, int userId) { if (iconFilename != null) { try { return ActivityManagerNative.getDefault(). getTaskDescriptionIcon(iconFilename); getTaskDescriptionIcon(iconFilename, userId); } catch (RemoteException e) { } } Loading core/java/android/app/ActivityManagerNative.java +4 −2 Original line number Diff line number Diff line Loading @@ -2490,7 +2490,8 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); String filename = data.readString(); Bitmap icon = getTaskDescriptionIcon(filename); int userId = data.readInt(); Bitmap icon = getTaskDescriptionIcon(filename, userId); reply.writeNoException(); if (icon == null) { reply.writeInt(0); Loading Loading @@ -5998,11 +5999,12 @@ class ActivityManagerProxy implements IActivityManager } @Override public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException { public Bitmap getTaskDescriptionIcon(String filename, int userId) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeString(filename); data.writeInt(userId); mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); reply.readException(); final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); Loading core/java/android/app/IActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -497,7 +497,7 @@ public interface IActivityManager extends IInterface { public void resizeTask(int taskId, Rect bounds, int resizeMode) throws RemoteException; public Rect getTaskBounds(int taskId) throws RemoteException; public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException; public Bitmap getTaskDescriptionIcon(String filename, int userId) throws RemoteException; public void startInPlaceAnimationOnFrontMostApplication(ActivityOptions opts) throws RemoteException; Loading packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java +2 −1 Original line number Diff line number Diff line Loading @@ -239,7 +239,8 @@ class BackgroundTaskLoader implements Runnable { SystemServicesProxy ssp, Resources res) { Bitmap tdIcon = iconBitmap != null ? iconBitmap : ActivityManager.TaskDescription.loadTaskDescriptionIcon(iconFilename); : ActivityManager.TaskDescription.loadTaskDescriptionIcon(iconFilename, taskKey.userId); if (tdIcon != null) { return ssp.getBadgedIcon(new BitmapDrawable(res, tdIcon), taskKey.userId); } Loading services/core/java/com/android/server/am/ActivityManagerService.java +13 −6 Original line number Diff line number Diff line Loading @@ -8827,12 +8827,19 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override public Bitmap getTaskDescriptionIcon(String filename) { if (!FileUtils.isValidExtFilename(filename) || !filename.contains(ActivityRecord.ACTIVITY_ICON_SUFFIX)) { throw new IllegalArgumentException("Bad filename: " + filename); } return mTaskPersister.getTaskDescriptionIcon(filename); public Bitmap getTaskDescriptionIcon(String filePath, int userId) { if (userId != UserHandle.getCallingUserId()) { enforceCallingPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, "getTaskDescriptionIcon"); } final File passedIconFile = new File(filePath); final File legitIconFile = new File(TaskPersister.getUserImagesDir(userId), passedIconFile.getName()); if (!legitIconFile.getPath().equals(filePath) || !filePath.contains(ActivityRecord.ACTIVITY_ICON_SUFFIX)) { throw new IllegalArgumentException("Bad file path: " + filePath); } return mTaskPersister.getTaskDescriptionIcon(filePath); } @Override Loading Loading
core/java/android/app/ActivityManager.java +3 −3 Original line number Diff line number Diff line Loading @@ -884,7 +884,7 @@ public class ActivityManager { if (mIcon != null) { return mIcon; } return loadTaskDescriptionIcon(mIconFilename); return loadTaskDescriptionIcon(mIconFilename, UserHandle.myUserId()); } /** @hide */ Loading @@ -898,11 +898,11 @@ public class ActivityManager { } /** @hide */ public static Bitmap loadTaskDescriptionIcon(String iconFilename) { public static Bitmap loadTaskDescriptionIcon(String iconFilename, int userId) { if (iconFilename != null) { try { return ActivityManagerNative.getDefault(). getTaskDescriptionIcon(iconFilename); getTaskDescriptionIcon(iconFilename, userId); } catch (RemoteException e) { } } Loading
core/java/android/app/ActivityManagerNative.java +4 −2 Original line number Diff line number Diff line Loading @@ -2490,7 +2490,8 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); String filename = data.readString(); Bitmap icon = getTaskDescriptionIcon(filename); int userId = data.readInt(); Bitmap icon = getTaskDescriptionIcon(filename, userId); reply.writeNoException(); if (icon == null) { reply.writeInt(0); Loading Loading @@ -5998,11 +5999,12 @@ class ActivityManagerProxy implements IActivityManager } @Override public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException { public Bitmap getTaskDescriptionIcon(String filename, int userId) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeString(filename); data.writeInt(userId); mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); reply.readException(); final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); Loading
core/java/android/app/IActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -497,7 +497,7 @@ public interface IActivityManager extends IInterface { public void resizeTask(int taskId, Rect bounds, int resizeMode) throws RemoteException; public Rect getTaskBounds(int taskId) throws RemoteException; public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException; public Bitmap getTaskDescriptionIcon(String filename, int userId) throws RemoteException; public void startInPlaceAnimationOnFrontMostApplication(ActivityOptions opts) throws RemoteException; Loading
packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoader.java +2 −1 Original line number Diff line number Diff line Loading @@ -239,7 +239,8 @@ class BackgroundTaskLoader implements Runnable { SystemServicesProxy ssp, Resources res) { Bitmap tdIcon = iconBitmap != null ? iconBitmap : ActivityManager.TaskDescription.loadTaskDescriptionIcon(iconFilename); : ActivityManager.TaskDescription.loadTaskDescriptionIcon(iconFilename, taskKey.userId); if (tdIcon != null) { return ssp.getBadgedIcon(new BitmapDrawable(res, tdIcon), taskKey.userId); } Loading
services/core/java/com/android/server/am/ActivityManagerService.java +13 −6 Original line number Diff line number Diff line Loading @@ -8827,12 +8827,19 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override public Bitmap getTaskDescriptionIcon(String filename) { if (!FileUtils.isValidExtFilename(filename) || !filename.contains(ActivityRecord.ACTIVITY_ICON_SUFFIX)) { throw new IllegalArgumentException("Bad filename: " + filename); } return mTaskPersister.getTaskDescriptionIcon(filename); public Bitmap getTaskDescriptionIcon(String filePath, int userId) { if (userId != UserHandle.getCallingUserId()) { enforceCallingPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, "getTaskDescriptionIcon"); } final File passedIconFile = new File(filePath); final File legitIconFile = new File(TaskPersister.getUserImagesDir(userId), passedIconFile.getName()); if (!legitIconFile.getPath().equals(filePath) || !filePath.contains(ActivityRecord.ACTIVITY_ICON_SUFFIX)) { throw new IllegalArgumentException("Bad file path: " + filePath); } return mTaskPersister.getTaskDescriptionIcon(filePath); } @Override Loading