mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
7f00fd1dde
Signed-off-by: Tavi <tavi@divested.dev>
60 lines
3.3 KiB
Diff
60 lines
3.3 KiB
Diff
From e3979baab5718a69f6d58040ba42f67b4fd73d35 Mon Sep 17 00:00:00 2001
|
|
From: Ameer Armaly <aarmaly@google.com>
|
|
Date: Fri, 8 Mar 2024 19:41:06 +0000
|
|
Subject: [PATCH] [RESTRICT AUTOMERGE] 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:766911c3312573196b33efd1c3c29ccece806846)
|
|
Merged-In: I958d58953b300c8093335a22e207baac471ae9f9
|
|
Change-Id: I958d58953b300c8093335a22e207baac471ae9f9
|
|
---
|
|
.../AccessibilityManagerService.java | 22 +++++++++++++++++++
|
|
1 file changed, 22 insertions(+)
|
|
|
|
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
|
|
index 3818a884c94a..8271aed181c9 100644
|
|
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
|
|
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
|
|
@@ -2161,10 +2161,13 @@ private void updateServicesLocked(AccessibilityUserState userState) {
|
|
boolean isUnlockingOrUnlocked = LocalServices.getService(UserManagerInternal.class)
|
|
.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);
|
|
|
|
@@ -2215,6 +2218,25 @@ this, getTraceManager(), mWindowManagerService,
|
|
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);
|
|
+ }
|
|
+ mTempComponentNameSet.clear();
|
|
updateAccessibilityEnabledSettingLocked(userState);
|
|
}
|
|
|