Explicitly stop existing objects before creating new ones to avoid leaks

Its not okay to rely on preunbind and disconnected events being called
before connected is called with our service listener. To avoid cases
where we leak broadcast receivers (owned by objects created when the
service connects) we need to explicitly stop() each one. We can do this
by calling destroyUser(), effectively removing the entire user context
safely, before initializing a new one off the new proxy objects.

Bug: b/144080122
Test: Build, flash, interoperability testing with device, atest,
automated reconnection tests (adapter toggle, user switch and reboot)

Change-Id: Id7717ef5c22b8733766677980a1778dc94f86f05
Merged-In: Id7717ef5c22b8733766677980a1778dc94f86f05
1 file changed
tree: 4e14f7f20bfe163d8884b654307ad4f375c980c6
  1. car-bugreportd/
  2. car-default-input-service/
  3. car-lib/
  4. car-maps-placeholder/
  5. car-systemtest-lib/
  6. car-test-lib/
  7. car-usb-handler/
  8. car_product/
  9. EncryptionRunner/
  10. evs/
  11. FrameworkPackageStubs/
  12. obd2-lib/
  13. procfs-inspector/
  14. service/
  15. tests/
  16. tools/
  17. user/
  18. vehicle-hal-support-lib/
  19. .clang-format
  20. .gitignore
  21. Android.mk
  22. CleanSpec.mk
  23. OWNERS
  24. PREUPLOAD.cfg
  25. README.md
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.