AIDL: Add unit tests to external device disconnection
Add tests for the code added in aosp/3005114.
Fix a minor issue found. It can lead to accumulating
entries in `mFwkPatches` for "implicit" patches.
This should rarely occur in practice as the framework
usually creates explicit patches for external devices.
Bug: 327449747
Test: atest CoreAudioHalAidlTest
Change-Id: I9c4a045bb5dba2b33acb65f7aba1a447a3dac4d0
diff --git a/media/libaudiohal/impl/Hal2AidlMapper.cpp b/media/libaudiohal/impl/Hal2AidlMapper.cpp
index acc69ec..263e3e9 100644
--- a/media/libaudiohal/impl/Hal2AidlMapper.cpp
+++ b/media/libaudiohal/impl/Hal2AidlMapper.cpp
@@ -450,7 +450,7 @@
*portConfig = it->second;
return OK;
}
- ALOGE("%s: could not find a configured device port for device %s",
+ ALOGE("%s: could not find a device port config for device %s",
__func__, device.toString().c_str());
return BAD_VALUE;
}
@@ -1020,6 +1020,13 @@
}
}
resetUnusedPortConfigs();
+ // Patches created by Hal2AidlMapper during stream creation and not "claimed"
+ // by the framework must not be surfaced to it.
+ for (auto& s : mStreams) {
+ if (auto it = releasedPatches.find(s.second.second); it != releasedPatches.end()) {
+ releasedPatches.erase(it);
+ }
+ }
mFwkPatches.merge(releasedPatches);
LOG_ALWAYS_FATAL_IF(!releasedPatches.empty(),
"mFwkPatches already contains some of released patches");