[Release] wrt-plugins-common_0.3.112
[platform/framework/web/wrt-plugins-common.git] / src / plugin-loading / explorer.cpp
index bbb22d4..a36aecc 100644 (file)
 
 #include <algorithm>
 #include <dpl/foreach.h>
-#include <dpl/log/log.h>
+#include <dpl/log/secure_log.h>
 #include "explorer.h"
 #include "plugin_property_support.h"
 
-// JS overlay 
-#include <js_overlay_support.h>
+// JS overlay
 #include <js_overlay_types.h>
-#include <js_overlay_addEventListener.h>
-#include <TizenServiceEvent/ITizenServiceEvent.h>
-#include <TizenServiceEvent/TizenServiceEvent.h>
-#include <SoftKeyboardChangeEvent/ISoftKeyboardChangeEvent.h>
-#include <SoftKeyboardChangeEvent/SoftKeyboardChangeEvent.h>
-#include <JSClass/JSTizenServiceEvent.h>
-#include <JSClass/JSSoftKeyboardChangeEvent.h>
-
 
 namespace {
 //const char* SEPARATOR = ".";
@@ -52,53 +43,38 @@ Explorer::Explorer(JSGlobalContextRef context) :
     m_context(context)
 {
     if (!context) {
-        LogError("Context is NULL");
+        _W("Context is NULL");
         return;
     }
 
     m_globalObject =
         JavaScriptInterfaceSingleton::Instance().getGlobalObject(context);
 
-    LogDebug("Register main frame");
     //register main frame;
     m_iframeSupport.registerIframe(m_globalObject);
 
     m_propertySupport.reset(new WindowPropertySupport(m_context));
-
-    // initialization for use of custom event
-    if (!AddEventListenerSupport::isInitialized())
-    {
-        LogInfo("initialization for use of custom event");
-        AddEventListenerSupport::initialize(context);
-    }
 }
 
 Explorer::~Explorer()
 {
-    // deinitialization for use of custom event
-    if (AddEventListenerSupport::isInitialized()) {
-        LogInfo("deinitialization for use of custom event");
-        AddEventListenerSupport::deinitialize();
-    }
 }
-    
+
 JSObjectPtr Explorer::getJSObjectProperty(const std::string& propertyName,
-                                        JSObjectPtr object)
+                                          JSObjectPtr object)
 {
-    LogDebug("Get object property " << propertyName);
     return JavaScriptInterfaceSingleton::Instance().getJSObjectProperty(
-            m_context, object, propertyName);
+               m_context, object, propertyName);
 }
 
 JSObjectPtr Explorer::getProperty(
     const string& requestedProperty,
-    JSObjectPtr   providedObject)
+    JSObjectPtr providedObject)
 {
-    LogDebug("Requested Property: " << requestedProperty);
+    _D("Requested Property: %s", requestedProperty.c_str());
 
-    if(!providedObject)
-    {
-        LogError("Provided object is empty");
+    if (!providedObject) {
+        _W("Provided object is empty");
         return JSObjectPtr();
     }
 
@@ -106,28 +82,24 @@ JSObjectPtr Explorer::getProperty(
     std::string currentPropertyRequested = requestedProperty;
     JSObjectPtr currentObject = providedObject;
 
-    while(true)
-    {
+    while (true) {
         auto pos = currentPropertyRequested.find(".");
-        if (pos == string::npos)
-        {
+        if (pos == string::npos) {
             return getJSObjectProperty(currentPropertyRequested, currentObject);
         }
 
         //check if requested object has child
-        currentObjectName = currentPropertyRequested.substr(0,pos);
+        currentObjectName = currentPropertyRequested.substr(0, pos);
 
-        if (currentPropertyRequested.size() <= pos+1)
-        {
-            LogError("Wrong name of requested property");
+        if (currentPropertyRequested.size() <= pos + 1) {
+            _W("Wrong name of requested property");
             return JSObjectPtr();
         }
-        currentPropertyRequested = currentPropertyRequested.substr(pos+1);
+        currentPropertyRequested = currentPropertyRequested.substr(pos + 1);
 
         currentObject = getJSObjectProperty(currentObjectName, currentObject);
-        if(!currentObject)
-        {
-            LogError("Failed to get property: " << currentObjectName);
+        if (!currentObject) {
+            _W("Failed to get property: %s", currentObjectName.c_str());
             return JSObjectPtr();
         }
     }
@@ -136,97 +108,77 @@ JSObjectPtr Explorer::getProperty(
 bool Explorer::registerObject(const JSObjectDeclarationPtr& declaration,
                               JSGlobalContextRef context)
 {
-    LogDebug("Register to global object");
-
     bool retValue;
 
-    if (declaration->getParentName() == GLOBAL_OBJECT_NAME)
-    {
-        LogDebug("Connect to Global object");
+    if (declaration->getParentName() == GLOBAL_OBJECT_NAME) {
         retValue = register_(declaration, m_globalObject, context);
-    }
-    else //PIM support
-    {
-        LogDebug("Connect to NOT global object");
+    } else { //PIM support
         //it should be master object name
         string masterName = declaration->getParentName();
         auto pos = masterName.find(".");
-        if (string::npos != pos)
-        {
-            LogError("ParentName not allowed");
+        if (string::npos != pos) {
+            _W("ParentName not allowed");
             return false;
         }
         auto masterObject = getJSObjectProperty(masterName, m_globalObject);
-        if (masterObject->getObject() == 0)
-        {
+        if (masterObject->getObject() == 0) {
             return false;
         }
-        retValue = registerObject(declaration, masterName, masterObject, context);
+        retValue = registerObject(declaration,
+                                  masterName,
+                                  masterObject,
+                                  context);
     }
 
     if (declaration->checkIframesSupported()) {
-        LogDebug("Iframe supported");
         m_iframeSupport.registerDeclaration(declaration);
-//        m_iframeSupport.invokeCallbackForMainFrame(m_context,
-//                                                   declaration,
-//                                                   newObject);
-    }
-    else {
-        LogDebug("Iframe NOT supported");
+        //        m_iframeSupport.invokeCallbackForMainFrame(m_context,
+        //                                                   declaration,
+        //                                                   newObject);
     }
 
     return retValue;
 }
 
-
 bool Explorer::registerObject(const JSObjectDeclarationPtr& declaration,
-                               const std::string& providedObjectName,
-                               JSObjectPtr providedObject,
-                               JSGlobalContextRef context)
+                              const std::string& providedObjectName,
+                              JSObjectPtr providedObject,
+                              JSGlobalContextRef context)
 {
-    LogDebug("Register object. Provided object name: '" << providedObjectName
-             << "', registration of: '"  <<  declaration->getName() << "'");
-
+    _D("%s <- %s", providedObjectName.c_str(), declaration->getName().c_str());
     std::string fullParentName = declaration->getParentName();
-    LogDebug("Parent name: " << declaration->getParentName());
 
-    if(fullParentName == providedObjectName)
-    {
-        LogDebug("Provided object match equaly to requested parent");
+    if (fullParentName == providedObjectName) {
+        \r_D("Provided object was matched!!");
         return register_(declaration, providedObject, context);
     }
 
     //check if object exists in fullParentName
     auto pos = fullParentName.find(providedObjectName);
-    if(pos == string::npos)
-    {
-        LogError("Object: " << declaration->getName()
-                 << " should be child of: " << declaration->getParentName()
-                 << " but you provided object: " << providedObjectName);
-
+    if (pos == string::npos) {
+        _W("Object: %s should be child of: %s but you provided object: %s",
+           declaration->getName().c_str(),
+           declaration->getParentName().c_str(),
+           providedObjectName.c_str());
         return false;
     }
 
-    if (fullParentName.size() <= pos+providedObjectName.size()+1)
-    {
-        LogError("Invalid object name");
+    if (fullParentName.size() <= pos + providedObjectName.size() + 1) {
+        _W("Invalid object name");
         return false;
     }
 
     auto currentRequesteProperty =
-        fullParentName.substr(pos+providedObjectName.size()+1);
-
+        fullParentName.substr(pos + providedObjectName.size() + 1);
 
     JSObjectPtr jsObject = getProperty(
-        currentRequesteProperty, providedObject);
-
-    if(!jsObject->getObject())
-    {
-        LogError("Object: '" << declaration->getName()
-                 << "' should be child of: '" << declaration->getParentName()
-                 << "'. you provided object: '" << providedObjectName
-                 << "' but object is null");
+            currentRequesteProperty, providedObject);
 
+    if (!jsObject->getObject()) {
+        _W("Object: %s should be child of: %s. you provided object: %s but object is null",
+           declaration->getName().c_str(),
+           declaration->getParentName().c_str(),
+           providedObjectName.c_str());
         return false;
     }
 
@@ -234,59 +186,25 @@ bool Explorer::registerObject(const JSObjectDeclarationPtr& declaration,
 }
 
 bool Explorer::register_(const JSObjectDeclarationPtr& declaration,
-                              JSObjectPtr parent,
-                              JSGlobalContextRef context)
+                         JSObjectPtr parent,
+                         JSGlobalContextRef context)
 {
-    LogInfo("Registration object: " << declaration->getParentName() <<
-            "<-" << declaration->getName());
-
+    _D("Registration object: %s <- %s",
+       declaration->getParentName().c_str(),
+       declaration->getName().c_str());
     Assert(parent && "parent object is NULL");
 
     typedef JSObjectDeclaration::Options JO;
 
-    JSGlobalContextRef gContext = (context==NULL)?m_context:context;
-    JSObjectPtr newObject;
-
+    JSGlobalContextRef gContext = (context == NULL) ? m_context : context;
     JSObjectPtr objectInstance = JavaScriptInterfaceSingleton::Instance().
-        createObject(gContext,declaration);
-
-    //function creation
-    if (declaration->getOptions() &&
-        declaration->getOptions()->getType() == JO::ClassType::Function)
-    {
-        LogDebug("Loading function object " << declaration->getName());
-
-        auto type = declaration->getOptions()->getIframeOverlay();
-        if (JO::IFrameOverlay::OverlayedBeforeOriginal == type)
-        {
-            LogDebug("Create overlayed function");
-            JSObjectPtr original =
-                JavaScriptInterfaceSingleton::Instance().
-                getJSObjectProperty(gContext,
-                                    parent,
-                                    declaration->getName());
-            newObject = JSOverlaySupport::
-                createWrappedFunction(gContext,
-                                      original,
-                                      objectInstance,
-                                      declaration->getName());
-        }
-        else
-        {
-            LogDebug("create normal function");
-            newObject = objectInstance;
-        }
-    }
-    else //object creation
-    {
-        newObject = objectInstance;
-    }
+            createObject(gContext, declaration);
 
     JavaScriptInterfaceSingleton::Instance().setObjectProperty(
-            gContext,
+        gContext,
         parent,
         declaration->getName(),
-        newObject);
+        objectInstance);
 
     //notice
     if (declaration->getOptions() &&
@@ -298,57 +216,47 @@ bool Explorer::register_(const JSObjectDeclarationPtr& declaration,
                                                   objectInstance->getObject());
     }
 
-
     return true;
 }
 
-void Explorer::registerObjectIntoIframe(const JSObjectDeclarationPtr& declaration,
-                                        JSObjectPtr frameObject,
-                                        JSGlobalContextRef context)
+void Explorer::registerObjectIntoIframe(
+    const JSObjectDeclarationPtr& declaration,
+    JSObjectPtr frameObject,
+    JSGlobalContextRef context)
 {
-    if (declaration->getParentName() == GLOBAL_OBJECT_NAME)
-    {
-        LogDebug("Connect to Global object of IFRAME");
+    if (declaration->getParentName() == GLOBAL_OBJECT_NAME) {
+        _D("Connect to Global object of IFRAME");
         register_(declaration, frameObject, context);
         return;
     }
 
     //PIM SUPPORT
     {
-        LogWarning("Connect to NOT global object of IFRAME");
+        _D("Connect to NOT global object of IFRAME");
         //it should be master object name
         string masterName = declaration->getParentName();
         auto pos = masterName.find(".");
-        if (string::npos != pos)
-        {
-            LogError("ParentName not allowed");
+        if (string::npos != pos) {
+            _W("ParentName not allowed");
             return;
         }
         auto masterObject = getJSObjectProperty(masterName, frameObject);
-        if (!masterObject->getObject())
-        {
-            LogError("Object not exist in frame");
+        if (!masterObject->getObject()) {
+            _W("Object not exist in frame");
             return;
         }
         register_(declaration, masterObject, context);
     }
 }
 
-
 void Explorer::loadFrame(JSGlobalContextRef context)
 {
-    LogDebug("Frame attached");
-
     JSObjectPtr frameObject =
         JavaScriptInterfaceSingleton::Instance().getGlobalObject(context);
 
-    LogDebug("Register main frame");
-    //register main frame;
-
-    if(frameObject->getObject() == m_globalObject->getObject())
-    {
+    if (frameObject->getObject() == m_globalObject->getObject()) {
         // Main page was already loaded from constructor
-        LogDebug("Main page loaded");
+        _W("Main page loaded");
         return;
     }
 
@@ -358,40 +266,29 @@ void Explorer::loadFrame(JSGlobalContextRef context)
 
     FOREACH(object, iframeObjects)
     {
-        LogDebug("Register object: " << (*object)->getName() );
-
+        _D("Register object: %s", (*object)->getName().c_str());
         registerObjectIntoIframe(*object, frameObject, context);
     }
 }
 
 void Explorer::unloadFrame(JSGlobalContextRef context)
 {
-    LogDebug("Frame detached");
-
     JSObjectPtr frameObject =
         JavaScriptInterfaceSingleton::Instance().getGlobalObject(context);
-
     m_iframeSupport.unregisterIframe(frameObject);
 }
 
 void Explorer::removePluginsFromIframes()
 {
-    LogDebug("Remove plugins from iframes");
-
-    if (m_iframeSupport.hasIframes())
-    {
-        LogDebug("Removing iframes");
+    if (m_iframeSupport.hasIframes()) {
         JavaScriptInterfaceSingleton::Instance().removeIframes(m_context);
     }
 }
 
 void Explorer::deregisterObject(const JSObjectDeclarationPtr& declaration)
 {
-    LogDebug("Deregister object " << declaration->getName());
-
-    if (GLOBAL_OBJECT_NAME != declaration->getParentName())
-    {
-        LogWarning("Ignored remove property " << declaration->getName());
+    if (GLOBAL_OBJECT_NAME != declaration->getParentName()) {
+        _W("Ignored remove property %s", declaration->getName().c_str());
         return;
     }
 
@@ -403,12 +300,12 @@ void Explorer::deregisterObject(const JSObjectDeclarationPtr& declaration)
 
 void Explorer::cleanIframesData()
 {
-    LogDebug("Clean iframes data");
     m_iframeSupport.clean();
 }
 
-void Explorer::callEventListeners(CustomEventType eventType, void* data)
+void Explorer::callEventListeners(CustomEventType /*eventType*/, void* /*data*/)
 {
+#if 0 // deprecated
     using namespace WrtPlugins::Tizen;
     // get iframe objects from javascript global context
     JavaScriptInterface::ObjectsListPtr frameLists =
@@ -421,7 +318,8 @@ void Explorer::callEventListeners(CustomEventType eventType, void* data)
     if (eventType == ServiceCustomEvent) {
         using namespace WrtDeviceApis::TizenServiceEvent::Api;
         // set user data of js callback function for 'appservice' js event
-        ITizenServiceEventPtr event = ITizenServiceEventPtr(new TizenServiceEvent());
+        ITizenServiceEventPtr event = ITizenServiceEventPtr(
+                new TizenServiceEvent());
         event->setScale(m_propertySupport->getScale());
         event->setBundle(m_propertySupport->getBundle());
 
@@ -433,10 +331,11 @@ void Explorer::callEventListeners(CustomEventType eventType, void* data)
             auto eventPriv =
                 new JSTizenServiceEventPrivateObject(m_context, event);
             JSObjectRef eventObject =
-                JSObjectMake(m_context, JSTizenServiceEvent::getClassRef(), eventPriv);
+                JSObjectMake(m_context,
+                             JSTizenServiceEvent::getClassRef(), eventPriv);
 
             AddEventListenerSupport::CallCustomEventListenersFromIFrame(
-                    frame, eventType, eventObject);
+                frame, eventType, eventObject);
         }
     } else if (eventType == SoftKeyboardChangeCustomEvent) {
         using namespace WrtDeviceApis::SoftKeyboardChangeEvent::Api;
@@ -445,17 +344,20 @@ void Explorer::callEventListeners(CustomEventType eventType, void* data)
             return;
         }
 
-        // set user data of js callback function for 'softkeyboardchange' js event
-        SoftKeyboardChangeArgs* args = static_cast<SoftKeyboardChangeArgs *>(data);
+        // set user data of js callback function for 'softkeyboardchange' js
+        // event
+        SoftKeyboardChangeArgs* args =
+            static_cast<SoftKeyboardChangeArgs *>(data);
         ISoftKeyboardChangeEventPtr event =
             ISoftKeyboardChangeEventPtr(
-                    new SoftKeyboardChangeEvent(
-                        args->state,
-                        args->width,
-                        args->height));
-        LogInfo("softkeyboard event's state: " << args->state);
-
-        // call js callback function for 'softkeyboardchange' js event on each frame
+                new SoftKeyboardChangeEvent(
+                    args->state,
+                    args->width,
+                    args->height));
+        LogDebug("softkeyboard event's state: " << args->state);
+
+        // call js callback function for 'softkeyboardchange' js event on each
+        // frame
         FOREACH(it, *frameLists)
         {
             JSObjectRef frame = static_cast<JSObjectRef>((*it).Get()->getObject());
@@ -464,18 +366,18 @@ void Explorer::callEventListeners(CustomEventType eventType, void* data)
                 new JSSoftKeyboardChangeEventPrivateObject(m_context, event);
             JSObjectRef eventObject =
                 JSObjectMake(
-                        m_context,
-                        JSSoftKeyboardChangeEvent::getClassRef(),
-                        eventPriv);
+                    m_context,
+                    JSSoftKeyboardChangeEvent::getClassRef(),
+                    eventPriv);
 
             AddEventListenerSupport::CallCustomEventListenersFromIFrame(
-                    frame, eventType, eventObject);
+                frame, eventType, eventObject);
         }
     } else {
-        LogInfo("Not supported custom event type");
+        LogDebug("Not supported custom event type");
         return;
     }
-
+#endif
 }
 
 WindowPropertySupport* Explorer::getWindowPropertySupport()