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

Commit 70aac122 authored by TYM Tsai's avatar TYM Tsai
Browse files

Explicitly request to support package restart query

Explicitly request to support package restart query for services
that need to handle onHandleForceStop(). That makes PackageMonitor
MUST register the broadcast receiver for ACTION_QUERY_PACKAGE_RESTART.
Currently, the default constructor is the same as the default
constructor with true. All PackageMonitor will register a receiver.
Behavior is not a change in this CL. There will be a follow up CL to
change default behavior to false, then PackageMonitor only registers
a receiver for service that explicitly requests to support package
restart query.

Bug: 300309050
Test: atest FrameworksCorePackageMonitorTests
Change-Id: Iefe04a0ae594722f793422b23db09d12dc4b05f1
parent 1232dc2b
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ public class PackageMonitorTest {

        spyPackageMonitor.register(mMockContext, UserHandle.ALL, mMockHandler);
        assertThat(spyPackageMonitor.getRegisteredHandler()).isEqualTo(mMockHandler);
        verify(mMockContext, times(1)).registerReceiverAsUser(any(), eq(UserHandle.ALL), any(),
        verify(mMockContext, never()).registerReceiverAsUser(any(), eq(UserHandle.ALL), any(),
                eq(null), eq(mMockHandler));

        assertThrows(IllegalStateException.class,
@@ -97,7 +97,7 @@ public class PackageMonitorTest {

    @Test
    public void testPackageMonitorNotRegisterWithoutSupportPackageRestartQuery() throws Exception {
        PackageMonitor spyPackageMonitor = spy(new TestPackageMonitor(false));
        PackageMonitor spyPackageMonitor = spy(new TestPackageMonitor());

        spyPackageMonitor.register(mMockContext, UserHandle.ALL, mMockHandler);

@@ -105,6 +105,16 @@ public class PackageMonitorTest {
                eq(null), eq(mMockHandler));
    }

    @Test
    public void testPackageMonitorRegisterWithSupportPackageRestartQuery() throws Exception {
        PackageMonitor spyPackageMonitor = spy(new TestPackageMonitor(true));

        spyPackageMonitor.register(mMockContext, UserHandle.ALL, mMockHandler);

        verify(mMockContext, times(1)).registerReceiverAsUser(any(), eq(UserHandle.ALL), any(),
                eq(null), eq(mMockHandler));
    }

    @Test
    public void testPackageMonitorDoHandlePackageEventUidRemoved() throws Exception {
        PackageMonitor spyPackageMonitor = spy(new TestPackageMonitor());
@@ -487,7 +497,7 @@ public class PackageMonitorTest {
        }

        public TestPackageMonitor() {
            super();
            super(false);
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -840,7 +840,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
    }

    private void registerBroadcastReceivers() {
        mPackageMonitor = new PackageMonitor() {
        mPackageMonitor = new PackageMonitor(true) {
            @Override
            public void onSomePackagesChanged() {
                if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_PACKAGE_BROADCAST_RECEIVER)) {
+1 −1
Original line number Diff line number Diff line
@@ -986,7 +986,7 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
    }

    private void startTrackingPackageChanges() {
        final PackageMonitor monitor = new PackageMonitor() {
        final PackageMonitor monitor = new PackageMonitor(true) {

            @Override
            public void onPackageUpdateStarted(@NonNull String packageName, int uid) {
+4 −0
Original line number Diff line number Diff line
@@ -920,6 +920,10 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
         */
        private ArrayList<String> mDataClearedPackages = new ArrayList<>();

        private MyPackageMonitor() {
            super(true);
        }

        @GuardedBy("ImfLock.class")
        void clearKnownImePackageNamesLocked() {
            mKnownImePackageNames.clear();
+1 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ public class EnabledComponentsObserver implements SettingChangeListener {
        final EnabledComponentsObserver o = new EnabledComponentsObserver(context, settingName,
                servicePermission, serviceName, lock, listeners);

        PackageMonitor packageMonitor = new PackageMonitor() {
        PackageMonitor packageMonitor = new PackageMonitor(true) {
            @Override
            public void onSomePackagesChanged() {
                o.onPackagesChanged();
Loading