#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 = ".";
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();
}
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();
}
}
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;
}
}
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() &&
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;
}
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;
}
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 =
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());
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;
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());
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()