audiopolicy: Refactor XML deserializer for the APM config
-- Move deserialization traits classes into the .cpp file;
-- Use unique_ptr for managing libxml objects lifetime;
-- Define node and attribute names inline. This makes them
inlined in the code, but that's OK since they are typically
only used once.
-- Avoid using reference types for "out" parameters.
-- Check the status of deserializing collections.
-- Misc renamings and generalizations for clarity.
Test: Compare dumpsys media.audio_policy A/B, check audio
Change-Id: Ib188964dee94acbccd701a58d45d3df206487d81
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index dd2158b..600f968 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -3921,10 +3921,9 @@
for (const char* fileName : fileNames) {
for (int i = 0; i < kConfigLocationListSize; i++) {
- PolicySerializer serializer;
snprintf(audioPolicyXmlConfigFile, sizeof(audioPolicyXmlConfigFile),
"%s/%s", kConfigLocationList[i], fileName);
- ret = serializer.deserialize(audioPolicyXmlConfigFile, config);
+ ret = deserializeAudioPolicyFile(audioPolicyXmlConfigFile, &config);
if (ret == NO_ERROR) {
config.setSource(audioPolicyXmlConfigFile);
return ret;