From 8686bfd08b7c15046c0d222753052c2789a359bf Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sat, 29 Mar 2014 12:29:13 -0700 Subject: [PATCH] Remove wip delta that got sucked into revision 5d591219a8ce. Fixes Firefox <29. --- common/modules/main.jsm | 59 ++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/common/modules/main.jsm b/common/modules/main.jsm index bc0a2da6..80e64a79 100644 --- a/common/modules/main.jsm +++ b/common/modules/main.jsm @@ -110,34 +110,49 @@ var Modules = function Modules(window) { const BASES = [BASE, "resource://dactyl-local-content/"]; - var traps = { - get: function window_get(target, prop) { - // `in`, not `hasOwnProperty`, because we want to return - // unbound methods in `Object.prototype` - if (prop in proxyCache) - return proxyCache[prop]; - - let p = target[prop]; - if (callable(p)) - return proxyCache[prop] = p.bind(target); - - return p; - }, - - set: function window_set(target, prop, val) { - return target[prop] = val; - } - }; - let proxyCache = {}; if (config.haveGecko(29)) - var proxy = new Proxy(window, traps); + var proxy = new Proxy(window, { + get: function window_get(target, prop) { + // `in`, not `hasOwnProperty`, because we want to return + // unbound methods in `Object.prototype` + if (prop in proxyCache) + return proxyCache[prop]; + + let p = target[prop]; + if (callable(p)) + return proxyCache[prop] = p.bind(target); + + return p; + }, + + set: function window_set(target, prop, val) { + return target[prop] = val; + } + }); else { // Bug 814892 let o = {}; // Oh, the brokenness... See bug 793210 Object.preventExtensions(o); - proxy = new Proxy(o, update(traps, { + proxy = new Proxy(o, { + get: function window_get(target, prop) { + // `in`, not `hasOwnProperty`, because we want to return + // unbound methods in `Object.prototype` + if (prop in proxyCache) + return proxyCache[prop]; + + let p = window[prop]; + if (callable(p)) + return proxyCache[prop] = p.bind(window); + + return p; + }, + + set: function window_set(target, prop, val) { + return window[prop] = val; + }, + getOwnPropertyDescriptor: function (target, prop) Object.getOwnPropertyDescriptor(window, prop), getOwnPropertyNames: function (target, prop) Object.getOwnPropertyNames(window), defineProperty: function (target, prop, desc) Object.defineProperty(window, prop, desc), @@ -146,7 +161,7 @@ var Modules = function Modules(window) { hasOwn: function (target, prop) hasOwnProperty(window, prop), enumerate: function (target) (p for (p in window)), iterate: function (target) (p for (p of window)) - })); + }); } var jsmodules = newContext(proxy, false, "Dactyl `jsmodules`");