CarAudioService: fix NPE while recursive handling of delayed request

Audio Focus is hold transiently, then new request with delayed support
(with reject rule) is done.

Yet, another request with gain transient may duck (with concurrent rule
vs initial focus holder and delayed holder).

When the first request abandons the focus, handling of delayed is done
twice. This recursivity leads to calling getClientId on null member
has delayed request has been made null inbetween.

This CL fixes this issue by clearing the delayed requestor before
evaluating focus for it.

Bug: b/232417355
Test: adb shell am instrument -w -e class com.android.car.audio.CarAudioFocusUnitTest com.android.car.carservice_unittest

Signed-off-by: François Gaffie <francois.gaffie@renault.com>
Change-Id: Ibdcd8fce77cb4c0f8ea81d6ea48bad84bc6c78f9
2 files changed
tree: f5a9e6dbd431a5bf9c56181ccc1cb2ae5d84accb
  1. apex_car_framework/
  2. car-admin-ui-lib/
  3. car-builtin-lib/
  4. car-helper-lib/
  5. car-lib/
  6. car-lib-module/
  7. car-maps-placeholder/
  8. car-test-lib/
  9. car-usb-handler/
  10. car_product/
  11. cpp/
  12. data/
  13. experimental/
  14. FrameworkPackageStubs/
  15. obd2-lib/
  16. packages/
  17. procfs-inspector/
  18. service/
  19. service-builtin/
  20. tests/
  21. tools/
  22. vehicle-hal-support-lib/
  23. .clang-format
  24. .gitignore
  25. Android.mk
  26. CleanSpec.mk
  27. CPPLINT.cfg
  28. OWNERS
  29. OWNERS_networking
  30. PREUPLOAD.cfg
  31. README.md
  32. TEST_MAPPING
README.md

AAOS

Source code for Android Automotive OS.

Structure

car_product/           - AAOS product
car-builtin-lib/       - A helper library for CarService to access hidden
                         framework APIs
car-lib/               - Car API
car-lib-module/        - Car API module
cpp/                   - Native services
experimental/          - Experimental Car API and services
packages/              - Apps and services for cars
service/               - Car service module
service-builint        - Platform builtin component that runs CarService module
tests/                 - Tests and sample apps
tools/                 - Helper scripts

C++

Native (C++) code format is required to be compatible with .clang-format file. The formatter is already integrated to repo tool. To run manually, use:

git clang-format --style=file --extension='h,cpp,cc' HEAD~

Note that clang-format is not desirable for Android java files. Therefore the command line above is limited to specific extensions.