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

Commit 986d88d7 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Fix issue with apps restored to lower versions." into nyc-mr2-dev

parents c8d66036 fac592f6
Loading
Loading
Loading
Loading
+18 −14
Original line number Diff line number Diff line
@@ -106,27 +106,31 @@ abstract class ShortcutPackageItem {
            }
            return; // Not installed, no need to restore yet.
        }
        boolean blockRestore = false;
        if (!mPackageInfo.hasSignatures()) {
            s.wtf("Attempted to restore package " + mPackageName + ", user=" + mPackageUserId
                    + " but signatures not found in the restore data.");
            onRestoreBlocked();
            return;
            blockRestore = true;
        }

        if (!blockRestore) {
            final PackageInfo pi = s.getPackageInfoWithSignatures(mPackageName, mPackageUserId);
            if (!mPackageInfo.canRestoreTo(s, pi)) {
                // Package is now installed, but can't restore.  Let the subclass do the cleanup.
            onRestoreBlocked();
            return;
                blockRestore = true;
            }
        }
        if (blockRestore) {
            onRestoreBlocked();
        } else {
            if (ShortcutService.DEBUG) {
                Slog.d(TAG, String.format("Restored package: %s/%d on user %d", mPackageName,
                        mPackageUserId, getOwnerUserId()));
            }

            onRestored();
        }

        // Now the package is not shadow.
        // Either way, it's no longer a shadow.
        mPackageInfo.setShadow(false);

        s.scheduleSaveUser(mPackageUserId);
+10 −0
Original line number Diff line number Diff line
@@ -3739,6 +3739,16 @@ public class ShortcutService extends IShortcutService.Stub {
        }
    }

    @VisibleForTesting
    ShortcutLauncher getLauncherShortcutForTest(String packageName, int userId) {
        synchronized (mLock) {
            final ShortcutUser user = mUsers.get(userId);
            if (user == null) return null;

            return user.getAllLaunchersForTest().get(PackageWithUser.of(userId, packageName));
        }
    }

    /**
     * Control whether {@link #verifyStates} should be performed.  We always perform it during unit
     * tests.
+9 −0
Original line number Diff line number Diff line
@@ -4938,6 +4938,9 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
            assertEquals(0, mManager.getDynamicShortcuts().size());
            assertEquals(0, mManager.getPinnedShortcuts().size());
        });
        assertFalse(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, USER_0)
                .getPackageInfo().isShadow());


        installPackage(USER_0, CALLING_PACKAGE_2);
        runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
@@ -4946,6 +4949,8 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
                    mManager.getPinnedShortcuts()),
                    "s1", "s2", "s3");
        });
        assertFalse(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, USER_0)
                .getPackageInfo().isShadow());

        installPackage(USER_0, LAUNCHER_1);
        runWithCaller(LAUNCHER_1, USER_0, () -> {
@@ -5069,6 +5074,8 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
                    /* empty */);
        });
        assertFalse(mService.getLauncherShortcutForTest(LAUNCHER_1, USER_0)
                .getPackageInfo().isShadow());

        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
            assertEquals(0, mManager.getDynamicShortcuts().size());
@@ -5091,6 +5098,8 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest {
                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
                    /* empty */);
        });
        assertFalse(mService.getLauncherShortcutForTest(LAUNCHER_2, USER_0)
                .getPackageInfo().isShadow());

        installPackage(USER_0, CALLING_PACKAGE_3);
        runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {