// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//We're in a function set up by XWALK which 'use strict' mode,
-//so we use below function to get out of the strict mode to get global 'this'
-var _global = (new Function('return this'))();
-
-var shallow_copy_own_elements = function(orig) {
- var copy = {};
- //copy only own properties
- var names = Object.getOwnPropertyNames(orig);
- for( var i in names ) {
- var key = names[i]
- copy[key] = orig[key];
- }
- return copy;
-};
-
-//xwalk.JSON: guaranteed to not being modified by the application programmer
-exports.JSON = shallow_copy_own_elements(JSON);
-Object.freeze(exports.JSON);
+//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 = {};
+if (typeof window != 'undefined') {
+ _global = window;
+}
+else if (typeof global != 'undefiend') {
+ _global = global;
+}
+
/**
* @deprecated Used only by validateArguments()
*/
});
}
-var origString = String;
-var StringPrototypeCopy = shallow_copy_own_elements(String.prototype);
-Object.freeze(StringPrototypeCopy);
-
-var StringCopy = function(str) {
- return Object.setPrototypeOf( new origString(str), StringPrototypeCopy );
-};
-StringCopy.fromCharCode = String.fromCharCode;
-StringCopy.fromCodePoint = String.fromCodePoint;
-StringCopy.raw = String.raw;
-Object.freeze(StringCopy);
-
-//xwalk.utils.StringCopy: returns a sanitized version of String - user cannot modify its prototype
-Utils.prototype.StringCopy = StringCopy;
-
Utils.prototype.error = console.error.bind(console);
Utils.prototype.warn = console.warn.bind(console);
Utils.prototype.log = _enableJsLogs ? console.log.bind(console) : function(){};
};
Type.prototype.isA = function(obj, type) {
- return obj !== undefined && obj !== null &&
- obj.constructor !== null && obj.constructor !== undefined &&
- obj.constructor.name === type;
+ var clas = Object.prototype.toString.call(obj).slice(8, -1);
+ return (obj !== undefined) && (obj !== null) && (clas === type);
};
Type.prototype.isEmptyObject = function(obj) {
};
function _toString(val) {
- return StringCopy(val).toString();
+ return String(val);
}
Converter.prototype.toString = function(val, nullable) {
});
extension_.setMessageListener(function(json) {
- var msg = exports.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 = exports.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 exports.JSON.parse(response);
+ return JSON_.parse(response);
};
NativeManager.prototype.sendRuntimeMessage = function(msg, body) {
var Bridge = function () {};
Bridge.prototype = {
sync: function (data) {
- var json = exports.JSON.stringify({
+ var json = JSON_.stringify({
cmd: data.cmd,
args: data
});
if (debug) xwalk.utilss.log('bridge.sync, json: ' + json);
var result = extension.internal.sendSyncMessage(json);
- var obj = exports.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 = exports.JSON.stringify({
+ var json = JSON_.stringify({
cmd: data.cmd,
args: data
});
*/
if (debug) xwalk.utils.log('bridge.setMessageListener, json: ' + json);
- var data = exports.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);