| Index: lib/hooks.js |
| =================================================================== |
| deleted file mode 100644 |
| --- a/lib/hooks.js |
| +++ /dev/null |
| @@ -1,75 +0,0 @@ |
| -/* 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/. */ |
| - |
| -function hook(obj, name, func, cleanup) |
| -{ |
| - let orig = obj[name]; |
| - let origGet = obj.__lookupGetter__(name); |
| - let origSet = obj.__lookupSetter__(name); |
| - let dumbOverrideAttempt = false; |
| - |
| - let newFunc = function() |
| - { |
| - let params = arguments; |
| - try |
| - { |
| - let result = func.apply(this, params); |
| - if (typeof result == "object") |
| - params = result; |
| - } |
| - catch(e) |
| - { |
| - Cu.reportError(e); |
| - } |
| - |
| - try |
| - { |
| - return orig.apply(this, params); |
| - } |
| - finally |
| - { |
| - if (typeof cleanup == "function") |
| - cleanup(); |
| - } |
| - }; |
| - newFunc.toString = function() |
| - { |
| - dumbOverrideAttempt = true; |
| - return orig.toString(); |
| - }; |
| - |
| - obj.__defineGetter__(name, function() |
| - { |
| - dumbOverrideAttempt = false; |
| - return newFunc; |
| - }); |
| - |
| - obj.__defineSetter__(name, function(value) |
| - { |
| - if (dumbOverrideAttempt) |
| - { |
| - orig = value; |
| - } |
| - else |
| - { |
| - delete obj[name]; |
| - obj[name] = value; |
| - } |
| - }); |
| - |
| - return function() |
| - { |
| - delete obj[name]; |
| - obj[name] = orig; |
| - if (origGet) |
| - { |
| - obj.__defineGetter__(name, origGet); |
| - } |
| - if (origSet) |
| - { |
| - obj.__defineSetter__(name, origSet); |
| - } |
| - }; |
| -} |
| -exports.hook = hook; |