diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index b496ba1233a4a..6af76b8718ec5 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1757,6 +1757,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub AccessibilityServiceConnection service = state.mBoundServices.get(i); service.notifyClearAccessibilityNodeInfoCache(); } + + mProxyManager.clearCacheLocked(); } private void notifyMagnificationChangedLocked(int displayId, @NonNull Region region, @@ -3700,6 +3702,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mProxyManager.registerProxy(client, displayId, mContext, sIdCounter++, mMainHandler, mSecurityPolicy, this, getTraceManager(), mWindowManagerService, mA11yWindowManager); + + synchronized (mLock) { + notifyClearAccessibilityCacheLocked(); + } return true; } diff --git a/services/accessibility/java/com/android/server/accessibility/ProxyManager.java b/services/accessibility/java/com/android/server/accessibility/ProxyManager.java index 85273586e5dcb..fcbdc4e19fe57 100644 --- a/services/accessibility/java/com/android/server/accessibility/ProxyManager.java +++ b/services/accessibility/java/com/android/server/accessibility/ProxyManager.java @@ -235,4 +235,15 @@ public class ProxyManager { } } } + + /** + * Clears all proxy caches. + */ + public void clearCacheLocked() { + for (int i = 0; i < mProxyA11yServiceConnections.size(); i++) { + final ProxyAccessibilityServiceConnection proxy = + mProxyA11yServiceConnections.valueAt(i); + proxy.notifyClearAccessibilityNodeInfoCache(); + } + } } \ No newline at end of file