diff --git a/vibrator/aidl/default/Vibrator.cpp b/vibrator/aidl/default/Vibrator.cpp index 0d7131aaf8..9236b95ddc 100644 --- a/vibrator/aidl/default/Vibrator.cpp +++ b/vibrator/aidl/default/Vibrator.cpp @@ -139,6 +139,9 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector& composi return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); } + std::vector supported; + getSupportedPrimitives(&supported); + for (auto& e : composite) { if (e.delayMs > kComposeDelayMaxMs) { return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); @@ -146,8 +149,7 @@ ndk::ScopedAStatus Vibrator::compose(const std::vector& composi if (e.scale <= 0.0f || e.scale > 1.0f) { return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT); } - if (e.primitive < CompositePrimitive::NOOP || - e.primitive > CompositePrimitive::LIGHT_TICK) { + if (std::find(supported.begin(), supported.end(), e.primitive) == supported.end()) { return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); } }