Merge "WM: Make AccessibilityController persistent" into sc-v2-dev

This commit is contained in:
TreeHugger Robot
2021-10-06 04:45:25 +00:00
committed by Android (Google) Code Review
8 changed files with 31 additions and 54 deletions

View File

@@ -904,7 +904,7 @@ public class AppTransitionController {
final AccessibilityController accessibilityController =
mDisplayContent.mWmService.mAccessibilityController;
if (accessibilityController != null) {
if (accessibilityController.hasCallbacks()) {
accessibilityController.onAppWindowTransition(mDisplayContent.getDisplayId(), transit);
}
}

View File

@@ -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);
}
}

View File

@@ -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());
}

View File

@@ -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());
}

View File

@@ -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);
}

View File

@@ -636,7 +636,7 @@ public class WindowManagerService extends IWindowManager.Stub
/** List of window currently causing non-system overlay windows to be hidden. */
private ArrayList<WindowState> 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

View File

@@ -2216,7 +2216,7 @@ class WindowState extends WindowContainer<WindowState> 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<WindowState> 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<WindowState> 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<WindowState> 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<WindowState> 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<WindowState> 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<WindowState> implements WindowManagerP
if (isAnimating()) {
return;
}
if (mWmService.mAccessibilityController != null) {
if (mWmService.mAccessibilityController.hasCallbacks()) {
mWmService.mAccessibilityController.onSomeWindowResizedOrMoved(getDisplayId());
}

View File

@@ -677,7 +677,7 @@ class WindowStateAnimator {
applyAnimationLocked(transit, true);
}
if (mService.mAccessibilityController != null) {
if (mService.mAccessibilityController.hasCallbacks()) {
mService.mAccessibilityController.onWindowTransition(mWin, transit);
}
}