}
inline bool CheckAppFilters(pkgmgrinfo_filter_x* filter,
- const std::shared_ptr<application_x>& info,
+ const std::shared_ptr<application_x>& app_info,
+ const std::shared_ptr<package_x>& pkg_info,
const std::unordered_map<std::string, std::string>& metadata_map) {
for (auto* it = filter->list; it != nullptr; it = g_slist_next(it)) {
auto node = reinterpret_cast<pkgmgrinfo_node_x*>(it->data);
auto* checker = FilterCheckerProvider::GetInst().
GetAppFilterChecker(node->prop);
- if (!checker->CheckFilter(node, info.get()))
+ if (!checker->CheckFilter(node, app_info.get(), pkg_info.get()))
return false;
}
bool pass = true;
if (!metadata_map.empty())
- pass = CheckMetadataFilter(info->metadata, metadata_map);
+ pass = CheckMetadataFilter(app_info->metadata, metadata_map);
return pass;
}
+std::shared_ptr<package_x> DBHandleProvider::GetPackageByApp(
+ const char* appid) {
+ auto it = pkg_map_.find(appid);
+ if (it == pkg_map_.end())
+ return nullptr;
+
+ return it->second;
+}
+
std::vector<std::shared_ptr<application_x>> DBHandleProvider::GetApplications(
pid_t pid, pkgmgrinfo_filter_x* filter,
const std::string& app) {
if (app.empty()) {
for (auto& info : app_map_) {
- if (CheckAppFilters(filter, info.second, metadata_map))
+ if (CheckAppFilters(filter, info.second,
+ GetPackageByApp(info.second->package), metadata_map))
ret.push_back(info.second);
}
} else {
auto map_it = app_map_.find(app);
if (map_it != app_map_.end() &&
- CheckAppFilters(filter, map_it->second, metadata_map))
+ CheckAppFilters(filter, map_it->second,
+ GetPackageByApp(map_it->second->package), metadata_map))
ret.push_back(map_it->second);
}