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

Commit 2359314f authored by Suprabh Shukla's avatar Suprabh Shukla
Browse files

Moving recent tasks information to a user directory

The directories recent_tasks and recent_images are moved from
/data/system/ to /data/system/users/<n>/

Bug: b/24569398
Change-Id: I538969d86ebf14fb2d44257be1e6c0a7ff61ed8d
parent 0430f187
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -857,7 +857,7 @@ public class ActivityManager {
            if (mIcon != null) {
                return mIcon;
            }
            return loadTaskDescriptionIcon(mIconFilename);
            return loadTaskDescriptionIcon(mIconFilename, UserHandle.myUserId());
        }

        /** @hide */
@@ -871,11 +871,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) {
                }
            }
+4 −2
Original line number Diff line number Diff line
@@ -2489,7 +2489,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);
@@ -5987,11 +5988,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);
+1 −1
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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);
        }
+13 −6
Original line number Diff line number Diff line
@@ -8732,12 +8732,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