Move navigation bar to bottom: preserve keyboard insets in overlays-content mode

Do not clear the application bottom inset when the virtual keyboard uses
OVERLAYS_CONTENT.

The bottom-toolbar workaround is only required for keyboard modes that
resize Chromium content. Overlay mode owns its keyboard geometry and the
protected keyboard implementation needs the original inset to track the
IME transition consistently.

Keep the existing inset suppression for all non-overlay keyboard modes.

Test: Verified on Android with the bottom toolbar enabled across keyboard
      open and close transitions.
This commit is contained in:
Carmelo Messina
2026-07-24 06:56:37 +02:00
parent 40c0283e1e
commit a688e03bcb
@@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../ChromeAccessibilitySettingsDelegate.java | 70 +++++++++
.../HeadlessBrowserControlsStateProvider.java | 5 +
.../BottomBarContainerCoordinator.java | 7 +-
.../compositor/CompositorViewHolder.java | 7 +
.../compositor/CompositorViewHolder.java | 8 +
.../layouts/LayoutManagerChrome.java | 12 +-
.../layouts/LayoutManagerChromeTablet.java | 7 +-
.../layouts/ToolbarSwipeLayout.java | 14 +-
@@ -110,7 +110,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../render_widget_host_view_android.cc | 3 +
.../Move-navigation-bar-to-bottom.inc | 17 ++
.../renderer/core/frame/viewport_data.cc | 1 +
97 files changed, 1111 insertions(+), 107 deletions(-)
97 files changed, 1112 insertions(+), 107 deletions(-)
create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc
@@ -962,11 +962,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp
if (forwarder != null) {
forwarder.setCurrentTouchOffsetX(left);
forwarder.setCurrentTouchOffsetY(top);
@@ -1043,6 +1047,9 @@ public class CompositorViewHolder extends FrameLayout
@@ -1043,6 +1047,10 @@ public class CompositorViewHolder extends FrameLayout
mApplicationBottomInsetSupplier != null
? mApplicationBottomInsetSupplier.getInsets().webContentsHeightInset
: 0;
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()
+ && mVirtualKeyboardMode != VirtualKeyboardMode.OVERLAYS_CONTENT) {
+ keyboardInset = 0;
+ }