}
WrtDB::DbWidgetFeatureSet features;
+ WrtDB::WidgetType widgetType;
Try
{
WrtDB::WidgetDAOReadOnly dao(m_widgetHandle);
features = dao.getFeaturesList();
+ widgetType = dao.getWidgetType();
}
Catch(WrtDB::WidgetDAOReadOnly::Exception::Base)
{
return false;
}
+ if (widgetType == WrtDB::APP_TYPE_TIZENWEBAPP) {
+ JavaScriptObject jsObject = {m_objectInstance,
+ m_shortUri};
+ return PluginLogicSingleton::Instance().loadPluginOnDemand(
+ handle, jsObject, const_cast<JSGlobalContextRef>(m_context));
+ }
+
//check does plugin with feature was requested
FOREACH (it, features)
{
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 installRequestedFeatures();
//returns true if success or false if failed
LogInfo("Standard widget features installed.");
}
+void JSPageSession::Impl::installRootFeatures()
+{
+ 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.");
+}
+
bool JSPageSession::Impl::installPlugin(PluginModelPtr plugin)
{
Assert(plugin && "Plugin Model is NULL");
// return;
// }
//
- auto plugin = m_pluginsSupport->getPluginModelById(pluginHandle);
- if (!plugin) {
- LogError("Failed to load plugin. plugin handle: " << pluginHandle);
- return false;
- }
-
- return installPluginOnDemand(plugin,parentObject,context);
+// auto plugin = m_pluginsSupport->getPluginModelById(pluginHandle);
+// if (!plugin) {
+// LogError("Failed to load plugin. plugin handle: " << pluginHandle);
+// return false;
+// }
+ m_pluginsSupport->registerPluginModel(pluginHandle);
+ return installPluginOnDemand(
+ m_pluginsSupport->getPluginModelById(pluginHandle),
+ parentObject,
+ context);
}
bool JSPageSession::Impl::installPluginOnDemand(PluginModelPtr plugin,
// Register standard features
installStandardFeatures();
+ WidgetDAOReadOnly dao(m_widgetHandle);
+ WidgetType appType = dao.getWidgetType();
+ if (appType == WrtDB::APP_TYPE_TIZENWEBAPP) {
+ installRootFeatures();
+ }
// Register special features
installRequestedFeatures();
#include <fstream>
#include <dpl/foreach.h>
+#include <dpl/wrt-dao-ro/feature_dao_read_only.h>
#include <dpl/wrt-dao-ro/global_config.h>
namespace {
const char *STANDARD_FEATURES_LIST_FILE = "standard-features-list";
+const char *TIZEN_ROOT_FEATURES = "http://tizen.org/privilege/tizen";
}
using namespace WrtDB;
m_initialized = true;
}
+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());
+ } else {
+ LogDebug("Not defined app type");
+ }
+ m_initialized = true;
+}
+
void PluginContainerSupport::registerFeatureModel(FeatureHandle handle, FeatureData* data, DeviceCapList deviceCapabilities)
{
LogDebug("Analyzing feature: " << handle);
void readStandardFeaturesList();
// Plugin models
- void registerPluginModel(WrtDB::DbPluginHandle handle);
typedef std::multimap<WrtDB::FeatureHandle, std::string> DeviceCapList;
void registerFeatureModel(WrtDB::FeatureHandle handle, WrtDB::FeatureData* data, DeviceCapList deviceCapabilities);
PluginContainerSupport();
bool isInitialized() { return m_initialized; }
+ void registerPluginModel(WrtDB::DbPluginHandle handle);
std::list<std::string> getAllowedFeatures(int widgetHandle) const;
void readAllowedPlugins(int widgetHandle);
-
+ void readRootPlugins(int widgetHandle);
FeaturesList getStandardFeatures() const;
PluginsList getStandardPlugins() const;
{
LogInfo("Starting widget session...");
- if (!m_pluginsSupport->isInitialized())
+ if (!m_pluginsSupport->isInitialized()) {
+ m_pluginsSupport->readRootPlugins(widgetHandle);
m_pluginsSupport->readAllowedPlugins(widgetHandle);
-
+ }
auto sessionIt = m_sessions.find(context);
// Check if corresponding session if not already created