Audio: Add VTS tests for invalid enum-strings, Part 1b am: 9139399bad am: 45e6ec48c9

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1543608

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I77b89e24613cdb6fb120dfbbaadffda35f6012e3
This commit is contained in:
Mikhail Naganov
2021-01-08 10:13:23 +00:00
committed by Automerger Merge Worker
5 changed files with 84 additions and 17 deletions

View File

@@ -478,13 +478,24 @@ Return<void> StreamIn::debug(const hidl_handle& fd, const hidl_vec<hidl_string>&
}
#if MAJOR_VERSION >= 4
Result StreamIn::doUpdateSinkMetadata(const SinkMetadata& sinkMetadata,
bool abortOnConversionFailure) {
Result StreamIn::doUpdateSinkMetadata(const SinkMetadata& sinkMetadata) {
std::vector<record_track_metadata> halTracks;
if (status_t status = sinkMetadataToHal(sinkMetadata, &halTracks);
status != NO_ERROR && abortOnConversionFailure) {
#if MAJOR_VERSION <= 6
(void)sinkMetadataToHal(sinkMetadata, &halTracks);
#else
// Validate whether a conversion to V7 is possible. This is needed
// to have a consistent behavior of the HAL regardless of the API
// version of the legacy HAL (and also to be consistent with openInputStream).
std::vector<record_track_metadata_v7> halTracksV7;
if (status_t status = sinkMetadataToHalV7(sinkMetadata, &halTracksV7); status == NO_ERROR) {
halTracks.reserve(halTracksV7.size());
for (auto metadata_v7 : halTracksV7) {
halTracks.push_back(std::move(metadata_v7.base));
}
} else {
return Stream::analyzeStatus("sinkMetadataToHal", status);
}
#endif // MAJOR_VERSION <= 6
const sink_metadata_t halMetadata = {
.track_count = halTracks.size(),
.tracks = halTracks.data(),
@@ -513,7 +524,7 @@ Return<void> StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) {
if (mStream->update_sink_metadata == nullptr) {
return Void(); // not supported by the HAL
}
(void)doUpdateSinkMetadata(sinkMetadata, false /*abortOnConversionFailure*/);
(void)doUpdateSinkMetadata(sinkMetadata);
return Void();
}
#elif MAJOR_VERSION >= 7
@@ -522,7 +533,7 @@ Return<Result> StreamIn::updateSinkMetadata(const SinkMetadata& sinkMetadata) {
if (mStream->update_sink_metadata == nullptr) {
return Result::NOT_SUPPORTED;
}
return doUpdateSinkMetadata(sinkMetadata, true /*abortOnConversionFailure*/);
return doUpdateSinkMetadata(sinkMetadata);
} else {
if (mStream->update_sink_metadata_v7 == nullptr) {
return Result::NOT_SUPPORTED;

View File

@@ -586,13 +586,24 @@ Return<void> StreamOut::debug(const hidl_handle& fd, const hidl_vec<hidl_string>
}
#if MAJOR_VERSION >= 4
Result StreamOut::doUpdateSourceMetadata(const SourceMetadata& sourceMetadata,
bool abortOnConversionFailure) {
Result StreamOut::doUpdateSourceMetadata(const SourceMetadata& sourceMetadata) {
std::vector<playback_track_metadata_t> halTracks;
if (status_t status = sourceMetadataToHal(sourceMetadata, &halTracks);
status != NO_ERROR && abortOnConversionFailure) {
#if MAJOR_VERSION <= 6
(void)sourceMetadataToHal(sourceMetadata, &halTracks);
#else
// Validate whether a conversion to V7 is possible. This is needed
// to have a consistent behavior of the HAL regardless of the API
// version of the legacy HAL (and also to be consistent with openOutputStream).
std::vector<playback_track_metadata_v7> halTracksV7;
if (status_t status = sourceMetadataToHalV7(sourceMetadata, &halTracksV7); status == NO_ERROR) {
halTracks.reserve(halTracksV7.size());
for (auto metadata_v7 : halTracksV7) {
halTracks.push_back(std::move(metadata_v7.base));
}
} else {
return Stream::analyzeStatus("sourceMetadataToHal", status);
}
#endif // MAJOR_VERSION <= 6
const source_metadata_t halMetadata = {
.track_count = halTracks.size(),
.tracks = halTracks.data(),
@@ -621,7 +632,7 @@ Return<void> StreamOut::updateSourceMetadata(const SourceMetadata& sourceMetadat
if (mStream->update_source_metadata == nullptr) {
return Void(); // not supported by the HAL
}
(void)doUpdateSourceMetadata(sourceMetadata, false /*abortOnConversionFailure*/);
(void)doUpdateSourceMetadata(sourceMetadata);
return Void();
}
#elif MAJOR_VERSION >= 7
@@ -630,7 +641,7 @@ Return<Result> StreamOut::updateSourceMetadata(const SourceMetadata& sourceMetad
if (mStream->update_source_metadata == nullptr) {
return Result::NOT_SUPPORTED;
}
return doUpdateSourceMetadata(sourceMetadata, true /*abortOnConversionFailure*/);
return doUpdateSourceMetadata(sourceMetadata);
} else {
if (mStream->update_source_metadata_v7 == nullptr) {
return Result::NOT_SUPPORTED;

View File

@@ -130,7 +130,7 @@ struct StreamIn : public IStreamIn {
private:
#if MAJOR_VERSION >= 4
Result doUpdateSinkMetadata(const SinkMetadata& sinkMetadata, bool abortOnConversionFailure);
Result doUpdateSinkMetadata(const SinkMetadata& sinkMetadata);
#if MAJOR_VERSION >= 7
Result doUpdateSinkMetadataV7(const SinkMetadata& sinkMetadata);
#endif

View File

@@ -148,8 +148,7 @@ struct StreamOut : public IStreamOut {
private:
#if MAJOR_VERSION >= 4
Result doUpdateSourceMetadata(const SourceMetadata& sourceMetadata,
bool abortOnConversionFailure);
Result doUpdateSourceMetadata(const SourceMetadata& sourceMetadata);
#if MAJOR_VERSION >= 7
Result doUpdateSourceMetadataV7(const SourceMetadata& sourceMetadata);
#endif

View File

@@ -401,6 +401,22 @@ static const RecordTrackMetadata& getRecordTrackMetadataWithInvalidDest() {
return invalid;
}
static const RecordTrackMetadata& getInvalidChannelMaskRecordTrackMetadata() {
static const RecordTrackMetadata invalid = {
.source = toString(xsd::AudioSource::AUDIO_SOURCE_DEFAULT),
.gain = 1,
.channelMask = "random_string"};
return invalid;
}
static const RecordTrackMetadata& getInvalidTagsRecordTrackMetadata() {
static const RecordTrackMetadata invalid = {
.source = toString(xsd::AudioSource::AUDIO_SOURCE_DEFAULT),
.gain = 1,
.tags = {{"random_string"}}};
return invalid;
}
static const PlaybackTrackMetadata& getValidPlaybackTrackMetadata() {
static const PlaybackTrackMetadata valid = {
.usage = toString(xsd::AudioUsage::AUDIO_USAGE_MEDIA),
@@ -425,24 +441,54 @@ static const PlaybackTrackMetadata& getInvalidContentTypePlaybackTrackMetadata()
return invalid;
}
static const PlaybackTrackMetadata& getInvalidChannelMaskPlaybackTrackMetadata() {
static const PlaybackTrackMetadata invalid = {
.usage = toString(xsd::AudioUsage::AUDIO_USAGE_MEDIA),
.contentType = toString(xsd::AudioContentType::AUDIO_CONTENT_TYPE_MUSIC),
.gain = 1,
.channelMask = "random_string"};
return invalid;
}
static const PlaybackTrackMetadata& getInvalidTagsPlaybackTrackMetadata() {
static const PlaybackTrackMetadata invalid = {
.usage = toString(xsd::AudioUsage::AUDIO_USAGE_MEDIA),
.contentType = toString(xsd::AudioContentType::AUDIO_CONTENT_TYPE_MUSIC),
.gain = 1,
.tags = {{"random_string"}}};
return invalid;
}
static const std::vector<SourceMetadata>& getInvalidSourceMetadatas() {
static const std::vector<SourceMetadata> invalids = {
SourceMetadata{.tracks = {{getInvalidUsagePlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getInvalidContentTypePlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getInvalidChannelMaskPlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getInvalidTagsPlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getValidPlaybackTrackMetadata(),
getInvalidUsagePlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getValidPlaybackTrackMetadata(),
getInvalidContentTypePlaybackTrackMetadata()}}}};
getInvalidContentTypePlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getValidPlaybackTrackMetadata(),
getInvalidChannelMaskPlaybackTrackMetadata()}}},
SourceMetadata{.tracks = {{getValidPlaybackTrackMetadata(),
getInvalidTagsPlaybackTrackMetadata()}}}};
return invalids;
}
static const std::vector<SinkMetadata>& getInvalidSinkMetadatas() {
static const std::vector<SinkMetadata> invalids = {
SinkMetadata{.tracks = {{getInvalidSourceRecordTrackMetadata()}}},
SinkMetadata{.tracks = {{getRecordTrackMetadataWithInvalidDest()}}},
SinkMetadata{.tracks = {{getInvalidChannelMaskRecordTrackMetadata()}}},
SinkMetadata{.tracks = {{getInvalidTagsRecordTrackMetadata()}}},
SinkMetadata{.tracks = {{getValidRecordTrackMetadata(),
getInvalidSourceRecordTrackMetadata()}}},
SinkMetadata{.tracks = {{getValidRecordTrackMetadata(),
getRecordTrackMetadataWithInvalidDest()}}}};
getRecordTrackMetadataWithInvalidDest()}}},
SinkMetadata{.tracks = {{getValidRecordTrackMetadata(),
getInvalidChannelMaskRecordTrackMetadata()}}},
SinkMetadata{.tracks = {{getValidRecordTrackMetadata(),
getInvalidTagsRecordTrackMetadata()}}}};
return invalids;
}
template <typename T>