+bool CategoryPlugin::ExecutePlugin(const std::string& name,
+ const char* pkgid, const char* appid, GList* category_list) {
+ int result = 0;
+ Exec(name, &result, pkgid, appid, category_list);
+ if (result) {
+ LOG(ERROR) << "Function: " << name << " of plugin "
+ << plugin_info_.path() << " failed";
+ return false;
+ }
+ return true;
+}
+
+bool CategoryPlugin::LoadPluginInfo(manifest_x* manifest) {
+ if (pkgmgrinfo_plugininfo_foreach_plugininfo(manifest->package,
+ CategoryPlugin::kType,
+ plugin_info_.name().c_str(),
+ [](const char*, const char* appid, const char*,
+ const char*, void* user_data) -> int {
+ auto* set = static_cast<std::set<std::string>*>(user_data);
+ set->emplace(std::string(appid));
+ return PMINFO_R_OK;
+ },
+ &appid_set_) != PMINFO_R_OK) {
+ LOG(ERROR) << "Failed to get previous execution info";
+ return false;
+ }
+ return true;
+}
+