upload tizen1.0 source
[framework/web/wrt-plugins-common.git] / src / modules / tizen / PluginManager / PluginManager.cpp
index 53dae94..27af1fe 100644 (file)
@@ -46,13 +46,16 @@ namespace PluginManager {
 
 PluginManager::PluginManager(int widgetHandle,
                              const string &objectUri,
+                             JSObjectRef object,
                              JSContextRef context) :
     m_widgetHandle(widgetHandle),
     m_objectUri(GLOBAL_OBJECT_NAME),
+    m_shortUri(objectUri),
+    m_objectInstance(object),
     m_context(context)
 {
     m_objectUri.append(SEPARATOR).append(objectUri);
-    WrtDB::WrtDatabase::attachToThread();
+    WrtDB::WrtDatabase::attachToThreadRO();
 }
 
 PluginManager::~PluginManager()
@@ -84,7 +87,6 @@ bool PluginManager::loadChild(const string &name) const
         return false;
     }
 
-    // Create dao
     WrtDB::DbWidgetFeatureSet features;
     Try
     {
@@ -99,10 +101,22 @@ bool PluginManager::loadChild(const string &name) const
         return false;
     }
 
-    FOREACH (it, features) {
-        if (it->pluginId == handle) {
-            PluginLogicSingleton::Instance().addSpecialFeatureToSession(*it);
-            return true;
+    //check does plugin with feature was requested
+    FOREACH (it, features)
+    {
+        if (it->pluginId == handle)
+        {
+            if(it->rejected)
+            {
+                LogWarning("Feature rejected by ACE");
+                continue;
+            }
+
+            PluginLogic::JavaScriptObject jsObject = {m_objectInstance,
+                                                      m_shortUri};
+
+            return PluginLogicSingleton::Instance().loadPluginOnDemand(
+                handle, jsObject);
         }
     }
     LogError("Plugin not loaded");