diff options
4 files changed, 11 insertions, 11 deletions
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index 6d85e7589c48..5da49857dda5 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -766,7 +766,7 @@ interface IWindowManager * container. */ @EnforcePermission("MANAGE_APP_TOKENS") - void updateDisplayWindowRequestedVisibleTypes(int displayId, int requestedVisibleTypes, + void updateDisplayWindowRequestedVisibleTypes(int displayId, int visibleTypes, int mask, in @nullable ImeTracker.Token statsToken); /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index 38b859220256..ec3c0b83fe2d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -228,7 +228,6 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged public class PerDisplay implements DisplayInsetsController.OnInsetsChangedListener { final int mDisplayId; final InsetsState mInsetsState = new InsetsState(); - @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible(); boolean mImeRequestedVisible = (WindowInsets.Type.defaultVisible() & WindowInsets.Type.ime()) != 0; InsetsSourceControl mImeSourceControl = null; @@ -426,12 +425,10 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged */ private void setVisibleDirectly(boolean visible, @Nullable ImeTracker.Token statsToken) { mInsetsState.setSourceVisible(InsetsSource.ID_IME, visible); - mRequestedVisibleTypes = visible - ? mRequestedVisibleTypes | WindowInsets.Type.ime() - : mRequestedVisibleTypes & ~WindowInsets.Type.ime(); + int visibleTypes = visible ? WindowInsets.Type.ime() : 0; try { mWmService.updateDisplayWindowRequestedVisibleTypes(mDisplayId, - mRequestedVisibleTypes, statsToken); + visibleTypes, WindowInsets.Type.ime(), statsToken); } catch (RemoteException e) { } } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index e19096354d64..faeda5fbe428 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -7109,9 +7109,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** * @see #getRequestedVisibleTypes() */ - void setRequestedVisibleTypes(@InsetsType int requestedVisibleTypes) { - if (mRequestedVisibleTypes != requestedVisibleTypes) { - mRequestedVisibleTypes = requestedVisibleTypes; + void updateRequestedVisibleTypes(@InsetsType int visibleTypes, @InsetsType int mask) { + int newRequestedVisibleTypes = + (mRequestedVisibleTypes & ~mask) | (visibleTypes & mask); + if (mRequestedVisibleTypes != newRequestedVisibleTypes) { + mRequestedVisibleTypes = newRequestedVisibleTypes; } } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 7e70e75820a3..591d19f3bfdc 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4671,7 +4671,8 @@ public class WindowManagerService extends IWindowManager.Stub @EnforcePermission(android.Manifest.permission.MANAGE_APP_TOKENS) @Override public void updateDisplayWindowRequestedVisibleTypes(int displayId, - @InsetsType int requestedVisibleTypes, @Nullable ImeTracker.Token statsToken) { + @InsetsType int visibleTypes, @InsetsType int mask, + @Nullable ImeTracker.Token statsToken) { updateDisplayWindowRequestedVisibleTypes_enforcePermission(); final long origId = Binder.clearCallingIdentity(); try { @@ -4684,7 +4685,7 @@ public class WindowManagerService extends IWindowManager.Stub } ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_WM_UPDATE_DISPLAY_WINDOW_REQUESTED_VISIBLE_TYPES); - dc.mRemoteInsetsControlTarget.setRequestedVisibleTypes(requestedVisibleTypes); + dc.mRemoteInsetsControlTarget.updateRequestedVisibleTypes(visibleTypes, mask); // TODO(b/353463205) the statsToken shouldn't be null as it is used later in the // IME provider. Check if we have to create a new request here, if null. dc.getInsetsStateController().onRequestedVisibleTypesChanged( |