[NFC] add and remove ActiveSecureElementChangeListener implementation
authorLukasz Bardeli <l.bardeli@samsung.com>
Fri, 19 Dec 2014 08:54:11 +0000 (09:54 +0100)
committerLukasz Bardeli <l.bardeli@samsung.com>
Fri, 19 Dec 2014 10:51:59 +0000 (19:51 +0900)
[Verification] Code compiles without errors.

Change-Id: I9fe0482f93b0c89e706941f3f9ce0e3f9f196ce2
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/nfc/nfc_adapter.cc
src/nfc/nfc_adapter.h
src/nfc/nfc_api.js
src/nfc/nfc_instance.cc

index 80d21a8326923f5b2b6ffd2d5d53833cf413fc5f..7a434ba648189e585ff76189ea4f94d92c34c5b8 100644 (file)
@@ -100,18 +100,19 @@ static void se_event_callback(nfc_se_event_e se_event, void *user_data) {
     string result;
     switch (se_event) {
         case NFC_SE_EVENT_SE_TYPE_CHANGED:
-            // TODO: fill when addActiveSecureElementChangeListener will be added
+            result = NFCAdapter::GetInstance()->GetActiveSecureElement();
+            obj.insert(make_pair("listenerId", "ActiveSecureElementChanged"));
             break;
         case NFC_SE_EVENT_CARD_EMULATION_CHANGED:
             result = NFCAdapter::GetInstance()->GetCardEmulationMode();
-            obj.insert(make_pair("mode", result));
             obj.insert(make_pair("listenerId", "CardEmulationModeChanged"));
             break;
         default:
             LOGD("se_event_occured: %d", se_event);
-            break;
+            return;
     }
 
+    obj.insert(make_pair("mode", result));
     NFCInstance::getInstance().PostMessage(event.serialize().c_str());
 }
 
@@ -326,7 +327,7 @@ void NFCAdapter::AddCardEmulationModeChangeListener() {
     if (!m_is_listener_set) {
         int ret = nfc_manager_set_se_event_cb(se_event_callback, NULL);
         if (NFC_ERROR_NONE != ret) {
-            LOGE("addCardEmulationModeChangeListener failed: %d", ret);
+            LOGE("AddCardEmulationModeChangeListener failed: %d", ret);
             NFCUtil::throwNFCException(ret,
                 NFCUtil::getNFCErrorMessage(ret).c_str());
         }
@@ -346,5 +347,29 @@ void NFCAdapter::RemoveCardEmulationModeChangeListener() {
     m_is_listener_set = false;
 }
 
+void NFCAdapter::AddActiveSecureElementChangeListener() {
+    if (!m_is_listener_set) {
+        int ret = nfc_manager_set_se_event_cb(se_event_callback, NULL);
+        if (NFC_ERROR_NONE != ret) {
+            LOGE("AddActiveSecureElementChangeListener failed: %d", ret);
+            NFCUtil::throwNFCException(ret,
+                NFCUtil::getNFCErrorMessage(ret).c_str());
+        }
+    }
+
+    m_is_listener_set = true;
+}
+
+void NFCAdapter::RemoveActiveSecureElementChangeListener() {
+    if (!nfc_manager_is_supported()) {
+        throw NotSupportedException("NFC Not Supported");
+    }
+
+    if (m_is_listener_set) {
+        nfc_manager_unset_se_event_cb();
+    }
+    m_is_listener_set = false;
+}
+
 }// nfc
 }// extension
index 3eaab193bd3c9a1afc47f918197f67c78dc6ca3d..1524d247ecade205cb0c73336f2cde407f139455 100644 (file)
@@ -36,6 +36,8 @@ public:
 
     void AddCardEmulationModeChangeListener();
     void RemoveCardEmulationModeChangeListener();
+    void AddActiveSecureElementChangeListener();
+    void RemoveActiveSecureElementChangeListener();
 
     static NFCAdapter* GetInstance();
 private:
