Merge "PiP: Update accessibility window as menu shows/hides." into sc-dev
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
index ef113dc..97c89d0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
@@ -134,6 +134,18 @@
}
/**
+ * Sets the accessibility window for the given {@param shellRootLayer}.
+ */
+ public void setShellRootAccessibilityWindow(int displayId,
+ @WindowManager.ShellRootLayer int shellRootLayer, View view) {
+ PerDisplay pd = mPerDisplay.get(displayId);
+ if (pd == null) {
+ return;
+ }
+ pd.setShellRootAccessibilityWindow(shellRootLayer, view);
+ }
+
+ /**
* Sets the touchable region of a view's window. This will be cropped to the window size.
* @param view
* @param region
@@ -202,15 +214,9 @@
attrs.flags |= FLAG_HARDWARE_ACCELERATED;
viewRoot.setView(view, attrs);
mViewRoots.put(view, viewRoot);
-
- try {
- mWmService.setShellRootAccessibilityWindow(mDisplayId, shellRootLayer,
- viewRoot.getWindowToken());
- } catch (RemoteException e) {
- Slog.e(TAG, "Error setting accessibility window for " + mDisplayId + ":"
- + shellRootLayer, e);
- }
+ setShellRootAccessibilityWindow(shellRootLayer, view);
}
+
SysUiWindowManager addRoot(@WindowManager.ShellRootLayer int shellRootLayer) {
SysUiWindowManager wwm = mWwms.get(shellRootLayer);
if (wwm != null) {
@@ -240,6 +246,21 @@
return wwm.mContainerWindow;
}
+ void setShellRootAccessibilityWindow(@WindowManager.ShellRootLayer int shellRootLayer,
+ View view) {
+ SysUiWindowManager wwm = mWwms.get(shellRootLayer);
+ if (wwm == null) {
+ return;
+ }
+ try {
+ mWmService.setShellRootAccessibilityWindow(mDisplayId, shellRootLayer,
+ view != null ? mViewRoots.get(view).getWindowToken() : null);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Error setting accessibility window for " + mDisplayId + ":"
+ + shellRootLayer, e);
+ }
+ }
+
void updateConfiguration(Configuration configuration) {
for (int i = 0; i < mWwms.size(); ++i) {
mWwms.valueAt(i).updateConfiguration(configuration);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java
index bc8e1e7..a646b07 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java
@@ -524,6 +524,15 @@
mListeners.forEach(l -> l.onPipMenuStateChangeFinish(menuState));
}
mMenuState = menuState;
+ switch (mMenuState) {
+ case MENU_STATE_NONE:
+ mSystemWindows.setShellRootAccessibilityWindow(0, SHELL_ROOT_LAYER_PIP, null);
+ break;
+ default:
+ mSystemWindows.setShellRootAccessibilityWindow(0, SHELL_ROOT_LAYER_PIP,
+ mPipMenuView);
+ break;
+ }
}
/**