Skip to content
Commit a2507091 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Add a sysprop to disable SysUI's nav buttons when IME is shown

This CL introduces a new runtime mode where the SysUI no longer
renders the back button and the IME switcher button when the IME is
shown, which is the first milestone to move those buttons to the IME
process.

To enable this mode, run the following commands:

  $ adb root
  $ adb shell setprop \
          persist.sys.ime.can_render_gestural_nav_buttons true
  $ adb reboot

Keep in mind that you always need to reboot the device after changing
this sysprop.

Note that only AOSP-based gestural navigation mode is officially
supported by this flag, which is when

  com.android.internal.R.integer.config_navBarInteractionMode

is set to

  WindowManagerPolicyConstants#NAV_BAR_MODE_GESTURAL.

Note that nav button rendering in the IME process is yet to be done in
subsequent CLs.  Hence the expected behavior right now is only one
thing that the SysUI stops rendering the back button and the IME
switcher button any more when the flag takes effect.

The flag is treated as off by default.  Hence there should be no
visible behavior changes unless you manually enable it.

Alternatives Considered:

Instead of letting NavigationBarView directly read the sysprop, we
could propagate the information from the InputMethodService to the
SysUI via InputMethodPrivilegedOperations#setImeWindowStatusAsync().
This approach was abandoned because of the following reasons.

 * Such a complex mechanism is not necessary for production code.
 * There are some ad-hoc invocations of
     IMMS#updateSystemUiLocked(0, mBackDisposition),
   which makes it difficult to keep IMS and SysUI in sync.

Bug: 205803355
Test: Manually done as follows
  1. Build aosp_coral-userdebug and flash it
  2. Tap any edit field to show AOSP Keyboard.
  3. Confirm that nav buttons are rendered in 3-button nav mode
  4. Switch to gestural navigation mode.
  5. Confirm that nav buttons are still shown when IME is visible.
  6. adb root
  7. adb shell setprop \
           persist.sys.ime.can_render_gestural_nav_buttons true
  8. adb reboot
  9. Tap any edit field to show AOSP Keyboard.
 10. Confirm that nav buttons are not shown when IME is visible.
 11. Switch to 3-button navigation mode.
 12. Tap any edit field to show AOSP Keyboard.
 13. Confirm that nav buttons are shown again when IME is visible.
 14. Switch to gestural navigation mode again.
 15. Confirm that nav buttons are not shown when IME is visible.
Change-Id: I7a2e9f08072a97d61b78dddb144282a5728d1407
parent 5a2fbae4
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment