Update change log and spec for wrt-plugins-tizen_0.4.70
[framework/web/wrt-plugins-tizen.git] / src / Power / JSPowerManager.cpp
old mode 100644 (file)
new mode 100755 (executable)
index b5c292b..8bd5a57
 //
 
 #include <SecurityExceptions.h>
-#include <CallbackUserData.h>
 #include <GlobalContextManager.h>
 #include <JSUtil.h>
 #include <ArgumentValidator.h>
 #include <TimeTracer.h>
 
 #include "JSPowerManager.h"
-#include "plugin_config.h"
+#include "plugin_config_impl.h"
 #include "PowerManager.h"
 #include <Logger.h>
 
@@ -73,15 +72,19 @@ JSClassRef JSPowerManager::m_jsClassRef = JSClassCreate(JSPowerManager::getClass
 
 void JSPowerManager::initialize(JSContextRef context, JSObjectRef object)
 {
+    LoggerD("entered");
+    PowerManagerPriv *priv = new PowerManagerPriv(GlobalContextManager::getInstance()->getGlobalContext(context));
+    JSObjectSetPrivate(object, static_cast<void*>(priv));
 }
 
 void JSPowerManager::finalize(JSObjectRef object)
 {
-    CallbackUserData *callback = static_cast<CallbackUserData*>(JSObjectGetPrivate(object));
-    if( callback != NULL ){
-        PowerManager::getInstance()->removeScreenStateChangedCallback(callback);
+    LoggerD("entered");
+    PowerManagerPriv *priv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(object));
+    if( priv != NULL ){
+        PowerManager::getInstance()->removeScreenStateChangedCallback(priv);
         JSObjectSetPrivate(object, NULL);
-        delete callback;
+        delete priv;
     }
 }
 
@@ -106,10 +109,14 @@ JSValueRef JSPowerManager::request(JSContextRef context,
         JSValueRef* exception)
 {
     LoggerD("entered");
-       TIME_TRACER_ITEM_BEGIN(__FUNCTION__, 0);
 
-    AceSecurityStatus status = POWER_CHECK_ACCESS(POWER_FUNCTION_API_REQUEST);
-    TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
+    PowerManagerPriv *thisPriv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(thisObject));
+    if (!thisPriv) {
+        LoggerE("private object is null");
+        return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
+    }
+       TIME_TRACER_ITEM_BEGIN(__FUNCTION__, 0);
+    TIZEN_CHECK_ACCESS(context, exception, thisPriv, POWER_FUNCTION_API_REQUEST);
 
     try{
         ArgumentValidator validator(context, argumentCount, arguments);
@@ -163,13 +170,9 @@ JSValueRef JSPowerManager::setScreenStateChangeListener(JSContextRef context,
     try{
         ArgumentValidator validator(context, argumentCount, arguments);
         JSObjectRef func = validator.toFunction(0);
-        CallbackUserData *callback = static_cast<CallbackUserData*>(JSObjectGetPrivate(thisObject));
-        if( callback == NULL ){
-            callback = new CallbackUserData(GlobalContextManager::getInstance()->getGlobalContext(context));
-            JSObjectSetPrivate(thisObject, callback);
-        }
-        callback->setSuccessCallback(func);
-        PowerManager::getInstance()->addScreenStateChangedCallback(callback);
+        PowerManagerPriv *thisPriv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(thisObject));
+        thisPriv->setSuccessCallback(func);
+        PowerManager::getInstance()->addScreenStateChangedCallback(thisPriv);
 
     }catch(const BasePlatformException& err){
         return JSWebAPIErrorFactory::postException(context, exception, err);
@@ -191,12 +194,8 @@ JSValueRef JSPowerManager::unsetScreenStateChangeListener(JSContextRef context,
     LoggerD("entered");
        TIME_TRACER_ITEM_BEGIN(__FUNCTION__, 0);
 
-    CallbackUserData *callback = static_cast<CallbackUserData*>(JSObjectGetPrivate(thisObject));
-    if( callback != NULL ){
-        PowerManager::getInstance()->removeScreenStateChangedCallback(callback);
-        JSObjectSetPrivate(thisObject, NULL);
-        delete callback;
-    }
+    PowerManagerPriv *thisPriv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(thisObject));
+
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
     return JSValueMakeUndefined(context);
 }
@@ -228,9 +227,15 @@ JSValueRef JSPowerManager::setScreenBrightness(JSContextRef context,
         JSValueRef* exception)
 {
     LoggerD("entered");
+
+    PowerManagerPriv *thisPriv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(thisObject));
+    if (!thisPriv) {
+        LoggerE("private object is null");
+        return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
+    }
        TIME_TRACER_ITEM_BEGIN(__FUNCTION__, 0);
-    AceSecurityStatus status = POWER_CHECK_ACCESS(POWER_FUNCTION_API_RELEASE);
-    TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
+    TIZEN_CHECK_ACCESS(context, exception, thisPriv, POWER_FUNCTION_API_SET_SCREEN_BRIGHTNESS);
+
     try{
         ArgumentValidator validator(context, argumentCount, arguments);
 
@@ -290,9 +295,14 @@ JSValueRef JSPowerManager::turnScreenOn(JSContextRef context,
         JSValueRef* exception)
 {
     LoggerD("entered");
+
+    PowerManagerPriv *thisPriv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(thisObject));
+    if (!thisPriv) {
+        LoggerE("private object is null");
+        return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
+    }
        TIME_TRACER_ITEM_BEGIN(__FUNCTION__, 0);
-    AceSecurityStatus status = POWER_CHECK_ACCESS(POWER_FUNCTION_API_RELEASE);
-    TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
+    TIZEN_CHECK_ACCESS(context, exception, thisPriv, POWER_FUNCTION_API_TURN_SCREEN_ON);
 
     try{
         PowerManager::getInstance()->setScreenState(true);
@@ -311,9 +321,13 @@ JSValueRef JSPowerManager::turnScreenOff(JSContextRef context,
         JSValueRef* exception)
 {
     LoggerD("entered");
+    PowerManagerPriv *thisPriv = static_cast<PowerManagerPriv*>(JSObjectGetPrivate(thisObject));
+    if (!thisPriv) {
+        LoggerE("private object is null");
+        return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
+    }
        TIME_TRACER_ITEM_BEGIN(__FUNCTION__, 0);
-    AceSecurityStatus status = POWER_CHECK_ACCESS(POWER_FUNCTION_API_RELEASE);
-    TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
+    TIZEN_CHECK_ACCESS(context, exception, thisPriv, POWER_FUNCTION_API_TURN_SCREEN_OFF);    
 
     try{
         PowerManager::getInstance()->setScreenState(false);