Allow settings a freeform string restriction mode

Allow OEMs to create any restriction mode they want, as identified
by its string. Previously we were hard-coding integer values, such
as passenger mode. We realized this wasn't going to be scalable as
OEMs started requesting modes for "teen" and different autonomy
levels. This change is backward-compatible with the existing XML
config.

- Change APIs from using hard-coded IntDefs to Strings
- XML configuration is the same, but parsing logic needs to change
- Use a new JSON format to make it more readable and still efficient
- Backward compatible with original schema

Bug: 147762570
Test: atest CarServiceTest && atest AndroidCarApiTest
Change-Id: Id97512f351ef12b65b42285540a51b295a257a43
Merged-In: Id97512f351ef12b65b42285540a51b295a257a43
(cherry picked from commit 0b0cf28bd1ae479ddfdc99d3cdd9a104cb79c04b)
11 files changed
tree: ad661bbfb7355cf846a9fc74147d1ef43e7d12bd
  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.