Allow application programmer to redefine global JSON object.
In our code use xwalk.JSON instead
Change-Id: I62d57130584aea42a176633aa758b1f675d65b00
Signed-off-by: Jakub Skowron <j.skowron@samsung.com>
*/
+var JSON_ = xwalk.JSON;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
var utils_ = xwalk.utils;
for(var i = 0; i < result.payload.length; i++) {
if (result.payload[i].key === 'client_list') {
- var value = JSON.parse(result.payload[i].value);
+ var value = JSON_.parse(result.payload[i].value);
var client = new ClientInfo(value);
clients_array.push(client);
}
tizen.debug = extension;
+var JSON_ = xwalk.JSON;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
-
var callbackId = 0;
var callbacks = {};
extension.setMessageListener(function(json) {
- var result = JSON.parse(json);
+ var result = JSON_.parse(json);
var callback = callbacks[result['callbackId']];
setTimeout(function() {
callback(result);
function callNative(cmd, args) {
var json = {'cmd': cmd, 'args': args};
- var argjson = JSON.stringify(json);
+ var argjson = JSON_.stringify(json);
var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON.parse(resultString);
+ var result = JSON_.parse(resultString);
if (typeof result !== 'object') {
throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
* limitations under the License.
*/
+var JSON_ = xwalk.JSON;
var privUtils_ = xwalk.utils;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
extension.setMessageListener(function(json) {
- var result = JSON.parse(json);
+ var result = JSON_.parse(json);
var callback = callbacks[result.callbackId];
//privUtils_.log("PostMessage received: " + result.status);
function callNative(cmd, args) {
var json = {'cmd': cmd, 'args': args};
- var argjson = JSON.stringify(json);
+ var argjson = JSON_.stringify(json);
var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON.parse(resultString);
+ var result = JSON_.parse(resultString);
if (typeof result !== 'object') {
throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
* limitations under the License.
*/
+var JSON_ = xwalk.JSON;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
var type_ = xwalk.utils.type;
function callNative(cmd, args) {
var json = {'cmd': cmd, 'args': args};
- var argjson = JSON.stringify(json);
+ var argjson = JSON_.stringify(json);
var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON.parse(resultString);
+ var result = JSON_.parse(resultString);
if (typeof result !== 'object') {
throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
* limitations under the License.
*/
+var JSON_ = xwalk.JSON;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
var type_ = xwalk.utils.type;
var ports = [];
extension.setMessageListener(function(json) {
- var msg = JSON.parse(json);
+ var msg = JSON_.parse(json);
var listeners = callbacks[msg['local_port_id']];
var rmp;
function callNative(cmd, args) {
var json = {'cmd': cmd, 'args': args};
- var argjson = JSON.stringify(json);
+ var argjson = JSON_.stringify(json);
var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON.parse(resultString);
+ var result = JSON_.parse(resultString);
if (typeof result !== 'object') {
throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
* limitations under the License.
*/
+var JSON_ = xwalk.JSON;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
}
extension.setMessageListener(function(json) {
- var result = JSON.parse(json);
+ var result = JSON_.parse(json);
if (result.hasOwnProperty('listener')) {
setTimeout(function() {
function callNative(cmd, args) {
var json = {'cmd': cmd, 'args': args};
- var argjson = JSON.stringify(json);
+ var argjson = JSON_.stringify(json);
var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON.parse(resultString);
+ var result = JSON_.parse(resultString);
if (typeof result !== 'object') {
throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
* limitations under the License.
*/
+var JSON_ = xwalk.JSON;
var validator_ = xwalk.utils.validator;
var types_ = validator_.Types;
var native_ = new xwalk.utils.NativeManager(extension);
function callNative(cmd, args) {
var json = {'cmd':cmd, 'args':args};
- var argjson = JSON.stringify(json);
+ var argjson = JSON_.stringify(json);
var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON.parse(resultString);
+ var result = JSON_.parse(resultString);
if (typeof result !== 'object') {
throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
// WebAPIException and WebAPIError definition moved to src/utils/utils_api.js
// for compliance reasons. You can find more info there.
-var _global = {};
-if (typeof window != 'undefined') {
- _global = window;
-}
-else if (typeof global != 'undefiend') {
- _global = global;
-}
-
/**
* Filter match flags.
});
};
exports.SimpleCoordinates.prototype.constructor = exports.SimpleCoordinates;
-
-// Protect JSON.stringify from being overriden by application
-Object.defineProperty( _global, 'JSON', {value:JSON, writable:false, configurable:false} );
-Object.defineProperty( JSON, 'stringify', {value:JSON.stringify, writable:false, configurable:false} );
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//Object xwalk.JSON - guaranteed to not being modified by the application programmer
+var JSON_ = {stringify: JSON.stringify, parse: JSON.parse};
+Object.freeze(JSON_)
+exports.JSON = JSON_;
+
var _enableJsLogs = false;
var _global = {};
});
extension_.setMessageListener(function(json) {
- var msg = JSON.parse(json);
+ var msg = JSON_.parse(json);
var id;
if (msg.hasOwnProperty(this.CALLBACK_ID_KEY)) {
};
NativeManager.prototype.callSync = function(cmd, args) {
- var request = JSON.stringify({
+ var request = JSON_.stringify({
cmd: cmd,
args: args || {}
});
/* C++ extension didn't set sync response using Instance::SendSyncReply */
throw new WebAPIException(WebAPIException.ABORT_ERR, "Internal error");
}
- return JSON.parse(response);
+ return JSON_.parse(response);
};
NativeManager.prototype.sendRuntimeMessage = function(msg, body) {
var Bridge = function () {};
Bridge.prototype = {
sync: function (data) {
- var json = JSON.stringify({
+ var json = JSON_.stringify({
cmd: data.cmd,
args: data
});
if (debug) console.log('bridge.sync, json: ' + json);
var result = extension.internal.sendSyncMessage(json);
- var obj = JSON.parse(result);
+ var obj = JSON_.parse(result);
if (obj.error)
throw new WebAPIException(obj.code, obj.name, obj.message);
return obj.result;
async: function (data) {
var l = new Listener();
data.cid = Listeners.getInstance().add(l);
- var json = JSON.stringify({
+ var json = JSON_.stringify({
cmd: data.cmd,
args: data
});
*/
if (debug) console.log('bridge.setMessageListener, json: ' + json);
- var data = JSON.parse(json);
+ var data = JSON_.parse(json);
if (data.cid && data.action) {
setTimeout(function() {
Listeners.getInstance().resolve(data.cid, data.action, data.args, data.keep);