From: Lukasz Bardeli Date: Thu, 5 Oct 2017 09:41:12 +0000 (+0200) Subject: [DataControl] Refactor js file X-Git-Tag: submit/tizen_4.0/20171011.122933~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F63%2F153863%2F4;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [DataControl] Refactor js file [Verification] TCT passrate didn't change Change-Id: I5d62fec4dca6b48da9d03ae3bfc29d681256e9b7 Signed-off-by: Lukasz Bardeli --- diff --git a/src/datacontrol/datacontrol_api.js b/src/datacontrol/datacontrol_api.js index 5d609965..fd7802f2 100755 --- a/src/datacontrol/datacontrol_api.js +++ b/src/datacontrol/datacontrol_api.js @@ -14,19 +14,12 @@ * limitations under the License. */ -tizen.debug = extension; - -var JSON_ = xwalk.JSON; var validator_ = xwalk.utils.validator; var converter_ = xwalk.utils.converter; var types_ = validator_.Types; var type_ = xwalk.utils.type; var native_ = new xwalk.utils.NativeManager(extension); -var callbackId = 0; -var callbacks = {}; -var listeners_ = {}; - var DATA_CONTROL_MANAGER_LISTENER_ID = 'DataControlManagerChangeCallback'; var DataType = { @@ -34,30 +27,20 @@ var DataType = { 'SQL': 'SQL' }; -var EventType = { - 'SQL_UPDATE': 'SQL_UPDATE', - 'SQL_INSERT': 'SQL_INSERT', - 'SQL_DELETE': 'SQL_DELETE', - 'MAP_SET': 'MAP_SET', - 'MAP_ADD': 'MAP_ADD', - 'MAP_REMOVE': 'MAP_REMOVE' -}; - - var DataControlListenersManager = (function() { function changeEvent(event) { var successCallback; if (DataType.SQL === event.eventType) { - if (type_.isEmptyObject(this._SQLDataControlCallbackMap)) { + if (type_.isEmptyObject(this._SQLDataControlCbMap)) { return; } - for (var listenerId in this._SQLDataControlCallbackMap) { - if (this._SQLDataControlCallbackMap.hasOwnProperty(listenerId)) { - if (this._SQLDataControlCallbackMap[listenerId].providerId === event.providerId && - this._SQLDataControlCallbackMap[listenerId].dataId === event.dataId) { - successCallback = this._SQLDataControlCallbackMap[listenerId].changeCallback; + for (var listenerId in this._SQLDataControlCbMap) { + if (this._SQLDataControlCbMap.hasOwnProperty(listenerId)) { + if (this._SQLDataControlCbMap[listenerId].providerId === event.providerId && + this._SQLDataControlCbMap[listenerId].dataId === event.dataId) { + successCallback = this._SQLDataControlCbMap[listenerId].changeCallback; if (type_.isFunction(successCallback)) { successCallback(event.type, {columns: event.columns, values: event.values}); } @@ -65,14 +48,14 @@ var DataControlListenersManager = (function() { } } } else { - if (type_.isEmptyObject(this._MAPDataControlCallbackMap)) { + if (type_.isEmptyObject(this._MAPDataControlCbMap)) { return; } - for (var listenerId in this._MAPDataControlCallbackMap) { - if (this._MAPDataControlCallbackMap.hasOwnProperty(listenerId)) { - if (this._MAPDataControlCallbackMap[listenerId].providerId === event.providerId && - this._MAPDataControlCallbackMap[listenerId].dataId === event.dataId) { - successCallback = this._MAPDataControlCallbackMap[listenerId].changeCallback; + for (var listenerId in this._MAPDataControlCbMap) { + if (this._MAPDataControlCbMap.hasOwnProperty(listenerId)) { + if (this._MAPDataControlCbMap[listenerId].providerId === event.providerId && + this._MAPDataControlCbMap[listenerId].dataId === event.dataId) { + successCallback = this._MAPDataControlCbMap[listenerId].changeCallback; if (type_.isFunction(successCallback)) { successCallback(event.type, {columns: event.columns, values: event.values}); } @@ -83,8 +66,8 @@ var DataControlListenersManager = (function() { } function _DataControlListenerManager() { - this._SQLDataControlCallbackMap = {}; - this._MAPDataControlCallbackMap = {}; + this._SQLDataControlCbMap = {}; + this._MAPDataControlCbMap = {}; this.lastListenerId = 0; this.changeEvent = changeEvent.bind(this); } @@ -92,19 +75,19 @@ var DataControlListenersManager = (function() { _DataControlListenerManager.prototype.addChangeListener = function(type, providerId, dataId, changeCallback, errorCallback) { var _realWatchId = 0; if (DataType.SQL === type) { - for (var i in this._SQLDataControlCallbackMap) { - if (this._SQLDataControlCallbackMap.hasOwnProperty(i) && - this._SQLDataControlCallbackMap[i].providerId === providerId && - this._SQLDataControlCallbackMap[i].dataId === dataId) { - _realWatchId = this._SQLDataControlCallbackMap[i].realWatchId; + for (var i in this._SQLDataControlCbMap) { + if (this._SQLDataControlCbMap.hasOwnProperty(i) && + this._SQLDataControlCbMap[i].providerId === providerId && + this._SQLDataControlCbMap[i].dataId === dataId) { + _realWatchId = this._SQLDataControlCbMap[i].realWatchId; } } } else { - for (var i in this._MAPDataControlCallbackMap) { - if (this._MAPDataControlCallbackMap.hasOwnProperty(i) && - this._MAPDataControlCallbackMap[i].providerId === providerId && - this._MAPDataControlCallbackMap[i].dataId === dataId) { - _realWatchId = this._MAPDataControlCallbackMap[i].realWatchId; + for (var i in this._MAPDataControlCbMap) { + if (this._MAPDataControlCbMap.hasOwnProperty(i) && + this._MAPDataControlCbMap[i].providerId === providerId && + this._MAPDataControlCbMap[i].dataId === dataId) { + _realWatchId = this._MAPDataControlCbMap[i].realWatchId; } } } @@ -115,12 +98,12 @@ var DataControlListenersManager = (function() { native_.callIfPossible(errorCallback, native_.getErrorObject(result)); return; } - } + }; var result = - callNativeWithCallback('DataControlConsumerObject_addChangeListener', { - providerId: providerId, - dataId: dataId, - type: type + native_.call('DataControlConsumerObject_addChangeListener', { + providerId: providerId, + dataId: dataId, + type: type }, callback); if (native_.isFailure(result)) { @@ -128,22 +111,22 @@ var DataControlListenersManager = (function() { } else { _realWatchId = converter_.toLong(result.watchId, true); } - if (type_.isEmptyObject(this._SQLDataControlCallbackMap) && - type_.isEmptyObject(this._MAPDataControlCallbackMap)) { - AddListener(DATA_CONTROL_MANAGER_LISTENER_ID, this.changeEvent); + if (type_.isEmptyObject(this._SQLDataControlCbMap) && + type_.isEmptyObject(this._MAPDataControlCbMap)) { + native_.addListener(DATA_CONTROL_MANAGER_LISTENER_ID, this.changeEvent); } } if (DataType.SQL === type) { - this._SQLDataControlCallbackMap[++this.lastListenerId] = {'providerId': providerId, - 'dataId': dataId, - 'changeCallback': changeCallback, - 'realWatchId': _realWatchId}; + this._SQLDataControlCbMap[++this.lastListenerId] = {'providerId': providerId, + 'dataId': dataId, + 'changeCallback': changeCallback, + 'realWatchId': _realWatchId}; } else { - this._MAPDataControlCallbackMap[++this.lastListenerId] = {'providerId': providerId, - 'dataId': dataId, - 'changeCallback': changeCallback, - 'realWatchId': _realWatchId}; + this._MAPDataControlCbMap[++this.lastListenerId] = {'providerId': providerId, + 'dataId': dataId, + 'changeCallback': changeCallback, + 'realWatchId': _realWatchId}; } return this.lastListenerId; @@ -151,40 +134,42 @@ var DataControlListenersManager = (function() { _DataControlListenerManager.prototype.removeChangeListener = function(type, providerId, dataId, listenerId) { var _realWatchId = 0; - if (DataType.SQL === type && !type_.isUndefined(this._SQLDataControlCallbackMap[listenerId])) { - _realWatchId = this._SQLDataControlCallbackMap[listenerId].realWatchId; - delete this._SQLDataControlCallbackMap[listenerId]; - for (var i in this._SQLDataControlCallbackMap) { - if (this._SQLDataControlCallbackMap.hasOwnProperty(i) && - this._SQLDataControlCallbackMap[i].realWatchId === _realWatchId) { + if (DataType.SQL === type && + !type_.isUndefined(this._SQLDataControlCbMap[listenerId])) { + _realWatchId = this._SQLDataControlCbMap[listenerId].realWatchId; + delete this._SQLDataControlCbMap[listenerId]; + for (var i in this._SQLDataControlCbMap) { + if (this._SQLDataControlCbMap.hasOwnProperty(i) && + this._SQLDataControlCbMap[i].realWatchId === _realWatchId) { return; } } - } else if (DataType.MAP === type && !type_.isUndefined(this._MAPDataControlCallbackMap[listenerId])) { - _realWatchId = this._MAPDataControlCallbackMap[listenerId].realWatchId; - delete this._MAPDataControlCallbackMap[listenerId]; - for (var i in this._MAPDataControlCallbackMap) { - if (this._MAPDataControlCallbackMap.hasOwnProperty(i) && - this._MAPDataControlCallbackMap[i].realWatchId === _realWatchId) { + } else if (DataType.MAP === type && + !type_.isUndefined(this._MAPDataControlCbMap[listenerId])) { + _realWatchId = this._MAPDataControlCbMap[listenerId].realWatchId; + delete this._MAPDataControlCbMap[listenerId]; + for (var i in this._MAPDataControlCbMap) { + if (this._MAPDataControlCbMap.hasOwnProperty(i) && + this._MAPDataControlCbMap[i].realWatchId === _realWatchId) { return; } } } else { - console.log("Type invalid or listener was not added") + console.log('Type invalid or listener was not added'); return; } if (0 != _realWatchId) { - callNative('DataControlConsumerObject_removeChangeListener',{ + native_.call('DataControlConsumerObject_removeChangeListener',{ providerId: providerId, dataId: dataId, watchId: _realWatchId, type: type - }) + }); - if (type_.isEmptyObject(this._SQLDataControlCallbackMap) && - type_.isEmptyObject(this._MAPDataControlCallbackMap)) { - RemoveListener(DATA_CONTROL_MANAGER_LISTENER_ID); + if (type_.isEmptyObject(this._SQLDataControlCbMap) && + type_.isEmptyObject(this._MAPDataControlCbMap)) { + native_.removeListener(DATA_CONTROL_MANAGER_LISTENER_ID); } } }; @@ -195,79 +180,6 @@ var DataControlListenersManager = (function() { var listenersManager = new DataControlListenersManager(); -// TODO refactor setMessageListener to start using common functionality -extension.setMessageListener(function(json) { - var result = JSON_.parse(json); - if (result.hasOwnProperty("callbackId")) { - var callback = callbacks[result['callbackId']]; - setTimeout(function() { - callback(result); - delete callbacks[result['callbackId']]; - }, 0); - } - if (result.hasOwnProperty("listenerId")) { - var id = result['listenerId']; - delete result['listenerId']; - var f = listeners_[id]; - setTimeout(function() { - f(result); - }, 0); - } -}); - -function nextCallbackId() { - return callbackId++; -} - -function callNative(cmd, args) { - var json = {'cmd': cmd, 'args': args}; - var argjson = JSON_.stringify(json); - var resultString = extension.internal.sendSyncMessage(argjson); - var result = JSON_.parse(resultString); - - if (typeof result !== 'object') { - throw new WebAPIException(WebAPIException.UNKNOWN_ERR); - } - - if (result['status'] == 'success') { - if (result['result']) { - return result['result']; - } - return true; - } else if (result['status'] == 'error') { - var err = result['error']; - if (err) { - throw new WebAPIException(err); - } - return false; - } -} - - -function callNativeWithCallback(cmd, args, callback) { - if (callback) { - var id = nextCallbackId(); - args['callbackId'] = id; - callbacks[id] = callback; - } - - return callNative(cmd, args); -} - -function AddListener(name, callback) { - if (!type_.isString(name) || !name.length) { - throw new WebAPIException(WebAPIException.TYPE_MISMATCH_ERR); - } - - listeners_[name] = callback; -}; - -function RemoveListener(name) { - if (listeners_.hasOwnProperty(name)) { - delete listeners_[name]; - } -}; - function SetReadOnlyProperty(obj, n, v) { Object.defineProperty(obj, n, {value: v, writable: false}); } @@ -311,7 +223,8 @@ function DataControlConsumerObject() { DataControlConsumerObject.prototype.addChangeListener = function() { var args = validator_.validateArgs(arguments, [ - {'name': 'dataChangeCallback', 'type': types_.FUNCTION, optional: false, nullable: false}, + {'name': 'dataChangeCallback', 'type': types_.FUNCTION, optional: false, + nullable: false}, {'name': 'errorCallback', 'type': types_.FUNCTION, optional: true, nullable: true} ]); @@ -321,8 +234,8 @@ DataControlConsumerObject.prototype.addChangeListener = function() { } return listenersManager.addChangeListener(type, this.providerId, this.dataId, - args.dataChangeCallback, args.errorCallback); -} + args.dataChangeCallback, args.errorCallback); +}; DataControlConsumerObject.prototype.removeChangeListener = function() { @@ -336,7 +249,7 @@ DataControlConsumerObject.prototype.removeChangeListener = function() { } listenersManager.removeChangeListener(type, this.providerId, this.dataId, args.watchId); -} +}; function SQLDataControlConsumer() { // constructor of SQLDataControlConsumer @@ -345,7 +258,7 @@ function SQLDataControlConsumer() { SQLDataControlConsumer.prototype = new DataControlConsumerObject(); SQLDataControlConsumer.prototype.constructor = SQLDataControlConsumer; -SQLDataControlConsumer.prototype.insert = function(reqId, insertionData) { +SQLDataControlConsumer.prototype.insert = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'insertionData', 'type': types_.DICTIONARY}, @@ -365,9 +278,9 @@ SQLDataControlConsumer.prototype.insert = function(reqId, insertionData) { 'reqId': args.reqId, 'insertionData': args.insertionData }; - try { - var syncResult = - callNativeWithCallback('SQLDataControlConsumer_insert', nativeParam, function(result) { + + var syncResult = + native_.call('SQLDataControlConsumer_insert', nativeParam, function(result) { if (result.status == 'success') { if (args.successCallback) { args.successCallback(result['requestId'], result['result']); @@ -381,12 +294,13 @@ SQLDataControlConsumer.prototype.insert = function(reqId, insertionData) { } } }); - } catch (e) { - throw e; + + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); } }; -SQLDataControlConsumer.prototype.update = function(reqId, updateData, where) { +SQLDataControlConsumer.prototype.update = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'updateData', 'type': types_.DICTIONARY}, @@ -402,9 +316,9 @@ SQLDataControlConsumer.prototype.update = function(reqId, updateData, where) { 'where': args.where, 'updateData': args.updateData }; - try { - var syncResult = - callNativeWithCallback('SQLDataControlConsumer_update', nativeParam, function(result) { + + var syncResult = + native_.call('SQLDataControlConsumer_update', nativeParam, function(result) { if (result.status == 'success') { if (args.successCallback) { args.successCallback(result['requestId']); @@ -418,13 +332,13 @@ SQLDataControlConsumer.prototype.update = function(reqId, updateData, where) { } } }); - } catch (e) { - throw e; - } + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); + } }; -SQLDataControlConsumer.prototype.remove = function(reqId, where) { +SQLDataControlConsumer.prototype.remove = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'where', 'type': types_.STRING}, @@ -438,9 +352,9 @@ SQLDataControlConsumer.prototype.remove = function(reqId, where) { 'reqId': args.reqId, 'where': args.where }; - try { - var syncResult = - callNativeWithCallback('SQLDataControlConsumer_remove', nativeParam, function(result) { + + var syncResult = + native_.call('SQLDataControlConsumer_remove', nativeParam, function(result) { if (result.status == 'success') { if (args.successCallback) { args.successCallback(result['requestId']); @@ -454,13 +368,14 @@ SQLDataControlConsumer.prototype.remove = function(reqId, where) { } } }); - } catch (e) { - throw e; + + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); } }; -SQLDataControlConsumer.prototype.select = function(reqId, columns, where, successCallback) { +SQLDataControlConsumer.prototype.select = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'columns', 'type': types_.ARRAY}, @@ -489,9 +404,8 @@ SQLDataControlConsumer.prototype.select = function(reqId, columns, where, succes nativeParam['order'] = args.order; } - try { - var syncResult = - callNativeWithCallback('SQLDataControlConsumer_select', nativeParam, function(result) { + var syncResult = + native_.call('SQLDataControlConsumer_select', nativeParam, function(result) { if (result.status == 'success') { args.successCallback(result['result'], result['requestId']); } @@ -503,11 +417,10 @@ SQLDataControlConsumer.prototype.select = function(reqId, columns, where, succes } } }); - // if you need synchronous result from native function using 'syncResult'. - } catch (e) { - throw e; - } + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); + } }; @@ -518,7 +431,7 @@ function MappedDataControlConsumer() { MappedDataControlConsumer.prototype = new DataControlConsumerObject(); MappedDataControlConsumer.prototype.constructor = MappedDataControlConsumer; -MappedDataControlConsumer.prototype.addValue = function(reqId, key, value) { +MappedDataControlConsumer.prototype.addValue = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'key', 'type': types_.STRING}, @@ -534,9 +447,9 @@ MappedDataControlConsumer.prototype.addValue = function(reqId, key, value) { 'key': args.key, 'value': args.value }; - try { - var syncResult = - callNativeWithCallback('MappedDataControlConsumer_addValue', nativeParam, function(result) { + + var syncResult = + native_.call('MappedDataControlConsumer_addValue', nativeParam, function(result) { if (result.status == 'success') { if (args.successCallback) { args.successCallback(result['requestId']); @@ -550,13 +463,14 @@ MappedDataControlConsumer.prototype.addValue = function(reqId, key, value) { } } }); - } catch (e) { - throw e; + + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); } }; -MappedDataControlConsumer.prototype.removeValue = function(reqId, key, value, successCallback) { +MappedDataControlConsumer.prototype.removeValue = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'key', 'type': types_.STRING}, @@ -572,9 +486,9 @@ MappedDataControlConsumer.prototype.removeValue = function(reqId, key, value, su 'key': args.key, 'value': args.value }; - try { - var syncResult = - callNativeWithCallback('MappedDataControlConsumer_removeValue', nativeParam, function(result) { + + var syncResult = + native_.call('MappedDataControlConsumer_removeValue', nativeParam, function(result) { if (result.status == 'success') { args.successCallback(result['requestId']); } @@ -586,13 +500,14 @@ MappedDataControlConsumer.prototype.removeValue = function(reqId, key, value, su } } }); - } catch (e) { - throw e; + + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); } }; -MappedDataControlConsumer.prototype.getValue = function(reqId, key, successCallback) { +MappedDataControlConsumer.prototype.getValue = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'key', 'type': types_.STRING}, @@ -606,8 +521,9 @@ MappedDataControlConsumer.prototype.getValue = function(reqId, key, successCallb 'reqId': args.reqId, 'key': args.key }; - try { - var syncResult = callNativeWithCallback('MappedDataControlConsumer_getValue', nativeParam, function(result) { + + var syncResult = + native_.call('MappedDataControlConsumer_getValue', nativeParam, function(result) { if (result.status == 'success') { args.successCallback(result['result'], result['requestId']); } @@ -619,14 +535,14 @@ MappedDataControlConsumer.prototype.getValue = function(reqId, key, successCallb } } }); - } catch (e) { - throw e; + + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); } }; -MappedDataControlConsumer.prototype.updateValue = function( - reqId, key, oldValue, newValue, successCallback) { +MappedDataControlConsumer.prototype.updateValue = function() { var args = validator_.validateArgs(arguments, [ {'name': 'reqId', 'type': types_.LONG}, {'name': 'key', 'type': types_.STRING}, @@ -644,9 +560,9 @@ MappedDataControlConsumer.prototype.updateValue = function( 'oldValue': args.oldValue, 'newValue': args.newValue }; - try { - var syncResult = - callNativeWithCallback('MappedDataControlConsumer_updateValue', nativeParam, function(result) { + + var syncResult = + native_.call('MappedDataControlConsumer_updateValue', nativeParam, function(result) { if (result.status == 'success') { args.successCallback(result['requestId']); } @@ -658,13 +574,12 @@ MappedDataControlConsumer.prototype.updateValue = function( } } }); - } catch (e) { - throw e; + + if (native_.isFailure(syncResult)) { + throw native_.getErrorObject(syncResult); } }; - - exports = new DataControlManager();