#include "explorer.h"
#include "plugin_property_support.h"
-// JS overlay
+// JS overlay
#include <js_overlay_support.h>
#include <js_overlay_types.h>
#include <js_overlay_addEventListener.h>
#include <JSClass/JSTizenServiceEvent.h>
#include <JSClass/JSSoftKeyboardChangeEvent.h>
-
namespace {
//const char* SEPARATOR = ".";
const std::string GLOBAL_OBJECT_NAME = "GLOBAL_OBJECT";
m_propertySupport.reset(new WindowPropertySupport(m_context));
// initialization for use of custom event
- if (!AddEventListenerSupport::isInitialized())
- {
+ if (!AddEventListenerSupport::isInitialized()) {
LogInfo("initialization for use of custom event");
AddEventListenerSupport::initialize(context);
}
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);
- if(!providedObject)
- {
+ if (!providedObject) {
LogError("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)
- {
+ if (currentPropertyRequested.size() <= pos + 1) {
LogError("Wrong name of requested property");
return JSObjectPtr();
}
- currentPropertyRequested = currentPropertyRequested.substr(pos+1);
+ currentPropertyRequested = currentPropertyRequested.substr(pos + 1);
currentObject = getJSObjectProperty(currentObjectName, currentObject);
- if(!currentObject)
- {
+ if (!currentObject) {
LogError("Failed to get property: " << currentObjectName);
return JSObjectPtr();
}
bool retValue;
- if (declaration->getParentName() == GLOBAL_OBJECT_NAME)
- {
+ if (declaration->getParentName() == GLOBAL_OBJECT_NAME) {
LogDebug("Connect to Global object");
retValue = register_(declaration, m_globalObject, context);
- }
- else //PIM support
- {
+ } else { //PIM support
LogDebug("Connect to NOT global object");
//it should be master object name
string masterName = declaration->getParentName();
auto pos = masterName.find(".");
- if (string::npos != pos)
- {
+ if (string::npos != pos) {
LogError("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 {
+ // m_iframeSupport.invokeCallbackForMainFrame(m_context,
+ // declaration,
+ // newObject);
+ } else {
LogDebug("Iframe NOT supported");
}
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() << "'");
+ LogDebug(
+ "Register object. Provided object name: '" << providedObjectName
+ <<
+ "', registration of: '" << declaration->getName() << "'");
std::string fullParentName = declaration->getParentName();
LogDebug("Parent name: " << declaration->getParentName());
- if(fullParentName == providedObjectName)
- {
+ if (fullParentName == providedObjectName) {
LogDebug("Provided object match equaly to requested parent");
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) {
+ LogError(
+ "Object: " << declaration->getName()
+ << " should be child of: " <<
+ declaration->getParentName()
+ << " but you provided object: " <<
+ providedObjectName);
return false;
}
- if (fullParentName.size() <= pos+providedObjectName.size()+1)
- {
+ if (fullParentName.size() <= pos + providedObjectName.size() + 1) {
LogError("Invalid object name");
return false;
}
auto currentRequesteProperty =
- fullParentName.substr(pos+providedObjectName.size()+1);
-
+ fullParentName.substr(pos + providedObjectName.size() + 1);
JSObjectPtr jsObject = getProperty(
- currentRequesteProperty, providedObject);
+ currentRequesteProperty, providedObject);
- if(!jsObject->getObject())
- {
- LogError("Object: '" << declaration->getName()
- << "' should be child of: '" << declaration->getParentName()
- << "'. you provided object: '" << providedObjectName
- << "' but object is null");
+ if (!jsObject->getObject()) {
+ LogError(
+ "Object: '" << declaration->getName()
+ << "' should be child of: '" <<
+ declaration->getParentName()
+ << "'. you provided object: '" <<
+ providedObjectName
+ << "' but object is null");
return false;
}
}
bool Explorer::register_(const JSObjectDeclarationPtr& declaration,
- JSObjectPtr parent,
- JSGlobalContextRef context)
+ JSObjectPtr parent,
+ JSGlobalContextRef context)
{
LogInfo("Registration object: " << declaration->getParentName() <<
"<-" << declaration->getName());
typedef JSObjectDeclaration::Options JO;
- JSGlobalContextRef gContext = (context==NULL)?m_context:context;
+ JSGlobalContextRef gContext = (context == NULL) ? m_context : context;
JSObjectPtr newObject;
JSObjectPtr objectInstance = JavaScriptInterfaceSingleton::Instance().
- createObject(gContext,declaration);
+ createObject(gContext, declaration);
//function creation
if (declaration->getOptions() &&
LogDebug("Loading function object " << declaration->getName());
auto type = declaration->getOptions()->getIframeOverlay();
- if (JO::IFrameOverlay::OverlayedBeforeOriginal == type)
- {
+ if (JO::IFrameOverlay::OverlayedBeforeOriginal == type) {
LogDebug("Create overlayed function");
JSObjectPtr original =
JavaScriptInterfaceSingleton::Instance().
- getJSObjectProperty(gContext,
- parent,
- declaration->getName());
+ getJSObjectProperty(gContext,
+ parent,
+ declaration->getName());
newObject = JSOverlaySupport::
- createWrappedFunction(gContext,
- original,
- objectInstance,
- declaration->getName());
- }
- else
- {
+ createWrappedFunction(gContext,
+ original,
+ objectInstance,
+ declaration->getName());
+ } else {
LogDebug("create normal function");
newObject = objectInstance;
}
- }
- else //object creation
- {
+ } else { //object creation
newObject = objectInstance;
}
JavaScriptInterfaceSingleton::Instance().setObjectProperty(
- gContext,
+ gContext,
parent,
declaration->getName(),
newObject);
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)
- {
+ if (declaration->getParentName() == GLOBAL_OBJECT_NAME) {
LogDebug("Connect to Global object of IFRAME");
register_(declaration, frameObject, context);
return;
//it should be master object name
string masterName = declaration->getParentName();
auto pos = masterName.find(".");
- if (string::npos != pos)
- {
+ if (string::npos != pos) {
LogError("ParentName not allowed");
return;
}
auto masterObject = getJSObjectProperty(masterName, frameObject);
- if (!masterObject->getObject())
- {
+ if (!masterObject->getObject()) {
LogError("Object not exist in frame");
return;
}
}
}
-
void Explorer::loadFrame(JSGlobalContextRef context)
{
LogDebug("Frame attached");
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");
return;
{
LogDebug("Remove plugins from iframes");
- if (m_iframeSupport.hasIframes())
- {
+ if (m_iframeSupport.hasIframes()) {
LogDebug("Removing iframes");
JavaScriptInterfaceSingleton::Instance().removeIframes(m_context);
}
{
LogDebug("Deregister object " << declaration->getName());
- if (GLOBAL_OBJECT_NAME != declaration->getParentName())
- {
+ if (GLOBAL_OBJECT_NAME != declaration->getParentName()) {
LogWarning("Ignored remove property " << declaration->getName());
return;
}
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));
+ 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
+ // 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");
return;
}
-
}
WindowPropertySupport* Explorer::getWindowPropertySupport()