Fix metadata plugin parser matching logic 07/134807/1 accepted/tizen/3.0/common/20170620.123133 accepted/tizen/3.0/ivi/20170620.101928 accepted/tizen/3.0/mobile/20170620.101923 accepted/tizen/3.0/tv/20170620.101935 accepted/tizen/3.0/wearable/20170620.101937 submit/tizen_3.0/20170620.081913
authorSangyoon Jang <jeremy.jang@samsung.com>
Tue, 20 Jun 2017 05:33:09 +0000 (14:33 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Tue, 20 Jun 2017 05:41:25 +0000 (05:41 +0000)
Change-Id: I0cc3fc2b0cba9afc5438d80731dfcf278b5a8506
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
(cherry picked from commit 95c5b8a89086acc745cdb1a4d5e568fb22beee45)

src/common/plugins/plugin_manager.cc

index e260bfc93efbe0e5305d50c06e186a5c21b8c66a..0607995c333be73f7f6c849d0f775816fb4fd11d 100644 (file)
 #include "common/plugins/types/tag_plugin.h"
 #include "common/utils/glist_range.h"
 
+namespace {
+
+bool IsSubKey(const std::string& subkey, const std::string& key) {
+  if (subkey.find(key) != 0)
+    return false;
+  if (subkey.size() != key.size() && subkey.at(key.size()) != '/')
+    return false;
+  return true;
+}
+
+}  // namespace
+
 namespace common_installer {
 
 bool PluginManager::GenerateUnknownTagList(
@@ -78,7 +90,7 @@ bool PluginManager::LoadPlugins() {
       for (application_x* app : GListRange<application_x*>(
            manifest_->application)) {
         for (metadata_x* meta : GListRange<metadata_x*>(app->metadata)) {
-          if (std::string(meta->key).compare(plugin_info->name()) == 0) {
+          if (IsSubKey(meta->key, plugin_info->name())) {
             plugin = factory.CreatePluginByPluginInfo(*plugin_info);
             if (!plugin) {
               LOG(WARNING) << "Failed to load plugin: " << plugin_info->path()