Merge "PiP: Update accessibility window as menu shows/hides." into sc-dev am: c701a4c904

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15191317

Change-Id: I46b908449668f8f29ca0b54d4f262cb517a53965
This commit is contained in:
Ben Lin
2021-07-08 00:15:29 +00:00
committed by Automerger Merge Worker
2 changed files with 38 additions and 8 deletions

View File

@@ -133,6 +133,18 @@ public class SystemWindows {
root.relayout((WindowManager.LayoutParams) params);
}
/**
* 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
@@ -202,15 +214,9 @@ public class SystemWindows {
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 @@ public class SystemWindows {
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);

View File

@@ -524,6 +524,15 @@ public class PhonePipMenuController implements PipMenuController {
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;
}
}
/**