From: Pawel Kaczmarek Date: Thu, 13 Aug 2015 11:47:57 +0000 (+0200) Subject: [Utils] Binary Exchanging support X-Git-Tag: submit/tizen/20151026.073646^2^2~178^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=530ab695881e80a6087f71e77d85f00a9e4a1f2b;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Utils] Binary Exchanging support NativeManager - callData - callSyncData - sendSyncData - setDataListener Change-Id: I20048cbc362e376d9fed99281ca830bb7dc3784e Signed-off-by: Pawel Kaczmarek --- diff --git a/src/utils/utils_api.js b/src/utils/utils_api.js index 07bab02e..8b0a6c67 100755 --- a/src/utils/utils_api.js +++ b/src/utils/utils_api.js @@ -533,8 +533,6 @@ Converter.prototype.toEnum = function(val, e, nullable) { var _converter = new Converter(); - - ///////////////////////////////////////////////////////////////////////////// /** @constructor */ var Validator = function() { @@ -938,6 +936,8 @@ var NativeManager = function(extension) { if (!extension || !extension.internal || !_type.isFunction(extension.postMessage) || !_type.isFunction(extension.internal.sendSyncMessage) || + !_type.isFunction(extension.sendSyncData) || + !_type.isFunction(extension.setDataListener) || !_type.isFunction(extension.sendRuntimeMessage) || !_type.isFunction(extension.sendRuntimeAsyncMessage) || !_type.isFunction(extension.sendRuntimeSyncMessage) || @@ -997,6 +997,44 @@ var NativeManager = function(extension) { console.error('Missing callback or listener identifier. Ignoring message.'); }.bind(this)); + + extension_.setDataListener(function(msg, chunk_id) { + var msg = JSON.parse(msg); + msg.chunk_id = chunk_id; + var id; + + if (msg.hasOwnProperty(this.CALLBACK_ID_KEY)) { + id = msg[this.CALLBACK_ID_KEY]; + delete msg[this.CALLBACK_ID_KEY]; + + if (!_type.isFunction(this.callbacks_[id])) { + console.error('Wrong callback identifier. Ignoring message.'); + return; + } + + this.callbacks_[id](msg); + delete this.callbacks_[id]; + + return; + } + + if (msg.hasOwnProperty(this.LISTENER_ID_KEY)) { + id = msg[this.LISTENER_ID_KEY]; + delete msg[this.LISTENER_ID_KEY]; + + if (!_type.isFunction(this.listeners_[id])) { + console.error('Wrong listener identifier. Ignoring message.'); + return; + } + + this.listeners_[id](msg); + + return; + } + + console.error('Missing callback or listener identifier. Ignoring message.'); + + }.bind(this)); }; NativeManager.prototype.call = function(cmd, args, callback) { @@ -1009,6 +1047,16 @@ NativeManager.prototype.call = function(cmd, args, callback) { return this.callSync(cmd, args); }; +NativeManager.prototype.callData = function(cmd, args, chunk, callback) { + args = args || {}; + + var replyId = this.nextReplyId; + args[this.CALLBACK_ID_KEY] = replyId; + this.callbacks_[replyId] = callback; + + return this.callSyncData(cmd, args, chunk); +}; + NativeManager.prototype.callSync = function(cmd, args) { var request = JSON.stringify({ cmd: cmd, @@ -1018,6 +1066,16 @@ NativeManager.prototype.callSync = function(cmd, args) { return JSON.parse(this.extension.internal.sendSyncMessage(request)); }; +NativeManager.prototype.callSyncData = function(cmd, args, chunk) { + var request = JSON.stringify({ + cmd: cmd, + args: args || {} + }); + var response = this.extension.sendSyncData(request, chunk); + response.reply = JSON.parse(response.reply); + return response; +}; + NativeManager.prototype.sendRuntimeMessage = function(msg, body) { return this.extension.sendRuntimeMessage(msg, body || ''); };