[NFC] Fixes for Messages and Records
authorPiotr Kosko <p.kosko@samsung.com>
Tue, 3 Feb 2015 13:02:26 +0000 (14:02 +0100)
committerPiotr Kosko <p.kosko@samsung.com>
Tue, 3 Feb 2015 13:51:04 +0000 (22:51 +0900)
Change-Id: Ibc3be0fc8ae11d0266610eb756fb8bf882f681a8
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
src/nfc/nfc_api.js
src/nfc/nfc_message_utils.cc

index 712aea97848ecef13e11b91ba28ed25ca356623f..d6e850074bae901bb3b9a7137cb0357b7bf336d4 100644 (file)
@@ -280,7 +280,7 @@ NFCAdapter.prototype.setTagListener  = function() {
         }
     ]);
 
-    if(!types_.isNullOrUndefined(args.tagType)) {
+    if(!T_.isNullOrUndefined(args.tagType)) {
         for (var i = 0; i < args.tagType.length; i++) {
             if (NFCTagType[args.tagType[i]] === undefined) {
                 throw new tizen.WebAPIException(
@@ -297,7 +297,7 @@ NFCAdapter.prototype.setTagListener  = function() {
             tagObject = new NFCTag(message.id);
 
             // If filter is set for listener but tag type is not searched one
-            if(!types_.isNullOrUndefined(args.tagType) &&
+            if(!T_.isNullOrUndefined(args.tagType) &&
                     args.tagType.indexOf(tagObject.type) < 0) {
                 return;
             }
@@ -913,9 +913,10 @@ tizen.NDEFMessage = function(data) {
 
     var recordsSetter = function(data){
         if (T_.isArray(data)) {
-            if ( isArrayOfType(data, tizen.NDEFRecord) ) {
+            // Do not check type of array elements - allow all arrays
+            //if ( isArrayOfType(data, tizen.NDEFRecord) ) {
                 records_ = data;
-            }
+            //}
         }
     }
 
@@ -1003,21 +1004,16 @@ tizen.NDEFRecord = function(first, type, payload, id) {
 };
 
 //////////////////NDEFRecordText /////////////////
-var ENCODING = ["UTF8", "UTF16"];
-
 tizen.NDEFRecordText = function(text, languageCode, encoding) {
     var text_ = undefined;
     var languageCode_ = undefined;
-    var encoding_ = ENCODING[0];
+    var encoding_ = NDEFRecordTextEncoding[encoding] ?
+            NDEFRecordTextEncoding[encoding] : NDEFRecordTextEncoding['UTF8'];
     try {
         if (arguments.length >= 2) {
             text_ = Converter_.toString(text);
             languageCode_ = Converter_.toString(languageCode);
 
-            if (!T_.isNullOrUndefined(encoding)) {
-                encoding_ = Converter_.toEnum(encoding, ENCODING, true);
-            }
-
             var result = native_.callSync(
                     'NDEFRecordText_constructor', {
                         'text': text_,
index 4f9b5396ad07ab0722904769e0a7cbe6902c069b..8ae98fe93a970838abb88dd25897f7a3ef6dedc7 100644 (file)
@@ -262,6 +262,11 @@ void NFCMessageUtils::ReportNDEFMessage(const picojson::value& args, picojson::o
 static nfc_ndef_record_h NdefRecordGetHandle(picojson::value& record)
 {
     LoggerD("Entered");
+    if (!record.is<picojson::object>() || !record.contains("tnf") || !record.contains("type") ||
+            !record.contains("id") || !record.contains("payload")) {
+        throw TypeMismatchException("Record is empty - could not create platform handle");
+    }
+
     const picojson::object& record_obj = record.get<picojson::object>();
 
     short tnf_from_json = static_cast<short>(record.get("tnf").get<double>());
@@ -712,20 +717,26 @@ void NFCMessageUtils::ReportNDEFRecordMedia(const picojson::value& args, picojso
 
     nfc_ndef_record_h handle = NULL;
 
+    short _tnf = NFC_RECORD_TNF_UNKNOWN;
+    UCharVector _type_name;
+    UCharVector _id;
+    UCharVector _payload;
+
     int result = nfc_ndef_record_create_mime(&handle, mime_type.c_str(), data.get(),
             size);
     if (NFC_ERROR_NONE != result) {
         LoggerE("Unknown error while getting mimeType: %s - %d: %s",
             mime_type.c_str(), result,
             NFCUtil::getNFCErrorMessage(result).c_str());
-        NFCUtil::throwNFCException(result, "Unknown error while getting mimeType");
+        //Do not throw just return default values
+        //NFCUtil::throwNFCException(result, "Unknown error while getting mimeType");
+    } else {
+        _tnf = getTnfFromHandle(handle);
+        _type_name = getTypeNameFromHandle(handle);
+        _id = getIdFromHandle(handle);
+        _payload = getPayloadFromHandle(handle);
     }
 
-    short _tnf = getTnfFromHandle(handle);
-    UCharVector _type_name = getTypeNameFromHandle(handle);
-    UCharVector _id = getIdFromHandle(handle);
-    UCharVector _payload = getPayloadFromHandle(handle);
-
     //constructing json
     ConstructRecordJson(_tnf, _type_name, _id, _payload, out);