summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ameer Armaly <aarmaly@google.com> 2024-03-12 13:45:37 +0000
committer Cherrypicker Worker <android-build-cherrypicker-worker@google.com> 2024-05-10 15:50:44 +0000
commitc3fd0241d8cd7c9547fa23ef7420597ef49be26f (patch)
treea916096cc2bf7d4657b195713d5d80304c336eb9
parentd95fc06747f85fe158d7bd57e0c63581fb4ee437 (diff)
AccessibilityManagerService: remove uninstalled services from enabled list after service update.
Bug: 326485767 Test: atest AccessibilityEndToEndTest#testUpdateServiceWithoutIntent_disablesService (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:74ab528e54558b5a78a9b0f32a2e3f0a61714ae5) Merged-In: I2d986dc8f09a3cf2f31713237e69e15dcef84514 Change-Id: I2d986dc8f09a3cf2f31713237e69e15dcef84514 24D1-dev is based on 24Q2-release. Therefore, we merged this CL to 24D1-dev.
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index fe99ffd8a649..a7a7f4e1d79b 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -2649,10 +2649,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
userState.mComponentNameToServiceMap;
boolean isUnlockingOrUnlocked = mUmi.isUserUnlockingOrUnlocked(userState.mUserId);
+ // Store the list of installed services.
+ mTempComponentNameSet.clear();
for (int i = 0, count = userState.mInstalledServices.size(); i < count; i++) {
AccessibilityServiceInfo installedService = userState.mInstalledServices.get(i);
ComponentName componentName = ComponentName.unflattenFromString(
installedService.getId());
+ mTempComponentNameSet.add(componentName);
AccessibilityServiceConnection service = componentNameToServiceMap.get(componentName);
@@ -2712,6 +2715,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
audioManager.setAccessibilityServiceUids(mTempIntArray);
}
mActivityTaskManagerService.setAccessibilityServiceUids(mTempIntArray);
+
+ // If any services have been removed, remove them from the enabled list and the touch
+ // exploration granted list.
+ boolean anyServiceRemoved =
+ userState.mEnabledServices.removeIf((comp) -> !mTempComponentNameSet.contains(comp))
+ || userState.mTouchExplorationGrantedServices.removeIf(
+ (comp) -> !mTempComponentNameSet.contains(comp));
+ if (anyServiceRemoved) {
+ // Update the enabled services setting.
+ persistComponentNamesToSettingLocked(
+ Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+ userState.mEnabledServices,
+ userState.mUserId);
+ // Update the touch exploration granted services setting.
+ persistComponentNamesToSettingLocked(
+ Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+ userState.mTouchExplorationGrantedServices,
+ userState.mUserId);
+ }
updateAccessibilityEnabledSettingLocked(userState);
}