Modification the root plugins register function
[platform/framework/web/wrt-plugins-common.git] / src / plugin-loading / plugin_container_support.cpp
index 5565e96..a9cf516 100644 (file)
@@ -29,7 +29,6 @@
 
 namespace {
 const char *STANDARD_FEATURES_LIST_FILE = "standard-features-list";
-const char *TIZEN_ROOT_FEATURES = "http://tizen.org/privilege/tizen";
 }
 
 using namespace WrtDB;
@@ -40,6 +39,9 @@ PluginContainerSupport::PluginContainerSupport() : m_initialized(false)
 {
     // Reading standard features list from file
     readStandardFeaturesList();
+
+    // Reading root plugins list from so files
+    readRootPluginsList();
 }
 
 PluginContainerSupport::~PluginContainerSupport()
@@ -112,8 +114,11 @@ void PluginContainerSupport::readRootPlugins(int widgetHandle)
     WidgetDAOReadOnly dao(widgetHandle);
     WidgetType appType = dao.getWidgetType();
     if (appType == WrtDB::APP_TYPE_TIZENWEBAPP) {
-        WrtDB::FeatureDAOReadOnly dao(TIZEN_ROOT_FEATURES);
-        registerPluginModel(dao.GetPluginHandle());
+         FOREACH(it_rootPluginHandle, m_rootPluginsList)
+        {
+            LogDebug("*it_rootPluginHandle: " << *it_rootPluginHandle);
+            registerPluginModel(*it_rootPluginHandle);
+        }
     } else {
         LogDebug("Not defined app type");
     }
@@ -204,6 +209,25 @@ void PluginContainerSupport::readStandardFeaturesList()
     standardFeatureFile.close();
 }
 
+void PluginContainerSupport::readRootPluginsList()
+{
+    LogDebug("Reading root plugins list from so files...");
+
+    PluginHandleList pluginHandleList =
+        PluginDAOReadOnly::getPluginHandleList();
+
+    FOREACH(it_pluginHandle, pluginHandleList)
+    {
+        PluginDAOReadOnly pluginDao(*it_pluginHandle);
+        PluginHandleSetPtr retDependencies;
+        retDependencies = pluginDao.getLibraryDependencies();
+        if (retDependencies->empty()) {
+            LogDebug("Root plugin Handle: " << *it_pluginHandle);
+            m_rootPluginsList.push_back(*it_pluginHandle);
+        }
+    }
+}
+
 FeatureModelPtr
 PluginContainerSupport::getFeatureModel(const std::string &name) const
 {
@@ -296,6 +320,25 @@ PluginContainerSupport::getStandardPlugins() const
 }
 
 PluginContainerSupport::PluginsList
+PluginContainerSupport::getRootPlugins() const
+{
+    PluginsList plugins;
+
+    FOREACH(it, m_rootPluginsList)
+    {
+        PluginModelPtr plugin = getPluginModelById(*it);
+        if (!plugin) {
+            LogError("PluginModel not found");
+            continue;
+        }
+
+        plugins.push_back(plugin);
+    }
+
+    return plugins;
+}
+
+PluginContainerSupport::PluginsList
 PluginContainerSupport::getPluginsList() const
 {
     LogDebug("");