[SecureElement] Added onSEError in SEChangeListener. 23/85423/4
authorTomasz Marciniak <t.marciniak@samsung.com>
Wed, 24 Aug 2016 11:37:49 +0000 (13:37 +0200)
committerTomasz Marciniak <t.marciniak@samsung.com>
Thu, 8 Sep 2016 06:20:54 +0000 (08:20 +0200)
[Verification] Code compiles. TCT pass rate did not change.

Change-Id: I18880c2716b050cd69bfc4ac00b9d200b38cd734
Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
src/secureelement/secureelement_api.js
src/secureelement/secureelement_instance.cc

index 4ff5bd2a3bc3a4229d84cc0ee266898d645c4788..e175529ef49fefb70abd7a97f1dbb4b6e23e34d5 100644 (file)
@@ -33,7 +33,10 @@ function ListenerManager(native, listenerName) {
 
 ListenerManager.prototype.onListenerCalled = function(msg) {
     var d = undefined;
+    var e = undefined;
     switch (msg.action) {
+    case 'onSEError':
+        e = new WebAPIException(WebAPIException.IO_ERR, 'I/O error occurred on Secure Element reader');
     case 'onSEReady':
     case 'onSENotReady':
         d = new Reader(msg.handle);
@@ -45,7 +48,7 @@ ListenerManager.prototype.onListenerCalled = function(msg) {
 
     for (var watchId in this.listeners) {
         if (this.listeners.hasOwnProperty(watchId) && this.listeners[watchId][msg.action]) {
-            this.listeners[watchId][msg.action](d);
+            this.listeners[watchId][msg.action](d, e);
         }
     }
 };
@@ -130,7 +133,7 @@ var SEServiceRegisterSEListener = function() {
         {
             name : 'eventCallback',
             type : types_.LISTENER,
-            values: ['onSEReady', 'onSENotReady']
+            values: ['onSEReady', 'onSENotReady', 'onSEError']
         }
     ]);
 
index ea01beeb4f8dd4e868c1424c2118e7b7e976a003..34555753e7af48fb9537f6e2107a84cba5599959 100644 (file)
@@ -40,6 +40,7 @@ const std::string kListenerId = "listenerId";
 const std::string kListener = "SecureElementChangeListener";
 const std::string kReady = "onSEReady";
 const std::string kNotReady = "onSENotReady";
+const std::string kError = "onSEError";
 
 TizenResult ConvertErrorCode(int error) {
   switch (error) {
@@ -68,11 +69,20 @@ TizenResult ConvertErrorCode(int error) {
 void SecureElementEventCb(int reader, smartcard_reader_event_type_e event_type, void *user_data) {
   ScopeLogger();
 
-  //TODO What action should be performed in case of SMARTCARD_READER_EVENT_TYPE_IO_ERROR event
-  if (SMARTCARD_READER_EVENT_TYPE_INSERTED != event_type &&
-      SMARTCARD_READER_EVENT_TYPE_REMOVED != event_type) {
-    LoggerD("Incorrect event type");
-    return;
+  std::string action = "";
+  switch (event_type) {
+    case SMARTCARD_READER_EVENT_TYPE_IO_ERROR:
+      action = kError;
+      break;
+    case SMARTCARD_READER_EVENT_TYPE_INSERTED:
+      action = kReady;
+      break;
+    case SMARTCARD_READER_EVENT_TYPE_REMOVED:
+      action = kNotReady;
+      break;
+    default:
+      LoggerD("Incorrect event type");
+      return;
   }
 
   SecureElementInstance* instance = static_cast<SecureElementInstance*>(user_data);
@@ -84,8 +94,6 @@ void SecureElementEventCb(int reader, smartcard_reader_event_type_e event_type,
   picojson::value result{picojson::object{}};
   auto& obj = result.get<picojson::object>();
 
-  std::string action = SMARTCARD_READER_EVENT_TYPE_INSERTED == event_type ? kReady : kNotReady;
-
   obj.insert(std::make_pair(kAction, picojson::value(action)));
   obj.insert(std::make_pair(kHandle, picojson::value(static_cast<double>(reader))));
   obj.insert(std::make_pair(kListenerId, picojson::value(kListener)));
@@ -170,7 +178,7 @@ TizenResult SecureElementInstance::GetReaders(picojson::object const& args, cons
       for (int i = 0; i < count; i++) {
         ret = smartcard_reader_is_secure_element_present(readers[i], &is_present);
         if (SMARTCARD_ERROR_NONE == ret && is_present) {
-            array.push_back(picojson::value(static_cast<double>(readers[i])));
+          array.push_back(picojson::value(static_cast<double>(readers[i])));
         }
       }