diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java index 0e04c426ce1e2..ffaf710523eeb 100644 --- a/services/core/java/com/android/server/wm/AppTransitionController.java +++ b/services/core/java/com/android/server/wm/AppTransitionController.java @@ -904,7 +904,7 @@ public class AppTransitionController { final AccessibilityController accessibilityController = mDisplayContent.mWmService.mAccessibilityController; - if (accessibilityController != null) { + if (accessibilityController.hasCallbacks()) { accessibilityController.onAppWindowTransition(mDisplayContent.getDisplayId(), transit); } } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 87e5c94784ca5..5f03f89624876 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1284,7 +1284,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp addWindowToken(token.token, token); - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { final int prevDisplayId = prevDc != null ? prevDc.getDisplayId() : INVALID_DISPLAY; mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(prevDisplayId, getDisplayId()); @@ -3569,7 +3569,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // focused one starts firing events. // TODO(b/151179149) investigate what info accessibility service needs before input can // dispatch focus to clients. - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mH.sendMessage(PooledLambda.obtainMessage( this::updateAccessibilityOnWindowFocusChanged, mWmService.mAccessibilityController)); @@ -5216,7 +5216,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } if (!mLocationInParentWindow.equals(x, y)) { mLocationInParentWindow.set(x, y); - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(mDisplayId); } notifyLocationInParentDisplayChanged(); @@ -5774,7 +5774,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp @Override void onResize() { super.onResize(); - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onDisplaySizeChanged(this); } } diff --git a/services/core/java/com/android/server/wm/DockedTaskDividerController.java b/services/core/java/com/android/server/wm/DockedTaskDividerController.java index fb9d06441536a..925a6d858a3d0 100644 --- a/services/core/java/com/android/server/wm/DockedTaskDividerController.java +++ b/services/core/java/com/android/server/wm/DockedTaskDividerController.java @@ -46,7 +46,7 @@ public class DockedTaskDividerController { void setTouchRegion(Rect touchRegion) { mTouchRegion.set(touchRegion); // We need to report touchable region changes to accessibility. - if (mDisplayContent.mWmService.mAccessibilityController != null) { + if (mDisplayContent.mWmService.mAccessibilityController.hasCallbacks()) { mDisplayContent.mWmService.mAccessibilityController.onSomeWindowResizedOrMoved( mDisplayContent.getDisplayId()); } diff --git a/services/core/java/com/android/server/wm/ShellRoot.java b/services/core/java/com/android/server/wm/ShellRoot.java index be6a5d2fe27ba..6ed59e96c7002 100644 --- a/services/core/java/com/android/server/wm/ShellRoot.java +++ b/services/core/java/com/android/server/wm/ShellRoot.java @@ -197,7 +197,7 @@ public class ShellRoot { mAccessibilityWindow = null; } } - if (mDisplayContent.mWmService.mAccessibilityController != null) { + if (mDisplayContent.mWmService.mAccessibilityController.hasCallbacks()) { mDisplayContent.mWmService.mAccessibilityController.onSomeWindowResizedOrMoved( mDisplayContent.getDisplayId()); } diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index eb32486d6023c..4a43f4f73edaf 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -164,7 +164,7 @@ public class WindowAnimator { final DisplayContent dc = root.getDisplayContent(displayId); dc.checkAppWindowsReadyToShow(); - if (accessibilityController != null) { + if (accessibilityController.hasCallbacks()) { accessibilityController.drawMagnifiedRegionBorderIfNeeded(displayId, mTransaction); } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index c77cd509ca4f5..4cf8c97eb1326 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -636,7 +636,7 @@ public class WindowManagerService extends IWindowManager.Stub /** List of window currently causing non-system overlay windows to be hidden. */ private ArrayList mHidingNonSystemOverlayWindows = new ArrayList<>(); - AccessibilityController mAccessibilityController; + final AccessibilityController mAccessibilityController; private RecentsAnimationController mRecentsAnimationController; Watermark mWatermark; @@ -1387,6 +1387,7 @@ public class WindowManagerService extends IWindowManager.Stub mStartingSurfaceController = new StartingSurfaceController(this); mBlurController = new BlurController(mContext, mPowerManager); + mAccessibilityController = new AccessibilityController(this); } DisplayAreaPolicy.Provider getDisplayAreaPolicyProvider() { @@ -2164,7 +2165,7 @@ public class WindowManagerService extends IWindowManager.Stub mWindowPlacerLocked.performSurfacePlacement(); // We need to report touchable region changes to accessibility. - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.onSomeWindowResizedOrMovedWithCallingUid( uid, w.getDisplayContent().getDisplayId()); } @@ -2177,7 +2178,7 @@ public class WindowManagerService extends IWindowManager.Stub public void onRectangleOnScreenRequested(IBinder token, Rect rectangle) { synchronized (mGlobalLock) { - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { WindowState window = mWindowMap.get(token); if (window != null) { mAccessibilityController.onRectangleOnScreenRequested( @@ -2267,7 +2268,7 @@ public class WindowManagerService extends IWindowManager.Stub win.mActivityRecord.checkKeyguardFlagsChanged(); } if (((attrChanges & LayoutParams.ACCESSIBILITY_TITLE_CHANGED) != 0) - && (mAccessibilityController != null)) { + && (mAccessibilityController.hasCallbacks())) { // No move or resize, but the controller checks for title changes as well mAccessibilityController.onSomeWindowResizedOrMovedWithCallingUid( uid, win.getDisplayContent().getDisplayId()); @@ -2594,7 +2595,7 @@ public class WindowManagerService extends IWindowManager.Stub win.mDestroying = true; win.destroySurface(false, stopped); } - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.onWindowTransition(win, transit); } @@ -6423,7 +6424,7 @@ public class WindowManagerService extends IWindowManager.Stub mInputManagerCallback.dump(pw, " "); mTaskSnapshotController.dump(pw, " "); - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.dump(pw, " "); } @@ -7443,7 +7444,7 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void setMagnificationSpec(int displayId, MagnificationSpec spec) { synchronized (mGlobalLock) { - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.setMagnificationSpec(displayId, spec); } else { throw new IllegalStateException("Magnification callbacks not set!"); @@ -7454,7 +7455,7 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void setForceShowMagnifiableBounds(int displayId, boolean show) { synchronized (mGlobalLock) { - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.setForceShowMagnifiableBounds(displayId, show); } else { throw new IllegalStateException("Magnification callbacks not set!"); @@ -7465,7 +7466,7 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void getMagnificationRegion(int displayId, @NonNull Region magnificationRegion) { synchronized (mGlobalLock) { - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.getMagnificationRegion(displayId, magnificationRegion); } else { throw new IllegalStateException("Magnification callbacks not set!"); @@ -7481,7 +7482,7 @@ public class WindowManagerService extends IWindowManager.Stub return null; } MagnificationSpec spec = null; - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { spec = mAccessibilityController.getMagnificationSpecForWindow(windowState); } if ((spec == null || spec.isNop()) && windowState.mGlobalScale == 1.0f) { @@ -7500,16 +7501,7 @@ public class WindowManagerService extends IWindowManager.Stub public boolean setMagnificationCallbacks(int displayId, @Nullable MagnificationCallbacks callbacks) { synchronized (mGlobalLock) { - if (mAccessibilityController == null) { - mAccessibilityController = new AccessibilityController( - WindowManagerService.this); - } - boolean result = mAccessibilityController.setMagnificationCallbacks( - displayId, callbacks); - if (!mAccessibilityController.hasCallbacks()) { - mAccessibilityController = null; - } - return result; + return mAccessibilityController.setMagnificationCallbacks(displayId, callbacks); } } @@ -7517,17 +7509,8 @@ public class WindowManagerService extends IWindowManager.Stub public boolean setWindowsForAccessibilityCallback(int displayId, WindowsForAccessibilityCallback callback) { synchronized (mGlobalLock) { - if (mAccessibilityController == null) { - mAccessibilityController = new AccessibilityController( - WindowManagerService.this); - } - final boolean result = - mAccessibilityController.setWindowsForAccessibilityCallback( - displayId, callback); - if (!mAccessibilityController.hasCallbacks()) { - mAccessibilityController = null; - } - return result; + return mAccessibilityController + .setWindowsForAccessibilityCallback(displayId, callback); } } @@ -7700,13 +7683,7 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void computeWindowsForAccessibility(int displayId) { - final AccessibilityController accessibilityController; - synchronized (mGlobalLock) { - accessibilityController = mAccessibilityController; - } - if (accessibilityController != null) { - accessibilityController.performComputeChangedWindowsNot(displayId, true); - } + mAccessibilityController.performComputeChangedWindowsNot(displayId, true); } @Override diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 5f9d4f5182bc4..6afa2e0f690dd 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2216,7 +2216,7 @@ class WindowState extends WindowContainer implements WindowManagerP mWmService.mAccessibilityController; final int winTransit = TRANSIT_EXIT; mWinAnimator.applyAnimationLocked(winTransit, false /* isEntrance */); - if (accessibilityController != null) { + if (accessibilityController.hasCallbacks()) { accessibilityController.onWindowTransition(this, winTransit); } } @@ -2237,7 +2237,7 @@ class WindowState extends WindowContainer implements WindowManagerP } if (isVisibleNow() && animateExit) { mWinAnimator.applyAnimationLocked(TRANSIT_EXIT, false); - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onWindowTransition(this, TRANSIT_EXIT); } changed = true; @@ -2287,7 +2287,7 @@ class WindowState extends WindowContainer implements WindowManagerP startMoveAnimation(left, top); } - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(getDisplayId()); } updateLocationInParentDisplayIfNeeded(); @@ -2573,7 +2573,7 @@ class WindowState extends WindowContainer implements WindowManagerP setDisplayLayoutNeeded(); mWmService.requestTraversal(); } - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onWindowTransition(this, transit); } } @@ -3598,7 +3598,7 @@ class WindowState extends WindowContainer implements WindowManagerP if (mAttrs.type >= FIRST_SYSTEM_WINDOW && mAttrs.type != TYPE_TOAST) { mWmService.mAtmService.mActiveUids.onNonAppSurfaceVisibilityChanged(mOwnerUid, shown); } - if (mIsImWindow && mWmService.mAccessibilityController != null) { + if (mIsImWindow && mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onImeSurfaceShownChanged(this, shown); } } @@ -3942,7 +3942,7 @@ class WindowState extends WindowContainer implements WindowManagerP "Requested redraw for orientation change: %s", this); } - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(displayId); } updateLocationInParentDisplayIfNeeded(); @@ -5068,7 +5068,7 @@ class WindowState extends WindowContainer implements WindowManagerP if (isAnimating()) { return; } - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(getDisplayId()); } diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index d4d897177cb4e..423b3a05565ed 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -677,7 +677,7 @@ class WindowStateAnimator { applyAnimationLocked(transit, true); } - if (mService.mAccessibilityController != null) { + if (mService.mAccessibilityController.hasCallbacks()) { mService.mAccessibilityController.onWindowTransition(mWin, transit); } }