Update change log and spec for wrt-plugins-tizen_0.4.70
[framework/web/wrt-plugins-tizen.git] / src / Bluetooth / JSBluetoothManager.cpp
index fcc0d60..b0a1422 100644 (file)
@@ -24,7 +24,7 @@
 #include <PropertyBag.h>
 #include <bluetooth.h>
 
-#include "plugin_config.h"
+#include "plugin_config_impl.h"
 #include "JSBluetoothManager.h"
 #include "JSBluetoothClassDeviceMajor.h"
 #include "JSBluetoothClassDeviceMinor.h"
@@ -90,38 +90,42 @@ const JSClassDefinition* JSBluetoothManager::getClassInfo()
 
 void JSBluetoothManager::initialize(JSContextRef context, JSObjectRef object)
 {
+       LoggerD("initialize");
+       
     if (!JSObjectGetPrivate(object)) {
-        PropertyBag *priv = new PropertyBag();    
-        if(priv) {
-            // deviceMajor
-            priv->setProperty(context, BLUETOOTH_MANAGER_DEVICE_MAJOR,
-                    JSBluetoothClassDeviceMajor::createJSObject(context));
-
-            // deviceMinor
-            priv->setProperty(context, BLUETOOTH_MANAGER_DEVICE_MINOR,
-                    JSBluetoothClassDeviceMinor::createJSObject(context));
-
-            // deviceService
-            priv->setProperty(context, BLUETOOTH_MANAGER_DEVICE_SERVICE,
-                    JSBluetoothClassDeviceService::createJSObject(context));
-
-            if (!JSObjectSetPrivate(object, static_cast<void*>(priv))) {
-                LoggerW("Failed to set private data");
-                delete priv;
-            }            
-        }
-        else {
-            LoggerW("Failed to create private data");
-        }
-    }
-    else {
-        LoggerW("Private data already exists");
-    }
+               JSBluetoothManagerPriv* priv = new JSBluetoothManagerPriv();
+
+               if(priv) {
+           // deviceMajor
+                       priv->setProperty(context, BLUETOOTH_MANAGER_DEVICE_MAJOR,
+                       JSBluetoothClassDeviceMajor::createJSObject(context));
+
+                       // deviceMinor
+                       priv->setProperty(context, BLUETOOTH_MANAGER_DEVICE_MINOR,
+                       JSBluetoothClassDeviceMinor::createJSObject(context));
+
+                       // deviceService
+                       priv->setProperty(context, BLUETOOTH_MANAGER_DEVICE_SERVICE,
+                       JSBluetoothClassDeviceService::createJSObject(context));
+       
+                       if (!JSObjectSetPrivate(object, static_cast<void*>(priv))) {
+                               LoggerW("Failed to set private data");
+                               delete priv;
+                       }            
+                       LoggerD("Private creation ok");
+               }
+               else {
+                       LoggerW("Failed to create private data");
+               }
+       }
+       else {
+               LoggerW("already has private data");
+       }
 }
 
 void JSBluetoothManager::finalize(JSObjectRef object)
 {
-    PropertyBag *priv = static_cast<PropertyBag*>(JSObjectGetPrivate(object));
+    JSBluetoothManagerPriv *priv = static_cast<JSBluetoothManagerPriv*>(JSObjectGetPrivate(object));
     if (priv) {
         JSObjectSetPrivate(object, NULL);
         delete priv;
@@ -129,7 +133,7 @@ void JSBluetoothManager::finalize(JSObjectRef object)
 }
 
 JSValueRef JSBluetoothManager::getReadOnlyProperty(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception) {
-    PropertyBag *priv = static_cast<PropertyBag*>(JSObjectGetPrivate(object));
+    JSBluetoothManagerPriv *priv = static_cast<JSBluetoothManagerPriv*>(JSObjectGetPrivate(object));
     if(!priv) {
         LoggerW("There is no private data");
         return NULL;
@@ -146,20 +150,27 @@ JSValueRef JSBluetoothManager::getDefaultAdapter(JSContextRef context,
         const JSValueRef arguments[],
         JSValueRef* exception)
 {
+       JSBluetoothManagerPriv *priv = static_cast<JSBluetoothManagerPriv*>(JSObjectGetPrivate(thisObject));
+       
+       if (!priv)
+       {
+               DeviceAPI::Common::TypeMismatchException err("Private Object is null");
+               return JSWebAPIErrorFactory::postException(context, exception, err);
+       }
+       
     TIME_TRACER_ITEM_BEGIN("getDefaultAdapter", 1);
-
-    // Access Check
-    TIME_TRACER_ITEM_BEGIN("getDefaultAdapter::ACE", 1);
-    AceSecurityStatus status = BLUETOOTH_CHECK_ACCESS(BLUETOOTH_MANAGER_API_GET_DEFAULT_ADAPTER);
+       TIZEN_CHECK_ACCESS(context, exception, priv, BLUETOOTH_MANAGER_API_GET_DEFAULT_ADAPTER);
     TIME_TRACER_ITEM_END("getDefaultAdapter::ACE", 1);
-    TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
+    
 
     try {
-        JSObjectRef adapter = JSBluetoothAdapter::createJSObject(context);
-
+               
         if(bt_initialize() != BT_ERROR_NONE) {
             LoggerE("bt_initialize() failed");
         }
+
+               BluetoothAdapter::getInstance()->copyAceCheckAccessFunction(priv);
+        JSObjectRef adapter = JSBluetoothAdapter::createJSObject(context);
         
         TIME_TRACER_ITEM_END("getDefaultAdapter", 1);
         return adapter;