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

Commit 131e639c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[AbstractMasterSystemService] hold PackageMonitor object" into main

parents 1bc44b45 d7b425ff
Loading
Loading
Loading
Loading
+198 −191
Original line number Diff line number Diff line
@@ -193,6 +193,8 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
    @Nullable
    private UserManagerInternal mUm;

    private final MyPackageMonitor mPackageMonitor;

    /**
     * Default constructor.
     *
@@ -289,6 +291,7 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
                }
            });
        }
        mPackageMonitor = new MyPackageMonitor(/* supportsPackageRestartQuery */ true);
        startTrackingPackageChanges();
    }

@@ -986,17 +989,20 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
        }
    }

    private void startTrackingPackageChanges() {
        final PackageMonitor monitor = new PackageMonitor(true) {
    private class MyPackageMonitor extends PackageMonitor {
        MyPackageMonitor(boolean supportsPackageRestartQuery) {
            super(supportsPackageRestartQuery);
        }

        @Override
        public void onPackageUpdateStarted(@NonNull String packageName, int uid) {
            if (verbose) Slog.v(mTag, "onPackageUpdateStarted(): " + packageName);
            synchronized (mLock) {
                final String activePackageName = getActiveServicePackageNameLocked();
                if (!packageName.equals(activePackageName)) return;

                final int userId = getChangingUserId();
                synchronized (mLock) {

                if (mUpdatingPackageNames == null) {
                    mUpdatingPackageNames = new SparseArray<String>(mServicesCacheList.size());
                }
@@ -1236,10 +1242,11 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
        private void handlePackageUpdateLocked(String packageName) {
            visitServicesLocked((s) -> s.handlePackageUpdateLocked(packageName));
        }
        };
    }

    private void startTrackingPackageChanges() {
        // package changes
        monitor.register(getContext(), null, UserHandle.ALL, true);
        mPackageMonitor.register(getContext(), null, UserHandle.ALL, true);
    }

    @GuardedBy("mLock")