namespace {
const char *LIBRARY_PATH_SEPARATOR = "/";
-const char *TIZEN_ROOT_FEATURES = "http://tizen.org/privilege/tizen";
}
class JSPageSession::Impl
void loadInjectedJavaScript();
void installStandardFeatures();
- void installRootFeatures();
+ void installRootPlugins();
void installRequestedFeatures();
//returns true if success or false if failed
LogInfo("Standard widget features installed.");
}
-void JSPageSession::Impl::installRootFeatures()
+void JSPageSession::Impl::installRootPlugins()
{
- LogInfo("Installing requested widget features...");
- WrtDB::FeatureDAOReadOnly dao(TIZEN_ROOT_FEATURES);
- auto plugin = m_pluginsSupport->getPluginModelById(dao.GetPluginHandle());
- installPlugin(plugin);
- LogInfo("requested root feature installed.");
+ LogInfo("Installing requested root plugins...");
+
+ PluginContainerSupport::PluginsList rootPlugins =
+ m_pluginsSupport->getRootPlugins();
+ FOREACH(it, rootPlugins)
+ {
+ installPlugin(*it);
+ }
+
+ LogInfo("requested root plugins installed.");
}
bool JSPageSession::Impl::installPlugin(PluginModelPtr plugin)
WidgetDAOReadOnly dao(m_widgetHandle);
WidgetType appType = dao.getWidgetType();
if (appType == WrtDB::APP_TYPE_TIZENWEBAPP) {
- installRootFeatures();
+ installRootPlugins();
}
// Register special features
installRequestedFeatures();
namespace {
const char *STANDARD_FEATURES_LIST_FILE = "standard-features-list";
-const char *TIZEN_ROOT_FEATURES = "http://tizen.org/privilege/tizen";
}
using namespace WrtDB;
{
// Reading standard features list from file
readStandardFeaturesList();
+
+ // Reading root plugins list from so files
+ readRootPluginsList();
}
PluginContainerSupport::~PluginContainerSupport()
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");
}
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
{
}
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("");
StandardFeatureList m_standardFeatureList;
+ WrtDB::PluginHandleList m_rootPluginsList;
+
PluginModelsContainer m_pluginModels;
FeatureModelContainer m_featureModels;
private:
// Reading
void readStandardFeaturesList();
+ void readRootPluginsList();
// Plugin models
typedef std::multimap<WrtDB::FeatureHandle, std::string> DeviceCapList;
void readRootPlugins(int widgetHandle);
FeaturesList getStandardFeatures() const;
PluginsList getStandardPlugins() const;
+ PluginsList getRootPlugins() const;
PluginsList getPluginsList() const;
PluginModelPtr getPluginForFeature(const std::string& featureName);