From c966b111fe8fa55508cf6abf2c9ed0053c9d6581 Mon Sep 17 00:00:00 2001 From: Corentin Lecouvey Date: Fri, 4 Jul 2014 16:35:19 +0200 Subject: [PATCH] [Bluetooth] setChangeListener API fix Now 'AdapterUpdated' JSON message is sent to javascript and checks listener existence before calling its callbacks. --- bluetooth/bluetooth_api.js | 11 +++-------- bluetooth/bluetooth_instance_capi.cc | 13 ++++++++++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/bluetooth/bluetooth_api.js b/bluetooth/bluetooth_api.js index 5861917..413f10e 100644 --- a/bluetooth/bluetooth_api.js +++ b/bluetooth/bluetooth_api.js @@ -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(); }); diff --git a/bluetooth/bluetooth_instance_capi.cc b/bluetooth/bluetooth_instance_capi.cc index aebc392..9046d60 100644 --- a/bluetooth/bluetooth_instance_capi.cc +++ b/bluetooth/bluetooth_instance_capi.cc @@ -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(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(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(1)); -- 2.7.4