diff --git a/audio/2.0/default/PrimaryDevice.cpp b/audio/2.0/default/PrimaryDevice.cpp index 4e8f30f924..746d873806 100644 --- a/audio/2.0/default/PrimaryDevice.cpp +++ b/audio/2.0/default/PrimaryDevice.cpp @@ -17,6 +17,7 @@ #define LOG_TAG "PrimaryDeviceHAL" #include "PrimaryDevice.h" +#include "Util.h" namespace android { namespace hardware { @@ -126,6 +127,10 @@ Return PrimaryDevice::debugDump(const hidl_handle& fd) { // Methods from ::android::hardware::audio::V2_0::IPrimaryDevice follow. Return PrimaryDevice::setVoiceVolume(float volume) { + if (!isGainNormalized(volume)) { + ALOGW("Can not set a voice volume (%f) outside [0,1]", volume); + return Result::INVALID_ARGUMENTS; + } return mDevice->analyzeStatus( "set_voice_volume", mDevice->device()->set_voice_volume(mDevice->device(), volume)); diff --git a/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp b/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp index f2e7aacfcd..27f7aa8096 100644 --- a/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp +++ b/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp @@ -1038,16 +1038,12 @@ static void testUnitaryGain(std::function(float)> setGain) { for (float value : (float[]){-INFINITY, -1.0, 1.0 + std::numeric_limits::epsilon(), 2.0, INFINITY, NAN}) { - SCOPED_TRACE("value=" + to_string(value)); - // FIXME: NAN should never be accepted - // FIXME: Missing api doc. What should the impl do if the volume is - // outside [0,1] ? - ASSERT_RESULT(Result::INVALID_ARGUMENTS, setGain(value)); + EXPECT_RESULT(Result::INVALID_ARGUMENTS, setGain(value)) << "value=" + << value; } // Do not consider -0.0 as an invalid value as it is == with 0.0 for (float value : {-0.0, 0.0, 0.01, 0.5, 0.09, 1.0 /* Restore volume*/}) { - SCOPED_TRACE("value=" + to_string(value)); - ASSERT_OK(setGain(value)); + EXPECT_OK(setGain(value)) << "value=" << value; } }