Call getAudioPort to get supported attributes for audio devices.

GetAudioPort API will return the supported attributes for the devices.
Call getAudioPort to get the supported attributes for the audio
devices so that it is no needed to get supported attributes via
getParameters API.

Bug: 160352965
Test: make
Test: atest audiopolicy_tests
Change-Id: I6bd109fcb6ffb825cbb9cf539d569e9cad44bb37
diff --git a/media/libmediahelper/AudioSanitizer.cpp b/media/libmediahelper/AudioSanitizer.cpp
index 44ca956..9223823 100644
--- a/media/libmediahelper/AudioSanitizer.cpp
+++ b/media/libmediahelper/AudioSanitizer.cpp
@@ -69,15 +69,16 @@
     return safetyNetLog(status, bugNumber);
 }
 
-/** returns BAD_VALUE if sanitization was required. */
-status_t AudioSanitizer::sanitizeAudioPort(
-        struct audio_port *port, const char *bugNumber)
-{
+namespace {
+
+template <typename T, std::enable_if_t<std::is_same<T, struct audio_port>::value
+                                    || std::is_same<T, struct audio_port_v7>::value, int> = 0>
+static status_t sanitizeAudioPortInternal(T *port, const char *bugNumber = nullptr) {
     status_t status = NO_ERROR;
     if (preventStringOverflow(port->name)) {
         status = BAD_VALUE;
     }
-    if (sanitizeAudioPortConfig(&port->active_config) != NO_ERROR) {
+    if (AudioSanitizer::sanitizeAudioPortConfig(&port->active_config) != NO_ERROR) {
         status = BAD_VALUE;
     }
     if (port->type == AUDIO_PORT_TYPE_DEVICE &&
@@ -87,6 +88,22 @@
     return safetyNetLog(status, bugNumber);
 }
 
+} // namespace
+
+/** returns BAD_VALUE if sanitization was required. */
+status_t AudioSanitizer::sanitizeAudioPort(
+        struct audio_port *port, const char *bugNumber)
+{
+    return sanitizeAudioPortInternal(port, bugNumber);
+}
+
+/** returns BAD_VALUE if sanitization was required. */
+status_t AudioSanitizer::sanitizeAudioPort(
+        struct audio_port_v7 *port, const char *bugNumber)
+{
+    return sanitizeAudioPortInternal(port, bugNumber);
+}
+
 /** returns BAD_VALUE if sanitization was required. */
 status_t AudioSanitizer::sanitizeAudioPatch(
         struct audio_patch *patch, const char *bugNumber)
diff --git a/media/libmediahelper/include/media/AudioSanitizer.h b/media/libmediahelper/include/media/AudioSanitizer.h
index 1475c7b..84bcb62 100644
--- a/media/libmediahelper/include/media/AudioSanitizer.h
+++ b/media/libmediahelper/include/media/AudioSanitizer.h
@@ -38,6 +38,9 @@
     static status_t sanitizeAudioPort(
             struct audio_port *port, const char *bugNumber = nullptr);
 
+    static status_t sanitizeAudioPort(
+            struct audio_port_v7 *port, const char *bugNumber = nullptr);
+
     static status_t sanitizeAudioPatch(
             struct audio_patch *patch, const char *bugNumber = nullptr);
 };