index dd6a31994dff17caf2ecea7abdb412073274a46f..9a02379c40fe236ea1fa86a81ec65e5dfe00a51b 100644 (file)
@@ -41,7 +41,9 @@ ListenerManager.prototype.removeListener = function(watchId) {
 };
 
 var CARD_EMULATION_MODE_LISTENER = 'CardEmulationModeChanged';
+var ACTIVE_SECURE_ELEMENT_LISTENER = 'ActiveSecureElementChanged';
 var cardEmulationModeListener = new ListenerManager(native_, CARD_EMULATION_MODE_LISTENER);
+var activeSecureElementChangeListener = new ListenerManager(native_, ACTIVE_SECURE_ELEMENT_LISTENER);
 
 //enumeration NDEFRecordTextEncoding ////////////////////////////////////////////////////
 var NDEFRecordTextEncoding = {
@@ -262,7 +264,8 @@ NFCAdapter.prototype.addCardEmulationModeChangeListener = function() {
         }
     ]);
 
-    if (T_.isEmptyObject(cardEmulationModeListener.listeners)) {
+    if (T_.isEmptyObject(cardEmulationModeListener.listeners) &&
+            T_.isEmptyObject(activeSecureElementChangeListener.listeners)) {
         native_.callSync('NFCAdapter_addCardEmulationModeChangeListener');
     }
 
@@ -278,7 +281,8 @@ NFCAdapter.prototype.removeCardEmulationModeChangeListener = function() {
     ]);
     cardEmulationModeListener.removeListener(args.listenerId);
 
-    if (T_.isEmptyObject(cardEmulationModeListener.listeners)) {
+    if (T_.isEmptyObject(cardEmulationModeListener.listeners) &&
+            T_.isEmptyObject(activeSecureElementChangeListener.listeners)) {
         native_.callSync('NFCAdapter_removeCardEmulationModeChangeListener');
     }
 };
@@ -292,11 +296,35 @@ NFCAdapter.prototype.removeTransactionEventListener = function() {
 };
 
 NFCAdapter.prototype.addActiveSecureElementChangeListener = function() {
+    var args = validator_.validateArgs(arguments, [
+       {
+           name: 'callback',
+           type: types_.LISTENER,
+           values: ['onchanged']
+       }
+   ]);
+
+    if (T_.isEmptyObject(cardEmulationModeListener.listeners) &&
+            T_.isEmptyObject(activeSecureElementChangeListener.listeners)) {
+        native_.callSync('NFCAdapter_addActiveSecureElementChangeListener ');
+    }
 
+   return activeSecureElementChangeListener.addListener(args.callback);
 };
 
 NFCAdapter.prototype.removeActiveSecureElementChangeListener = function() {
+    var args = validator_.validateArgs(arguments, [
+        {
+            name: 'listenerId',
+            type: types_.LONG
+        }
+    ]);
+    activeSecureElementChangeListener.removeListener(args.listenerId);
 
+    if (T_.isEmptyObject(cardEmulationModeListener.listeners) &&
+            T_.isEmptyObject(activeSecureElementChangeListener.listeners)) {
+        native_.callSync('NFCAdapter_removeCardEmulationModeChangeListener');
+    }
 };
 
 NFCAdapter.prototype.getCachedMessage = function() {
index 7816b3c756ea2e956bc33514ee8dfa7b1b212a65..712333b85cde25bff635c2a55a69ad2c5e4050ff 100644 (file)
@@ -216,12 +216,12 @@ void NFCInstance::AddTransactionEventListener(
 
 void NFCInstance::AddActiveSecureElementChangeListener(
         const picojson::value& args, picojson::object& out) {
-
+    NFCAdapter::GetInstance()->AddActiveSecureElementChangeListener();
 }
 
 void NFCInstance::RemoveActiveSecureElementChangeListener(
         const picojson::value& args, picojson::object& out) {
-
+    NFCAdapter::GetInstance()->RemoveActiveSecureElementChangeListener();
 }
 
 void NFCInstance::GetCachedMessage(