Register xml parsing receiver on background thread
One of a11yManagerService's receivers performs xml parsing.
Since this can take a while, the receiver should be registered on the background thread.
Test: atest AccessibilityManagerServiceTest (you'll need to verify via printing or breakpoints that the receiver is on the right thread)
Flag: aconfig manager_avoid_receiver_timeout
Bug: 333890389
Change-Id: I1ee6617fe1a4471d251c7a6d4c52b82a788776b1
diff --git a/services/accessibility/accessibility.aconfig b/services/accessibility/accessibility.aconfig
index 1ba47e4..82579d8 100644
--- a/services/accessibility/accessibility.aconfig
+++ b/services/accessibility/accessibility.aconfig
@@ -128,6 +128,16 @@
}
flag {
+ name: "manager_avoid_receiver_timeout"
+ namespace: "accessibility"
+ description: "Register receivers on background handler so they have more time to complete"
+ bug: "333890389"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "pinch_zoom_zero_min_span"
namespace: "accessibility"
description: "Whether to set min span of ScaleGestureDetector to zero."
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 726a01c..c70b641 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -986,6 +986,8 @@
intentFilter.addAction(Intent.ACTION_USER_REMOVED);
intentFilter.addAction(Intent.ACTION_SETTING_RESTORED);
+ Handler receiverHandler =
+ Flags.managerAvoidReceiverTimeout() ? BackgroundThread.getHandler() : null;
mContext.registerReceiverAsUser(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -1033,7 +1035,7 @@
}
}
}
- }, UserHandle.ALL, intentFilter, null, null);
+ }, UserHandle.ALL, intentFilter, null, receiverHandler);
final IntentFilter filter = new IntentFilter();
filter.addAction(SafetyCenterManager.ACTION_SAFETY_CENTER_ENABLED_CHANGED);