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

Commit 50a05454 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Returning to wizard, split move events.

Finish wiring up notifications to jump back into in-progress wizard
flow, using moveId as identifier.

Split move events back into separate creation and progress events,
and pass details as bundle to pass extra stuff like UUID.  Null
package still means moving primary storage.

Add explicit "volume forgotten" event for PackageManager to clean
up internal state with.

Plumb through internal path reported by vold, and bring back FUSE
bypass rewriting optimization.

Bug: 19993667
Change-Id: I0f43edbba36c58c5cd33550022c54c4eb9f01a48
parent 3f9dc836
Loading
Loading
Loading
Loading
+24 −15
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -1561,13 +1562,7 @@ final class ApplicationPackageManager extends PackageManager {
    public @Nullable VolumeInfo getPrimaryStorageCurrentVolume() {
        final StorageManager storage = mContext.getSystemService(StorageManager.class);
        final String volumeUuid = storage.getPrimaryStorageUuid();
        if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, volumeUuid)) {
            return storage.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL);
        } else if (Objects.equals(StorageManager.UUID_PRIMARY_PHYSICAL, volumeUuid)) {
            return storage.getPrimaryPhysicalVolume();
        } else {
            return storage.findVolumeByUuid(volumeUuid);
        }
        return storage.findVolumeByQualifiedUuid(volumeUuid);
    }

    @Override
@@ -2055,7 +2050,8 @@ final class ApplicationPackageManager extends PackageManager {
    /** {@hide} */
    private static class MoveCallbackDelegate extends IPackageMoveObserver.Stub implements
            Handler.Callback {
        private static final int MSG_STATUS_CHANGED = 1;
        private static final int MSG_CREATED = 1;
        private static final int MSG_STATUS_CHANGED = 2;

        final MoveCallback mCallback;
        final Handler mHandler;
@@ -2068,23 +2064,36 @@ final class ApplicationPackageManager extends PackageManager {
        @Override
        public boolean handleMessage(Message msg) {
            switch (msg.what) {
                case MSG_STATUS_CHANGED:
                case MSG_CREATED: {
                    final SomeArgs args = (SomeArgs) msg.obj;
                    mCallback.onCreated(args.argi1, (Bundle) args.arg2);
                    args.recycle();
                    return true;
                }
                case MSG_STATUS_CHANGED: {
                    final SomeArgs args = (SomeArgs) msg.obj;
                    mCallback.onStatusChanged(args.argi1, (String) args.arg2, args.argi3,
                            (long) args.arg4);
                    mCallback.onStatusChanged(args.argi1, args.argi2, (long) args.arg3);
                    args.recycle();
                    return true;
                }
            }
            return false;
        }

        @Override
        public void onStatusChanged(int moveId, String moveTitle, int status, long estMillis) {
        public void onCreated(int moveId, Bundle extras) {
            final SomeArgs args = SomeArgs.obtain();
            args.argi1 = moveId;
            args.arg2 = extras;
            mHandler.obtainMessage(MSG_CREATED, args).sendToTarget();
        }

        @Override
        public void onStatusChanged(int moveId, int status, long estMillis) {
            final SomeArgs args = SomeArgs.obtain();
            args.argi1 = moveId;
            args.arg2 = moveTitle;
            args.argi3 = status;
            args.arg4 = estMillis;
            args.argi2 = status;
            args.arg3 = estMillis;
            mHandler.obtainMessage(MSG_STATUS_CHANGED, args).sendToTarget();
        }
    }
+4 −1
Original line number Diff line number Diff line
@@ -17,10 +17,13 @@

package android.content.pm;

import android.os.Bundle;

/**
 * Callback for moving package resources from the Package Manager.
 * @hide
 */
oneway interface IPackageMoveObserver {
    void onStatusChanged(int moveId, String moveTitle, int status, long estMillis);
    void onCreated(int moveId, in Bundle extras);
    void onStatusChanged(int moveId, int status, long estMillis);
}
+2 −2
Original line number Diff line number Diff line
@@ -4212,8 +4212,8 @@ public abstract class PackageManager {

    /** {@hide} */
    public static abstract class MoveCallback {
        public abstract void onStatusChanged(int moveId, String moveTitle, int status,
                long estMillis);
        public void onCreated(int moveId, Bundle extras) {}
        public abstract void onStatusChanged(int moveId, int status, long estMillis);
    }

    /** {@hide} */
+1 −2
Original line number Diff line number Diff line
@@ -758,7 +758,6 @@ public class Environment {
     * @hide
     */
    public static File maybeTranslateEmulatedPathToInternal(File path) {
        // TODO: bring back this optimization
        return path;
        return StorageManager.maybeTranslateEmulatedPathToInternal(path);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -390,7 +390,7 @@ public class FileUtils {
     * attacks.
     */
    public static boolean contains(File dir, File file) {
        if (file == null) return false;
        if (dir == null || file == null) return false;

        String dirPath = dir.getAbsolutePath();
        String filePath = file.getAbsolutePath();
Loading