gecko/services/common/modules-testing/utils.js
Kyle Huey 45adfbf2c8 Bug 798491: Add an option to stick all chrome JSMs/JS components in the same compartment. r=mrbkap,philikon
--HG--
extra : rebase_source : 98337b6a8c07d05e8c961a452dd05a7d75c3c60b
2012-10-31 09:13:28 -07:00

43 lines
876 B
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
this.EXPORTED_SYMBOLS = [
"TestingUtils",
];
this.TestingUtils = {
/**
* Perform a deep copy of an Array or Object.
*/
deepCopy: function deepCopy(thing, noSort) {
if (typeof(thing) != "object" || thing == null) {
return thing;
}
if (Array.isArray(thing)) {
let ret = [];
for (let element of thing) {
ret.push(this.deepCopy(element, noSort));
}
return ret;
}
let ret = {};
let props = [p for (p in thing)];
if (!noSort) {
props = props.sort();
}
for (let prop of props) {
ret[prop] = this.deepCopy(thing[prop], noSort);
}
return ret;
},
};