[Bluetooth] setChangeListener API fix
authorCorentin Lecouvey <corentin.lecouvey@open.eurogiciel.org>
Fri, 4 Jul 2014 14:35:19 +0000 (16:35 +0200)
committerCorentin Lecouvey <corentin.lecouvey@open.eurogiciel.org>
Mon, 7 Jul 2014 14:29:41 +0000 (16:29 +0200)
Now 'AdapterUpdated' JSON message is sent to javascript and
checks listener existence before calling its callbacks.

bluetooth/bluetooth_api.js
bluetooth/bluetooth_instance_capi.cc

index 5861917..413f10e 100644 (file)
@@ -33,7 +33,8 @@ extension.setMessageListener(function(json) {
     handleSocketHasData(msg);
   else if (msg.cmd == 'SocketClosed')
     handleSocketClosed(msg);
-  else { // Then we are dealing with postMessage return.
+
+  if (msg.reply_id) { // Then we are dealing with postMessage return.
     var reply_id = msg.reply_id;
     var callback = _callbacks[reply_id];
     if (callback) {
@@ -200,7 +201,7 @@ var handleAdapterUpdated = function(msg) {
   if (msg.Powered) {
     var powered = (msg.Powered === 'true') ? true : false;
     _addConstProperty(defaultAdapter, 'powered', powered);
-    if (defaultAdapter.powered !== powered && listener && listener.onstatechanged) {
+    if (listener && listener.onstatechanged) {
       adapter.change_listener.onstatechanged(powered);
     }
   }
@@ -439,8 +440,6 @@ BluetoothAdapter.prototype.setName = function(name, successCallback, errorCallba
       return;
     }
 
-    _addConstProperty(defaultAdapter, 'name', name);
-
     if (successCallback)
       successCallback();
   });
@@ -473,8 +472,6 @@ BluetoothAdapter.prototype.setPowered = function(state, successCallback, errorCa
       throw new tizen.WebAPIException(tizen.WebAPIException.TYPE_MISMATCH_ERR);
     }
 
-    _addConstProperty(defaultAdapter, 'powered', state);
-
     if (successCallback)
       successCallback();
   });
@@ -509,8 +506,6 @@ BluetoothAdapter.prototype.setVisible = function(mode, successCallback, errorCal
       return;
     }
 
-    _addConstProperty(defaultAdapter, 'visible', mode);
-
     if (successCallback)
       successCallback();
   });
index aebc392..9046d60 100644 (file)
@@ -112,7 +112,8 @@ void BluetoothInstance::OnStateChanged(int result,
 
   picojson::value::object o;
 
-  o["cmd"] = picojson::value("");
+  o["cmd"] = picojson::value("AdapterUpdated");
+  o["Powered"] = picojson::value(BoolToString(obj->adapter_enabled_));
   o["reply_id"] = picojson::value(obj->callbacks_id_map_["Powered"]);
   if (result)
     o["error"] = picojson::value(static_cast<double>(1));
@@ -132,8 +133,9 @@ void BluetoothInstance::OnNameChanged(char* name, void* user_data) {
 
   picojson::value::object o;
 
+  o["cmd"] = picojson::value("AdapterUpdated");
+  o["Name"] = picojson::value(name);
   o["error"] = picojson::value(static_cast<double>(0));
-  o["cmd"] = picojson::value("");
   o["reply_id"] = picojson::value(obj->callbacks_id_map_["Name"]);
   obj->InternalPostMessage(picojson::value(o));
   obj->callbacks_id_map_.erase("Name");
@@ -149,7 +151,12 @@ void BluetoothInstance::OnVisibilityChanged(int result,
 
   picojson::value::object o;
 
-  o["cmd"] = picojson::value("");
+  const char* visible =
+      (visibility_mode == BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE) ?
+          "false" : "true";
+
+  o["cmd"] = picojson::value("AdapterUpdated");
+  o["Discoverable"] = picojson::value(visible);
   o["reply_id"] = picojson::value(obj->callbacks_id_map_["Discoverable"]);
   if (result)
     o["error"] = picojson::value(static_cast<double>(1));