Fullscreen PWA edge-to-edge x86 APK sampler

#407420295 Android x86 emulator builds Tested: 2026-03-24

Summary

Issue 407420295 reports that installed fullscreen PWAs are not drawing into the display cutout area.

The patch changes fullscreen PWA immersive mode cutout handling to LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES.

Result: Fix verified on Android 10 (x86 emulator) and Android 13 (arm64). Both fullscreen and standalone PWAs now properly extend edge-to-edge with correct safe-area-insets.

Test Results

Test: PWA with display: fullscreen + viewport-fit=cover
Expected: Content should extend into notch/cutout area with proper safe-area-insets

Before (Unpatched)

Case 1 Unpatched
innerHeight797px
safe-area-inset-top0.0px
resultCheck manually

After (Patched)

Case 1 Patched
innerHeight845px
safe-area-inset-top48.0px
resultPASS (edge-to-edge)
✓ Fix Verified
Test: PWA with display: standalone + viewport-fit=cover
Expected: Content should extend under transparent status bar

Before (Unpatched)

Case 2 Unpatched
innerHeight749px
safe-area-inset-top0.0px
status barvisible/opaque

After (Patched)

Case 2 Patched
innerHeight845px
safe-area-inset-top0.0px
status bartransparent/extended
✓ Fix Verified
Test: Fullscreen PWA back-swipe gesture behavior
Expected: Proper resize events with correct innerHeight values during navigation gestures

Before (Unpatched)

Case 3 Unpatched
innerHeight797px
safe-area-inset-top0.0px
resize events8
log pattern645→741→797

After (Patched)

Case 3 Patched
innerHeight845px
safe-area-inset-top48.0px
resize events10
log pattern645→741→797→845
✓ Fix Verified
Test: Regular document.requestFullscreen() API (not PWA)
Expected: Same behavior - fix is for PWA manifest, not JS API

Before (Unpatched)

Case 4 Unpatched
fullscreenElementyes
innerHeight845px
visualViewport846px

After (Patched)

Case 4 Patched
fullscreenElementyes
innerHeight845px
visualViewport846px
Same behavior (expected baseline)
Test: Standalone PWA on Android 13 (API 33) with gesture navigation
Expected: Edge-to-edge viewport with proper safe-area-insets (reporter's device)

Before (Unpatched)

Android 13 Unpatched
Android13 (API 33)
innerHeight866px
screen.height915px
screen-innerHeight49px (gap!)
safe-area-inset-top24.0px
resultFAIL (not edge-to-edge)

After (Patched)

Android 13 Patched
Android13 (API 33)
innerHeight914px
screen.height915px
screen-innerHeight1px ✓
safe-area-inset-top24.0px
resultPASS (edge-to-edge)
✓ Fix Verified on Android 13

Demo Pages

Interactive demos for manual verification:

Downloads

Download unpatched x86 APK Download patched x86 APK Download patched arm64 APK SHA256 checksums

Quick test flow

  1. Create emulator with display cutout: cmd overlay enable com.android.internal.display.cutout.emulation.tall
  2. Install unpatched APK, install demo as PWA, capture behavior
  3. Install patched APK over it, repeat the same demos
  4. For backswipe demo, perform repeated back-swipes and compare resize logs

Install commands

# Enable display cutout on emulator
adb shell cmd overlay enable com.android.internal.display.cutout.emulation.tall

# Unpatched
adb install -r ChromePublic-unpatched-x86.apk

# Patched x86 (emulator)
adb install -r ChromePublic-patched-x86.apk

# Patched arm64 (arm64 device)
adb install -r ChromePublic-patched-arm64.apk