ui: Move the support for touch inputs into RecoveryUI.

- Added detection for EV_ABS events in minui/events.cpp, if it's
- Added listening and processing touch inputs in ui.cpp;
- Fixed an issue in recognizing swipe with multi-touch protocol A;
- Changed the logic in RecoveryUI::ProcessKey() to be swipe-aware. It
  now allows turning on text mode with <power> + <swipe-up>.

The last change also fixed an issue on devices with protocol A: prior
to this CL, user may accidentally toggle the text mode during an OTA.
Because it was considered as a single-button device, a long tap that
sent BTN_TOUCH event would turn on text mode.

Test: Allow detecting touch inputs. Swiping (up, down, enter) works on
      angler, angelfish, dorado respectively.
Bug: 36169090
Change-Id: I4bc882b99114ce4ab414f8bdb8f4f7a525b8a8fd
5 files changed
tree: 6ca03f4b7b107ea11fa40248747a757f5c8940ab
  1. .clang-format
  2. Android.bp
  3. Android.mk
  4. CleanSpec.mk
  7. README.md
  8. adb_install.cpp
  9. adb_install.h
  10. applypatch/
  11. asn1_decoder.cpp
  12. asn1_decoder.h
  13. boot_control/
  14. bootloader.h
  15. bootloader_message/
  16. common.h
  17. default_device.cpp
  18. device.cpp
  19. device.h
  20. edify/
  21. error_code.h
  22. etc/
  23. fonts/
  24. fuse_sdcard_provider.cpp
  25. fuse_sdcard_provider.h
  26. fuse_sideload.cpp
  27. fuse_sideload.h
  28. install.cpp
  29. install.h
  30. interlace-frames.py
  31. minadbd/
  32. minui/
  33. mounts.cpp
  34. mounts.h
  35. otafault/
  36. otautil/
  37. print_sha1.h
  38. private/
  39. recovery-persist.cpp
  40. recovery-persist.rc
  41. recovery-refresh.cpp
  42. recovery-refresh.rc
  43. recovery.cpp
  44. res-hdpi/
  45. res-mdpi/
  46. res-xhdpi/
  47. res-xxhdpi/
  48. res-xxxhdpi/
  49. roots.cpp
  50. roots.h
  51. rotate_logs.cpp
  52. rotate_logs.h
  53. screen_ui.cpp
  54. screen_ui.h
  55. stub_ui.h
  56. tests/
  57. tools/
  58. ui.cpp
  59. ui.h
  60. uncrypt/
  61. update_verifier/
  62. updater/
  63. verifier.cpp
  64. verifier.h
  65. vr_device.cpp
  66. vr_ui.cpp
  67. vr_ui.h
  68. wear_touch.cpp
  69. wear_touch.h
  70. wear_ui.cpp
  71. wear_ui.h

The Recovery Image

Quick turn-around testing

mm -j && m ramdisk-nodeps && m recoveryimage-nodeps

# To boot into the new recovery image
# without flashing the recovery partition:
adb reboot bootloader
fastboot boot $ANDROID_PRODUCT_OUT/recovery.img

Running the tests

# After setting up environment and lunch.
mmma -j bootable/recovery

# Running the tests on device.
adb root
adb sync data

# 32-bit device
adb shell /data/nativetest/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest/recovery_component_test/recovery_component_test

# Or 64-bit device
adb shell /data/nativetest64/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest64/recovery_component_test/recovery_component_test

Running the manual tests

recovery-refresh and recovery-persist executables exist only on systems without /cache partition. And we need to follow special steps to run tests for them.

  • Execute the test on an A/B device first. The test should fail but it will log some contents to pmsg.

  • Reboot the device immediately and run the test again. The test should save the contents of pmsg buffer into /data/misc/recovery/inject.txt. Test will pass if this file has expected contents.

ResourceTest validates whether the png files are qualified as background text image under recovery.

1. `adb sync data` to make sure the test-dir has the images to test.
2. The test will automatically pickup and verify all `_text.png` files in
   the test dir.