Include Vndk version to compatibility matrix XML.
Serialization code is missing before. Also added tests
for converting device compatibility matrices.
Test: libvintf_test
Bug: 36400653
Change-Id: I57aabafdf71f7e9ce05f30e0b14c3d83dc1c183f
diff --git a/parse_xml.cpp b/parse_xml.cpp
index 1435c4e..19ef771 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -656,6 +656,8 @@
if (m.mType == SchemaType::FRAMEWORK) {
appendChildren(root, matrixKernelConverter, m.framework.mKernels, d);
appendChild(root, sepolicyConverter(m.framework.mSepolicy, d));
+ } else if (m.mType == SchemaType::DEVICE) {
+ appendChild(root, vndkConverter(m.device.mVndk, d));
}
}
bool buildObject(CompatibilityMatrix *object, NodeType *root) const override {
diff --git a/test/main.cpp b/test/main.cpp
index 0ddaee3..be007f1 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -54,6 +54,13 @@
void set(CompatibilityMatrix &cm, Sepolicy &&sepolicy) {
cm.framework.mSepolicy = sepolicy;
}
+ void set(CompatibilityMatrix &cm, SchemaType type) {
+ cm.mType = type;
+ }
+ void set(CompatibilityMatrix &cm, VndkVersionRange &&range, std::set<std::string> &&libs) {
+ cm.device.mVndk.mVersionRange = range;
+ cm.device.mVndk.mLibraries = libs;
+ }
const ManifestHal *getHal(HalManifest &vm, const std::string &name) {
return vm.getHal(name);
}
@@ -424,6 +431,31 @@
EXPECT_EQ(cm, cm2);
}
+TEST_F(LibVintfTest, DeviceCompatibilityMatrixCoverter) {
+ CompatibilityMatrix cm;
+ EXPECT_TRUE(add(cm, MatrixHal{HalFormat::NATIVE, "android.hidl.manager",
+ {{VersionRange(1,0)}},
+ false /* optional */}));
+ set(cm, SchemaType::DEVICE);
+ set(cm, VndkVersionRange{25,0,1,5}, {"libjpeg.so", "libbase.so"});
+ std::string xml = gCompatibilityMatrixConverter(cm);
+ EXPECT_EQ(xml,
+ "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+ " <hal format=\"native\" optional=\"false\">\n"
+ " <name>android.hidl.manager</name>\n"
+ " <version>1.0</version>\n"
+ " </hal>\n"
+ " <vndk>\n"
+ " <version>25.0.1-5</version>\n"
+ " <library>libbase.so</library>\n"
+ " <library>libjpeg.so</library>\n"
+ " </vndk>\n"
+ "</compatibility-matrix>\n");
+ CompatibilityMatrix cm2;
+ EXPECT_TRUE(gCompatibilityMatrixConverter(&cm2, xml));
+ EXPECT_EQ(cm, cm2);
+}
+
TEST_F(LibVintfTest, IsValid) {
EXPECT_TRUE(isValid(ManifestHal()));