Index: lib/utils.js |
=================================================================== |
--- a/lib/utils.js |
+++ b/lib/utils.js |
@@ -375,16 +375,32 @@ let Utils = exports.Utils = |
getParams: function() |
{ |
let ret = sidebarParams; |
sidebarParams = null; |
return ret; |
}, |
/** |
+ * E10S compatibility shims will reroute property retrieval on some objects |
+ * in order to enable custom behavior. This cannot be disabled on case by case |
+ * basis (see https://bugzilla.mozilla.org/show_bug.cgi?id=1167802). So |
+ * instead we use a different execution context to retrieve properties when |
+ * E10S compatibility shims shouldn't kick in. This method simply returns |
+ * obj[prop] but without any custom behavior. |
+ */ |
+ getPropertyWithoutCompatShims: function(/**Object*/ obj, /**String*/ prop) |
+ { |
+ let sandbox = Cu.Sandbox(Utils.systemPrincipal); |
+ sandbox.obj = obj; |
+ sandbox.prop = prop; |
+ return Cu.evalInSandbox("obj[prop]", sandbox); |
+ }, |
+ |
+ /** |
* Verifies RSA signature. The public key and signature should be base64-encoded. |
* @param {string} key |
* @param {string} signature |
* @param {string} data |
* @return {boolean} |
*/ |
verifySignature: function(key, signature, data) |
{ |