Add device/fwk compatibility matrix to VintfObject.
For framework compatibility matrix, <sepolicy> sections
is injected in build time.
Test: libvintf_test
Test: adb shell vintf; matrices exist, compatible = true
Bug: 37321309
Bug: 36814503
Change-Id: I997b93456a261f0cdb85997ae88f4ac5a5f36ff3
diff --git a/VintfObject.cpp b/VintfObject.cpp
index 674031a..1ef6edc 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -34,6 +34,8 @@
static LockedUniquePtr<HalManifest> gDeviceManifest;
static LockedUniquePtr<HalManifest> gFrameworkManifest;
+static LockedUniquePtr<CompatibilityMatrix> gDeviceMatrix;
+static LockedUniquePtr<CompatibilityMatrix> gFrameworkMatrix;
static LockedUniquePtr<RuntimeInfo> gDeviceRuntimeInfo;
template <typename T, typename F>
@@ -65,6 +67,21 @@
"/system/manifest.xml"));
}
+
+// static
+const CompatibilityMatrix *VintfObject::GetDeviceCompatibilityMatrix(bool skipCache) {
+ return Get(&gDeviceMatrix, skipCache,
+ std::bind(&CompatibilityMatrix::fetchAllInformation, std::placeholders::_1,
+ "/vendor/compatibility_matrix.xml"));
+}
+
+// static
+const CompatibilityMatrix *VintfObject::GetFrameworkCompatibilityMatrix(bool skipCache) {
+ return Get(&gFrameworkMatrix, skipCache,
+ std::bind(&CompatibilityMatrix::fetchAllInformation, std::placeholders::_1,
+ "/system/compatibility_matrix.xml"));
+}
+
// static
const RuntimeInfo *VintfObject::GetRuntimeInfo(bool skipCache) {
return Get(&gDeviceRuntimeInfo, skipCache,