Merge "<matrix><hal> optional attr has default value true." into main am: 7ebd846faf
Original change: https://android-review.googlesource.com/c/platform/system/libvintf/+/2836442
Change-Id: Iba52bd51530b515aa4616841d699f0cf99f57c01
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/include/vintf/constants.h b/include/vintf/constants.h
index 455ea76..423cea0 100644
--- a/include/vintf/constants.h
+++ b/include/vintf/constants.h
@@ -23,7 +23,7 @@
namespace vintf {
/* libvintf meta-version */
-constexpr Version kMetaVersion{7, 0};
+constexpr Version kMetaVersion{8, 0};
// Some legacy metaversion constants
// The metaversion where inet transport is added to AIDL HALs
diff --git a/parse_xml.cpp b/parse_xml.cpp
index 2f0d661..12d8569 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -647,7 +647,7 @@
const BuildObjectParam& param) const override {
std::vector<HalInterface> interfaces;
if (!parseOptionalAttr(root, "format", HalFormat::HIDL, &object->format, param.error) ||
- !parseOptionalAttr(root, "optional", false /* defaultValue */, &object->optional,
+ !parseOptionalAttr(root, "optional", true /* defaultValue */, &object->optional,
param.error) ||
!parseOptionalAttr(root, "updatable-via-apex", false /* defaultValue */,
&object->updatableViaApex, param.error) ||
diff --git a/test/LibVintfTest.cpp b/test/LibVintfTest.cpp
index 2a21b25..0e1ba9f 100644
--- a/test/LibVintfTest.cpp
+++ b/test/LibVintfTest.cpp
@@ -858,6 +858,25 @@
}
// clang-format on
+
+TEST_F(LibVintfTest, CompatibilityMatrixDefaultOptionalTrue) {
+ auto xml = "<compatibility-matrix " + kMetaVersionStr + R"( type="device">
+ <hal format="aidl">
+ <name>android.foo.bar</name>
+ <version>1</version>
+ <interface>
+ <name>IFoo</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ </compatibility-matrix>)";
+ CompatibilityMatrix cm;
+ EXPECT_TRUE(fromXml(&cm, xml));
+ auto hal = getAnyHal(cm, "android.foo.bar");
+ ASSERT_NE(nullptr, hal);
+ EXPECT_TRUE(hal->optional) << "If optional is not specified, it should be true by default";
+}
+
TEST_F(LibVintfTest, IsValid) {
EXPECT_TRUE(isValid(ManifestHal()));
@@ -2821,7 +2840,7 @@
xml =
"<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
- " <hal format=\"aidl\">\n"
+ " <hal format=\"aidl\" optional=\"false\">\n"
" <name>android.hardware.foo</name>\n"
" <interface>\n"
" <name>IFoo</name>\n"
@@ -2833,7 +2852,7 @@
xml =
"<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
- " <hal format=\"aidl\" updatable-via-apex=\"true\">\n"
+ " <hal format=\"aidl\" optional=\"false\" updatable-via-apex=\"true\">\n"
" <name>android.hardware.foo</name>\n"
" <interface>\n"
" <name>IFoo</name>\n"
diff --git a/test/vintf_object_tests.cpp b/test/vintf_object_tests.cpp
index 61351df..8793634 100644
--- a/test/vintf_object_tests.cpp
+++ b/test/vintf_object_tests.cpp
@@ -164,7 +164,7 @@
const std::string systemMatrixXml2 =
"<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
- " <hal format=\"hidl\">\n"
+ " <hal format=\"hidl\" optional=\"false\">\n"
" <name>android.hardware.foo</name>\n"
" <version>1.0</version>\n"
" </hal>\n"
@@ -2523,7 +2523,7 @@
// clang-format off
std::vector<std::string> matrices{
"<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
- " <hal format=\"hidl\">\n"
+ " <hal format=\"hidl\" optional=\"false\">\n"
" <name>android.hardware.hidl</name>\n"
" <version>1.0</version>\n"
" <interface>\n"
@@ -2531,7 +2531,7 @@
" <instance>default</instance>\n"
" </interface>\n"
" </hal>\n"
- " <hal format=\"aidl\">\n"
+ " <hal format=\"aidl\" optional=\"false\">\n"
" <name>android.hardware.aidl</name>\n"
" <interface>\n"
" <name>IAidl</name>\n"