summaryrefslogtreecommitdiff
path: root/services/accessibility
diff options
context:
space:
mode:
Diffstat (limited to 'services/accessibility')
-rw-r--r--services/accessibility/accessibility.aconfig10
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java19
2 files changed, 28 insertions, 1 deletions
diff --git a/services/accessibility/accessibility.aconfig b/services/accessibility/accessibility.aconfig
index 35db3c6f0a6d..a133131a1d3f 100644
--- a/services/accessibility/accessibility.aconfig
+++ b/services/accessibility/accessibility.aconfig
@@ -223,6 +223,16 @@ flag {
}
flag {
+ name: "manager_lifecycle_user_change"
+ namespace: "accessibility"
+ description: "Use A11yManagerService's Lifecycle to change users, instead of listening for user changed events."
+ bug: "393626471"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "motion_event_injector_cancel_fix"
namespace: "accessibility"
description: "Fix the ACTION_CANCEL logic used in MotionEventInjector to avoid InputDispatcher inconsistency"
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 703e37fad5ad..69ea12d86d47 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -500,6 +500,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
mService = new AccessibilityManagerService(context);
}
+ @VisibleForTesting
+ public Lifecycle(Context context, AccessibilityManagerService service) {
+ super(context);
+ mService = service;
+ }
+
@Override
public void onStart() {
LocalServices.addService(AccessibilityManagerInternal.class,
@@ -511,6 +517,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
public void onBootPhase(int phase) {
mService.onBootPhase(phase);
}
+
+ @Override
+ public void onUserSwitching(@androidx.annotation.Nullable TargetUser from,
+ @androidx.annotation.NonNull TargetUser to) {
+ super.onUserSwitching(from, to);
+ if (Flags.managerLifecycleUserChange()) {
+ mService.switchUser(to.getUserIdentifier());
+ }
+ }
}
private InputManager.KeyGestureEventHandler mKeyGestureEventHandler =
@@ -1055,7 +1070,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
String action = intent.getAction();
if (Intent.ACTION_USER_SWITCHED.equals(action)) {
- switchUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
+ if (!Flags.managerLifecycleUserChange()) {
+ switchUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
+ }
} else if (Intent.ACTION_USER_UNLOCKED.equals(action)) {
unlockUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
} else if (Intent.ACTION_USER_REMOVED.equals(action)) {