* 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 = {
'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});
}
}
}
} 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});
}
}
function _DataControlListenerManager() {
- this._SQLDataControlCallbackMap = {};
- this._MAPDataControlCallbackMap = {};
+ this._SQLDataControlCbMap = {};
+ this._MAPDataControlCbMap = {};
this.lastListenerId = 0;
this.changeEvent = changeEvent.bind(this);
}
_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;
}
}
}
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)) {
} 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;
_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);
}
}
};
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});
}
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}
]);
}
return listenersManager.addChangeListener(type, this.providerId, this.dataId,
- args.dataChangeCallback, args.errorCallback);
-}
+ args.dataChangeCallback, args.errorCallback);
+};
DataControlConsumerObject.prototype.removeChangeListener = function() {
}
listenersManager.removeChangeListener(type, this.providerId, this.dataId, args.watchId);
-}
+};
function SQLDataControlConsumer() {
// constructor of 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},
'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']);
}
}
});
- } 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},
'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']);
}
}
});
- } 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},
'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']);
}
}
});
- } 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},
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']);
}
}
}
});
- // if you need synchronous result from native function using 'syncResult'.
- } catch (e) {
- throw e;
- }
+ if (native_.isFailure(syncResult)) {
+ throw native_.getErrorObject(syncResult);
+ }
};
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},
'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']);
}
}
});
- } 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},
'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']);
}
}
}
});
- } 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},
'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']);
}
}
}
});
- } 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},
'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']);
}
}
}
});
- } catch (e) {
- throw e;
+
+ if (native_.isFailure(syncResult)) {
+ throw native_.getErrorObject(syncResult);
}
};
-
-
exports = new DataControlManager();