X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fplugin-loading%2Fplugin_container_support.cpp;h=a9cf51651651f12cd44b8a990140a3d19145337f;hb=475495fb73670ce699c29e02a2b23c5ad0cc326f;hp=5565e96bcf8993c2221bfe2073ae2d80cff8f7a1;hpb=825e7e9f62b3bf8b85ab63b227f5e5f17a0bf0b4;p=platform%2Fframework%2Fweb%2Fwrt-plugins-common.git diff --git a/src/plugin-loading/plugin_container_support.cpp b/src/plugin-loading/plugin_container_support.cpp index 5565e96..a9cf516 100644 --- a/src/plugin-loading/plugin_container_support.cpp +++ b/src/plugin-loading/plugin_container_support.cpp @@ -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("");