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

Commit 2152ed92 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Allow the Instant App installer to be dynamic"

parents 3802a2b5 749b26ab
Loading
Loading
Loading
Loading
+25 −9
Original line number Diff line number Diff line
@@ -2879,24 +2879,17 @@ public class PackageManagerService extends IPackageManager.Stub {
            }
            mInstallerService = new PackageInstallerService(context, this);
            final ComponentName ephemeralResolverComponent = getEphemeralResolverLPr();
            if (ephemeralResolverComponent != null) {
                if (DEBUG_EPHEMERAL) {
                    Slog.i(TAG, "Ephemeral resolver: " + ephemeralResolverComponent);
                    Slog.d(TAG, "Set ephemeral resolver: " + ephemeralResolverComponent);
                }
                mInstantAppResolverConnection =
                        new EphemeralResolverConnection(mContext, ephemeralResolverComponent);
            } else {
                mInstantAppResolverConnection = null;
            }
            mInstantAppInstallerComponent = getEphemeralInstallerLPr();
            if (mInstantAppInstallerComponent != null) {
                if (DEBUG_EPHEMERAL) {
                    Slog.i(TAG, "Ephemeral installer: " + mInstantAppInstallerComponent);
                }
                setUpInstantAppInstallerActivityLP(mInstantAppInstallerComponent);
            }
            updateInstantAppInstallerLocked();
            // Read and update the usage of dex files.
            // Do this at the end of PM init so that all the packages have their
@@ -2936,6 +2929,21 @@ public class PackageManagerService extends IPackageManager.Stub {
        Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
    }
    private void updateInstantAppInstallerLocked() {
        final ComponentName oldInstantAppInstallerComponent = mInstantAppInstallerComponent;
        final ComponentName newInstantAppInstallerComponent = getEphemeralInstallerLPr();
        if (newInstantAppInstallerComponent != null
                && !newInstantAppInstallerComponent.equals(oldInstantAppInstallerComponent)) {
            if (DEBUG_EPHEMERAL) {
                Slog.d(TAG, "Set ephemeral installer: " + newInstantAppInstallerComponent);
            }
            setUpInstantAppInstallerActivityLP(newInstantAppInstallerComponent);
        } else if (DEBUG_EPHEMERAL && newInstantAppInstallerComponent == null) {
            Slog.d(TAG, "Unset ephemeral installer; none available");
        }
        mInstantAppInstallerComponent = newInstantAppInstallerComponent;
    }
    private static File preparePackageParserCache(boolean isUpgrade) {
        if (!DEFAULT_PACKAGE_PARSER_CACHE_ENABLED) {
            return null;
@@ -16928,6 +16936,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) {
                updateSequenceNumberLP(pkgName, res.newUsers);
                updateInstantAppInstallerLocked();
            }
        }
    }
@@ -17503,6 +17512,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                        mInstantAppRegistry.onPackageUninstalledLPw(pkg, info.removedUsers);
                    }
                    updateSequenceNumberLP(packageName, info.removedUsers);
                    updateInstantAppInstallerLocked();
                }
            }
        }
@@ -19848,6 +19858,12 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
            }
            scheduleWritePackageRestrictionsLocked(userId);
            updateSequenceNumberLP(packageName, new int[] { userId });
            final long callingId = Binder.clearCallingIdentity();
            try {
                updateInstantAppInstallerLocked();
            } finally {
                Binder.restoreCallingIdentity(callingId);
            }
            components = mPendingBroadcasts.get(userId, packageName);
            final boolean newPackage = components == null;
            if (newPackage) {