From: Piotr Kosko Date: Tue, 3 Feb 2015 13:02:26 +0000 (+0100) Subject: [NFC] Fixes for Messages and Records X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~494 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=79f0bc384f7aef9344f9039e2013f127cbe15997;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [NFC] Fixes for Messages and Records Change-Id: Ibc3be0fc8ae11d0266610eb756fb8bf882f681a8 Signed-off-by: Piotr Kosko --- diff --git a/src/nfc/nfc_api.js b/src/nfc/nfc_api.js index 712aea97..d6e85007 100644 --- a/src/nfc/nfc_api.js +++ b/src/nfc/nfc_api.js @@ -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_, diff --git a/src/nfc/nfc_message_utils.cc b/src/nfc/nfc_message_utils.cc index 4f9b5396..8ae98fe9 100644 --- a/src/nfc/nfc_message_utils.cc +++ b/src/nfc/nfc_message_utils.cc @@ -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() || !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(); short tnf_from_json = static_cast(record.get("tnf").get()); @@ -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);