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

Commit 85942c2b authored by Todd Kennedy's avatar Todd Kennedy
Browse files

Allow the Instant App installer to be dynamic

Change-Id: I4f8e341dd3cb993099cdcf170141aef37a62604b
Fixes: 33072933
Test: add/remove/update the instant app installer and see that it changes dynamically
parent 95502300
Loading
Loading
Loading
Loading
+20 −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;
@@ -16918,6 +16926,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) {
                updateSequenceNumberLP(pkgName, res.newUsers);
                updateInstantAppInstallerLocked();
            }
        }
    }
@@ -17493,6 +17502,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                        mInstantAppRegistry.onPackageUninstalledLPw(pkg, info.removedUsers);
                    }
                    updateSequenceNumberLP(packageName, info.removedUsers);
                    updateInstantAppInstallerLocked();
                }
            }
        }
@@ -19838,6 +19848,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
            }
            scheduleWritePackageRestrictionsLocked(userId);
            updateSequenceNumberLP(packageName, new int[] { userId });
            updateInstantAppInstallerLocked();
            components = mPendingBroadcasts.get(userId, packageName);
            final boolean newPackage = components == null;
            if (newPackage) {