#include <dpl/wrt-dao-ro/plugin_dao_read_only.h>
#include <dpl/wrt-dao-ro/WrtDatabase.h>
#include <plugin_logic.h>
+#include <js_types.h>
#include <dpl/wrt-dao-ro/common_dao_types.h>
#include <Commons/Exception.h>
#include <CommonsJavaScript/Converter.h>
#include <dpl/log/log.h>
#include <dpl/foreach.h>
+
using namespace std;
namespace {
PluginManager::PluginManager(int widgetHandle,
const string &objectUri,
+ JSObjectRef object,
JSContextRef context) :
m_widgetHandle(widgetHandle),
+ m_objectInstance(object),
m_objectUri(GLOBAL_OBJECT_NAME),
+ m_shortUri(objectUri),
m_context(context)
{
m_objectUri.append(SEPARATOR).append(objectUri);
- WrtDB::WrtDatabase::attachToThread();
+ WrtDB::WrtDatabase::attachToThreadRO();
}
PluginManager::~PluginManager()
return false;
}
- // Create dao
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;
}
- FOREACH (it, features) {
- if (it->pluginId == handle) {
- PluginLogicSingleton::Instance().addSpecialFeatureToSession(*it);
- return true;
+ 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)
+ {
+ if (it->pluginId == handle)
+ {
+ if(it->rejected)
+ {
+ LogWarning("Feature rejected by ACE");
+ continue;
+ }
+
+ JavaScriptObject jsObject = {m_objectInstance,
+ m_shortUri};
+
+ return PluginLogicSingleton::Instance().loadPluginOnDemand(
+ handle, jsObject, const_cast<JSGlobalContextRef>(m_context));
}
}
LogError("Plugin not loaded");