Vintf.cpp null checks for manifests.
am: 11d34e2141
Change-Id: I507e432bb730eca1d9e3550b921b80aa82bb099c
diff --git a/Vintf.cpp b/Vintf.cpp
index fca4775..164eb42 100644
--- a/Vintf.cpp
+++ b/Vintf.cpp
@@ -71,6 +71,21 @@
return vintf::Transport::EMPTY;
}
+static void insertManifestInstances(const FQName& fqName,
+ const std::shared_ptr<const vintf::HalManifest>& manifest,
+ const std::string& manifestType,
+ std::set<std::string>* toSet) {
+ if (manifest == nullptr) {
+ LOG(ERROR) << "Device is missing " << manifestType << " manifest.";
+ return;
+ }
+
+ std::set<std::string> manifestSet = manifest->getHidlInstances(
+ fqName.package(), fqName.getVersion(), fqName.name());
+
+ toSet->insert(manifestSet.begin(), manifestSet.end());
+}
+
std::set<std::string> getInstances(const std::string& interfaceName) {
FQName fqName;
if (!FQName::parse(interfaceName, &fqName) || !fqName.isFullyQualified() ||
@@ -82,16 +97,10 @@
std::set<std::string> ret;
- auto deviceManifest = vintf::VintfObject::GetDeviceHalManifest();
- auto frameworkManifest = vintf::VintfObject::GetFrameworkHalManifest();
-
- std::set<std::string> deviceSet = deviceManifest->getHidlInstances(
- fqName.package(), fqName.getVersion(), fqName.name());
- std::set<std::string> frameworkSet = frameworkManifest->getHidlInstances(
- fqName.package(), fqName.getVersion(), fqName.name());
-
- ret.insert(deviceSet.begin(), deviceSet.end());
- ret.insert(frameworkSet.begin(), frameworkSet.end());
+ insertManifestInstances(
+ fqName, vintf::VintfObject::GetDeviceHalManifest(), "device", &ret);
+ insertManifestInstances(
+ fqName, vintf::VintfObject::GetFrameworkHalManifest(), "framework", &ret);
return ret;
}