Merge "Use Divider ShellRoot to ferry divider to Accessibility" into rvc-dev
This commit is contained in:
@@ -1245,6 +1245,16 @@ final class AccessibilityController {
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = dc.mShellRoots.size() - 1; i >= 0; --i) {
|
||||
final WindowInfo info = dc.mShellRoots.valueAt(i).getWindowInfo();
|
||||
if (info == null) {
|
||||
continue;
|
||||
}
|
||||
info.layer = addedWindows.size();
|
||||
windows.add(info);
|
||||
addedWindows.add(info.token);
|
||||
}
|
||||
|
||||
// Remove child/parent references to windows that were not added.
|
||||
final int windowCount = windows.size();
|
||||
for (int i = 0; i < windowCount; i++) {
|
||||
|
||||
@@ -26,7 +26,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
|
||||
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
|
||||
@@ -574,7 +573,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
|
||||
/** Corner radius that windows should have in order to match the display. */
|
||||
private final float mWindowCornerRadius;
|
||||
|
||||
private final SparseArray<ShellRoot> mShellRoots = new SparseArray<>();
|
||||
final SparseArray<ShellRoot> mShellRoots = new SparseArray<>();
|
||||
RemoteInsetsControlTarget mRemoteInsetsControlTarget = null;
|
||||
private final IBinder.DeathRecipient mRemoteInsetsDeath =
|
||||
() -> {
|
||||
|
||||
@@ -45,6 +45,11 @@ public class DockedStackDividerController {
|
||||
|
||||
void setTouchRegion(Rect touchRegion) {
|
||||
mTouchRegion.set(touchRegion);
|
||||
// We need to report touchable region changes to accessibility.
|
||||
if (mDisplayContent.mWmService.mAccessibilityController != null) {
|
||||
mDisplayContent.mWmService.mAccessibilityController.onSomeWindowResizedOrMovedLocked(
|
||||
mDisplayContent.getDisplayId());
|
||||
}
|
||||
}
|
||||
|
||||
void getTouchRegion(Rect outRegion) {
|
||||
|
||||
@@ -23,12 +23,14 @@ import static com.android.server.wm.WindowManagerService.MAX_ANIMATION_DURATION;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Slog;
|
||||
import android.view.DisplayInfo;
|
||||
import android.view.IWindow;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.WindowInfo;
|
||||
import android.view.animation.Animation;
|
||||
|
||||
/**
|
||||
@@ -102,5 +104,27 @@ public class ShellRoot {
|
||||
mToken.startAnimation(mToken.getPendingTransaction(), adapter, false /* hidden */,
|
||||
ANIMATION_TYPE_WINDOW_ANIMATION, null /* animationFinishedCallback */);
|
||||
}
|
||||
|
||||
WindowInfo getWindowInfo() {
|
||||
if (mToken.windowType != TYPE_DOCK_DIVIDER) {
|
||||
return null;
|
||||
}
|
||||
if (!mDisplayContent.getDefaultTaskDisplayArea().isSplitScreenModeActivated()) {
|
||||
return null;
|
||||
}
|
||||
WindowInfo windowInfo = WindowInfo.obtain();
|
||||
windowInfo.displayId = mToken.getDisplayArea().getDisplayContent().mDisplayId;
|
||||
windowInfo.type = mToken.windowType;
|
||||
windowInfo.layer = mToken.getWindowLayerFromType();
|
||||
windowInfo.token = mClient.asBinder();
|
||||
windowInfo.title = "Splitscreen Divider";
|
||||
windowInfo.focused = false;
|
||||
windowInfo.inPictureInPicture = false;
|
||||
windowInfo.hasFlagWatchOutsideTouch = false;
|
||||
final Rect regionRect = new Rect();
|
||||
mDisplayContent.getDockedDividerController().getTouchRegion(regionRect);
|
||||
windowInfo.regionInScreen.set(regionRect);
|
||||
return windowInfo;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user