summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TYM Tsai <tymtsai@google.com> 2024-04-22 11:37:03 +0800
committer TYM Tsai <tymtsai@google.com> 2024-05-02 00:39:47 +0000
commit70aac12203dba7a37a3254ed79b29f2c4ac8ba40 (patch)
tree1e44c746aed947068b4627fd833b39a5576af148
parent1232dc2bd8980192ffb9d40b03c1a71fb0531d02 (diff)
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
-rw-r--r--core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java16
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java2
-rw-r--r--services/core/java/com/android/server/infra/AbstractMasterSystemService.java2
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java4
-rw-r--r--services/core/java/com/android/server/vr/EnabledComponentsObserver.java2
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java4
-rw-r--r--services/print/java/com/android/server/print/PrintManagerService.java2
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java3
8 files changed, 27 insertions, 8 deletions
diff --git a/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java b/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java
index 03cb17e9087f..1d91af57ca56 100644
--- a/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java
+++ b/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java
@@ -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);
@@ -106,6 +106,16 @@ public class PackageMonitorTest {
}
@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);
}
}
}
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 0811c872d2eb..56d2eebd72b1 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -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)) {
diff --git a/services/core/java/com/android/server/infra/AbstractMasterSystemService.java b/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
index ef52d2a85959..e28939bc1fbd 100644
--- a/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
+++ b/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
@@ -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) {
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index c6a48ec9018e..16f4795e052a 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -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();
diff --git a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
index 7126cb51b57f..7c2ce6467122 100644
--- a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
+++ b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
@@ -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();
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 885baf65013f..5d7a0cfc6d60 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -1317,6 +1317,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
}
class MyPackageMonitor extends PackageMonitor {
+ private MyPackageMonitor() {
+ super(true);
+ }
+
@Override
public void onPackageUpdateFinished(String packageName, int uid) {
synchronized (mLock) {
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
index 4a8d73d23904..07cda375e1d3 100644
--- a/services/print/java/com/android/server/print/PrintManagerService.java
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -875,7 +875,7 @@ public final class PrintManagerService extends SystemService {
}
private void registerBroadcastReceivers() {
- PackageMonitor monitor = new PackageMonitor() {
+ PackageMonitor monitor = new PackageMonitor(true) {
/**
* Checks if the package contains a print service.
*
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index ae4faa84421e..2e8c4f3fa233 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -2536,7 +2536,8 @@ public class VoiceInteractionManagerService extends SystemService {
}
}
- PackageMonitor mPackageMonitor = new PackageMonitor() {
+ PackageMonitor mPackageMonitor = new PackageMonitor(
+ /* supportsPackageRestartQuery= */ true) {
@Override
public boolean onHandleForceStop(Intent intent, String[] packages, int uid,