Android resizes-content keyboard safe-area sampler

No issue IDChromium 153.0.7993.0Commit 235bda9a2f16Pixel 6a

Behavior

Baseline

A standalone edge-to-edge PWA using interactive-widget=resizes-content resizes its layout viewport for the IME, but retains the covered navigation-bar value in env(safe-area-inset-bottom). A fixed composer therefore receives duplicate bottom spacing.

Patched

While a RESIZES_CONTENT keyboard is visible, Chromium excludes only the covered navigation bottom edge. Default RESIZES_VISUAL and OVERLAYS_CONTENT retain their navigation safe area.

Live sampler

Standalone PWA keyboard case

Expected Pixel 6a keyboard-open result
Red difference overlay between baseline and patched captures

Install the live page as a PWA before testing. The Expected image is the patched Pixel 6a result. The Diff image marks changed pixels in red; status-bar time also differs between captures.

Open installable repro Baseline screenshot resizes-visual control

Measured result

Closed layout viewport914px Open layout viewport572px Baseline open safe bottom48px Patched open safe bottom0px Baseline total composer padding56px Patched total composer padding8px Focused JUnit result56 / 56 passed

APK downloads

Debug Chromium APKs built from commit 235bda9a2f16fdccd5c34fea06547477944f8537.

⬇ ARM64 APK ⬇ x86 APK SHA256SUMS

Device setup

adb install -r ChromePublic-e2e-keyboard-arm64.apk
adb shell am set-debug-app --persistent org.chromium.chrome
adb shell 'printf "%s\n" "_ --enable-features=WebAppShortEdgesCutoutMode" > /data/local/tmp/chrome-command-line'

# Open this URL in Chromium and install it as an app:
https://static.januschka.com/e2e-keyboard/repro.html
  1. Launch the installed PWA with the keyboard closed. Safe bottom should protect the navigation bar.
  2. Focus the input. The page should report PASS, layout height should shrink, and safe bottom should become 0px.
  3. Dismiss and reopen the keyboard several times. Closed and open values should restore consistently.

Reproduce artifacts

Screenshot analysis script
python3 analyze_screenshots.py