CarZonesAudioFocus#setRestrictFocus notifies focus callback

To support notifying focus callback on restriction, the notification
flow was updated to handle multiple zones being updated at the same time
so that in the end only one ducking change is observed.

Bug: 189213295
Test: atest com.android.car.audio
Test: Disable audio and check if things are muted
`adb shell cmd car_service define-power-policy audio_off --disable
AUDIO`
`adb shell cmd car_service define-power-policy audio_on --enable
AUDIO`
    `adb shell cmd car_service apply-power-policy audio_off`
to disable audio. Then check if HAL received updated ducking signal

Change-Id: Icba6c46346a9fbd3fc2b9ac393c01fc95cd244bb
10 files changed
tree: 5b3447a5181a3435c02cb2d89aa66e349c1428ba
  1. car-admin-ui-lib/
  2. car-internal-lib/
  3. car-lib/
  4. car-maps-placeholder/
  5. car-systemtest-lib/
  6. car-test-lib/
  7. car-usb-handler/
  8. car_product/
  9. cpp/
  10. data/
  11. experimental/
  12. FrameworkPackageStubs/
  13. obd2-lib/
  14. packages/
  15. procfs-inspector/
  16. service/
  17. tests/
  18. tools/
  19. user/
  20. vehicle-hal-support-lib/
  21. .clang-format
  22. .gitignore
  23. Android.mk
  24. CleanSpec.mk
  25. CPPLINT.cfg
  26. OWNERS
  27. PREUPLOAD.cfg
  28. README.md
  29. TEST_MAPPING
README.md

Native (C++) code format is required to be compatible with .clang-format file. Run

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.