Update VTS tests for AudioControl AIDL HAL version 2
Bug: 154906631
Test: atest VtsAidlHalAudioControlTest
Signed-off-by: Francois Gaffie <francois.gaffie@renault.com>
Change-Id: Iea05f7bfcc102ccd5d79b2f29c3fbf179044e537
Merged-In: Iea05f7bfcc102ccd5d79b2f29c3fbf179044e537
(cherry picked from commit e5af282ccc36ac9a95a1a0a815c831aeb8ad23fd)
diff --git a/automotive/audiocontrol/aidl/vts/Android.bp b/automotive/audiocontrol/aidl/vts/Android.bp
index 6856b91..3d4be48 100644
--- a/automotive/audiocontrol/aidl/vts/Android.bp
+++ b/automotive/audiocontrol/aidl/vts/Android.bp
@@ -37,11 +37,16 @@
"libxml2",
],
static_libs: [
- "android.hardware.automotive.audiocontrol-V1-cpp",
+ "android.hardware.automotive.audiocontrol-V2-cpp",
+ "android.hardware.audio.common-V1-cpp",
+ "android.media.audio.common.types-V1-cpp",
"libgmock",
],
test_suites: [
"general-tests",
"vts",
],
+ cflags: [
+ "-Wno-deprecated-declarations",
+ ],
}
diff --git a/automotive/audiocontrol/aidl/vts/VtsHalAudioControlTargetTest.cpp b/automotive/audiocontrol/aidl/vts/VtsHalAudioControlTargetTest.cpp
index ae53c68..f4f5eef 100644
--- a/automotive/audiocontrol/aidl/vts/VtsHalAudioControlTargetTest.cpp
+++ b/automotive/audiocontrol/aidl/vts/VtsHalAudioControlTargetTest.cpp
@@ -19,6 +19,7 @@
#include <aidl/Vintf.h>
#include <gmock/gmock.h>
+#include <android/hardware/automotive/audiocontrol/BnAudioGainCallback.h>
#include <android/hardware/automotive/audiocontrol/BnFocusListener.h>
#include <android/hardware/automotive/audiocontrol/IAudioControl.h>
#include <android/log.h>
@@ -30,10 +31,13 @@
using android::String16;
using android::binder::Status;
using android::hardware::automotive::audiocontrol::AudioFocusChange;
+using android::hardware::automotive::audiocontrol::AudioGainConfigInfo;
+using android::hardware::automotive::audiocontrol::BnAudioGainCallback;
using android::hardware::automotive::audiocontrol::BnFocusListener;
using android::hardware::automotive::audiocontrol::DuckingInfo;
using android::hardware::automotive::audiocontrol::IAudioControl;
using android::hardware::automotive::audiocontrol::MutingInfo;
+using android::hardware::automotive::audiocontrol::Reasons;
#include "android_audio_policy_configuration_V7_0.h"
@@ -41,6 +45,9 @@
using namespace android::audio::policy::configuration::V7_0;
}
+namespace audiohalcommon = android::hardware::audio::common;
+namespace audiomediacommon = android::media::audio::common;
+
class AudioControlAidl : public testing::TestWithParam<std::string> {
public:
virtual void SetUp() override {
@@ -103,6 +110,11 @@
MOCK_METHOD(Status, requestAudioFocus,
(const String16& usage, int32_t zoneId, AudioFocusChange focusGain));
MOCK_METHOD(Status, abandonAudioFocus, (const String16& usage, int32_t zoneId));
+ MOCK_METHOD(Status, requestAudioFocusWithMetaData,
+ (const audiohalcommon::PlaybackTrackMetadata& metaData, int32_t zoneId,
+ AudioFocusChange focusGain));
+ MOCK_METHOD(Status, abandonAudioFocusWithMetaData,
+ (const audiohalcommon::PlaybackTrackMetadata& metaData, int32_t zoneId));
};
/*
@@ -159,6 +171,61 @@
ASSERT_TRUE(audioControl->onDevicesToDuckChange(duckingInfos).isOk());
}
+TEST_P(AudioControlAidl, FocusChangeWithMetaDataExercise) {
+ ALOGI("Focus Change test");
+
+ audiohalcommon::PlaybackTrackMetadata metadata;
+ metadata.usage = audiomediacommon::AudioUsage::MEDIA;
+ metadata.contentType = audiomediacommon::AudioContentType::MUSIC;
+ metadata.tags = {"com.google.android=VR"};
+ ASSERT_TRUE(
+ audioControl
+ ->onAudioFocusChangeWithMetaData(metadata, 0, AudioFocusChange::GAIN_TRANSIENT)
+ .isOk());
+};
+
+TEST_P(AudioControlAidl, SetAudioDeviceGainsChangedExercise) {
+ ALOGI("Set Audio Gains Changed test");
+
+ const std::vector<Reasons> reasons{Reasons::FORCED_MASTER_MUTE, Reasons::NAV_DUCKING};
+ AudioGainConfigInfo agci1;
+ agci1.zoneId = 0;
+ agci1.devicePortAddress = String16("address 1");
+ agci1.volumeIndex = 8;
+
+ AudioGainConfigInfo agci2;
+ agci1.zoneId = 0;
+ agci1.devicePortAddress = String16("address 2");
+ agci1.volumeIndex = 1;
+
+ std::vector<AudioGainConfigInfo> gains{agci1, agci2};
+ ASSERT_TRUE(audioControl->setAudioDeviceGainsChanged(reasons, gains).isOk());
+}
+
+/*
+ * Test Audio Gain Callback registration.
+ *
+ * Verifies that:
+ * - registerGainCallback succeeds;
+ * - registering a second callback succeeds in replacing the first;
+ * - closing handle does not crash;
+ */
+struct AudioGainCallbackMock : BnAudioGainCallback {
+ MOCK_METHOD(Status, onAudioDeviceGainsChanged,
+ (const std::vector<Reasons>& reasons,
+ const std::vector<AudioGainConfigInfo>& gains));
+};
+
+TEST_P(AudioControlAidl, AudioGainCallbackRegistration) {
+ ALOGI("Focus listener test");
+
+ sp<AudioGainCallbackMock> gainCallback = new AudioGainCallbackMock();
+ ASSERT_TRUE(audioControl->registerGainCallback(gainCallback).isOk());
+
+ sp<AudioGainCallbackMock> gainCallback2 = new AudioGainCallbackMock();
+ ASSERT_TRUE(audioControl->registerGainCallback(gainCallback2).isOk());
+}
+
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AudioControlAidl);
INSTANTIATE_TEST_SUITE_P(
Audiocontrol, AudioControlAidl,