diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java index 7a42351c33c1d..1e3b1944797cd 100644 --- a/services/core/java/com/android/server/wm/AppTransitionController.java +++ b/services/core/java/com/android/server/wm/AppTransitionController.java @@ -844,7 +844,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 dacae173ac5c2..21fe96ba9a16f 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1276,7 +1276,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()); @@ -3539,7 +3539,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)); @@ -5174,7 +5174,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(); @@ -5704,7 +5704,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 73e10069fdd31..8ac32ab693024 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; @@ -1382,6 +1382,7 @@ public class WindowManagerService extends IWindowManager.Stub mStartingSurfaceController = new StartingSurfaceController(this); mBlurController = new BlurController(mContext, mPowerManager); + mAccessibilityController = new AccessibilityController(this); } DisplayAreaPolicy.Provider getDisplayAreaPolicyProvider() { @@ -2161,7 +2162,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()); } @@ -2174,7 +2175,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( @@ -2264,7 +2265,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()); @@ -2586,7 +2587,7 @@ public class WindowManagerService extends IWindowManager.Stub win.mDestroying = true; win.destroySurface(false, stopped); } - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.onWindowTransition(win, transit); } @@ -6376,7 +6377,7 @@ public class WindowManagerService extends IWindowManager.Stub mInputManagerCallback.dump(pw, " "); mTaskSnapshotController.dump(pw, " "); - if (mAccessibilityController != null) { + if (mAccessibilityController.hasCallbacks()) { mAccessibilityController.dump(pw, " "); } @@ -7396,7 +7397,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!"); @@ -7407,7 +7408,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!"); @@ -7418,7 +7419,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!"); @@ -7434,7 +7435,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) { @@ -7453,16 +7454,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); } } @@ -7470,15 +7462,7 @@ public class WindowManagerService extends IWindowManager.Stub public void setWindowsForAccessibilityCallback(int displayId, WindowsForAccessibilityCallback callback) { synchronized (mGlobalLock) { - if (mAccessibilityController == null) { - mAccessibilityController = new AccessibilityController( - WindowManagerService.this); - } - mAccessibilityController.setWindowsForAccessibilityCallback( - displayId, callback); - if (!mAccessibilityController.hasCallbacks()) { - mAccessibilityController = null; - } + mAccessibilityController.setWindowsForAccessibilityCallback(displayId, callback); } } @@ -7651,13 +7635,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 22db2975ef41a..f848c2286e57d 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2212,7 +2212,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); } } @@ -2233,7 +2233,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; @@ -2283,7 +2283,7 @@ class WindowState extends WindowContainer implements WindowManagerP startMoveAnimation(left, top); } - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(getDisplayId()); } updateLocationInParentDisplayIfNeeded(); @@ -2569,7 +2569,7 @@ class WindowState extends WindowContainer implements WindowManagerP setDisplayLayoutNeeded(); mWmService.requestTraversal(); } - if (mWmService.mAccessibilityController != null) { + if (mWmService.mAccessibilityController.hasCallbacks()) { mWmService.mAccessibilityController.onWindowTransition(this, transit); } } @@ -3589,7 +3589,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); } } @@ -3933,7 +3933,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(); @@ -5059,7 +5059,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 f25706a97fb63..81f06d9cbaca0 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -682,7 +682,7 @@ class WindowStateAnimator { applyAnimationLocked(transit, true); } - if (mService.mAccessibilityController != null) { + if (mService.mAccessibilityController.hasCallbacks()) { mService.mAccessibilityController.onWindowTransition(mWin, transit); } }