diff options
author | 2025-03-14 14:57:48 -0700 | |
---|---|---|
committer | 2025-03-14 14:57:48 -0700 | |
commit | 749cf65a3b9e6ebff4c78a13106ab39c0c25ab27 (patch) | |
tree | 3b8a84550474c04ff271ab99be536314cc38f7f4 /services/accessibility | |
parent | c9ed17d4f12540c24840a07eeae11371e2c84a29 (diff) | |
parent | 2dfa5c67b432c1e861fbf3ddd2fdb659080837af (diff) |
Merge "Changing A11yManagerService to respond to user switching from Lifecycle instead of Intents." into main
Diffstat (limited to 'services/accessibility')
-rw-r--r-- | services/accessibility/accessibility.aconfig | 10 | ||||
-rw-r--r-- | services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java | 19 |
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)) { |