diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java index 65127e4a3b31e..8ce8c46d19394 100644 --- a/services/core/java/com/android/server/wm/AccessibilityController.java +++ b/services/core/java/com/android/server/wm/AccessibilityController.java @@ -342,6 +342,18 @@ final class AccessibilityController { // Not relevant for the window observer. } + void onWMTransition(int displayId, @WindowManager.TransitionType int type) { + if (mAccessibilityTracing.isTracingEnabled(FLAGS_MAGNIFICATION_CALLBACK)) { + mAccessibilityTracing.logTrace(TAG + ".onAppWindowTransition", + FLAGS_MAGNIFICATION_CALLBACK, "displayId=" + displayId + "; type=" + type); + } + final DisplayMagnifier displayMagnifier = mDisplayMagnifiers.get(displayId); + if (displayMagnifier != null) { + displayMagnifier.onWMTransition(displayId, type); + } + // Not relevant for the window observer. + } + void onWindowTransition(WindowState windowState, int transition) { if (mAccessibilityTracing.isTracingEnabled(FLAGS_MAGNIFICATION_CALLBACK | FLAGS_WINDOWS_FOR_ACCESSIBILITY_CALLBACK)) { @@ -708,6 +720,28 @@ final class AccessibilityController { } } + void onWMTransition(int displayId, @WindowManager.TransitionType int type) { + if (mAccessibilityTracing.isTracingEnabled(FLAGS_MAGNIFICATION_CALLBACK)) { + mAccessibilityTracing.logTrace(LOG_TAG + ".onWMTransition", + FLAGS_MAGNIFICATION_CALLBACK, "displayId=" + displayId + "; type=" + type); + } + if (DEBUG_WINDOW_TRANSITIONS) { + Slog.i(LOG_TAG, "Window transition: " + WindowManager.transitTypeToString(type) + + " displayId: " + displayId); + } + final boolean magnifying = mMagnifedViewport.isMagnifying(); + if (magnifying) { + // All opening/closing situations. + switch (type) { + case WindowManager.TRANSIT_OPEN: + case WindowManager.TRANSIT_TO_FRONT: + case WindowManager.TRANSIT_CLOSE: + case WindowManager.TRANSIT_TO_BACK: + mHandler.sendEmptyMessage(MyHandler.MESSAGE_NOTIFY_USER_CONTEXT_CHANGED); + } + } + } + void onWindowTransition(WindowState windowState, int transition) { if (mAccessibilityTracing.isTracingEnabled(FLAGS_MAGNIFICATION_CALLBACK)) { mAccessibilityTracing.logTrace(LOG_TAG + ".onWindowTransition", diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 04a2761855639..e82dc82cf2350 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1136,6 +1136,11 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { // client, we should finish and apply it here so the transactions aren't lost. postCleanupOnFailure(); } + final AccessibilityController accessibilityController = + dc.mWmService.mAccessibilityController; + if (accessibilityController.hasCallbacks()) { + accessibilityController.onWMTransition(dc.getDisplayId(), mType); + } } else { // No player registered or it's not enabled, so just finish/apply immediately if (!mIsPlayerEnabled) {