add: sandbox.console = console; 
context:   injectScripts: function(scripts, url, unsafeContentWin) {    var sandbox;    var script;    var logger;    var storage;    var xmlhttpRequester;    var safeWin = new XPCNativeWrapper(unsafeContentWin);    var safeDoc = safeWin.document;    for (var i = 0; script = scripts[i]; i++) {      sandbox = new Components.utils.Sandbox(safeWin);      logger = new GM_ScriptLogger(script);      storage = new GM_ScriptStorage(script);      xmlhttpRequester = new GM_xmlhttpRequester(unsafeContentWin,                                                 appSvc.hiddenDOMWindow);      sandbox.window = safeWin;      sandbox.document = sandbox.window.document;      sandbox.unsafeWindow = unsafeContentWin;      // hack XPathResult since that is so commonly used      sandbox.XPathResult = Ci.nsIDOMXPathResult;      // add our own APIs      sandbox.GM_addStyle = function(css) { GM_addStyle(safeDoc, css) };      sandbox.GM_log = GM_hitch(logger, "log");      sandbox.GM_setValue = GM_hitch(storage, "setValue");      sandbox.GM_getValue = GM_hitch(storage, "getValue");      sandbox.GM_openInTab = GM_hitch(this, "openInTab", unsafeContentWin);      sandbox.GM_xmlhttpRequest = GM_hitch(xmlhttpRequester,                                           "contentStartRequest");      sandbox.GM_registerMenuCommand = GM_hitch(this,                                                "registerMenuCommand",                                                unsafeContentWin);      sandbox.__proto__ = safeWin;      this.evalInSandbox("(function(){\n" +                         getContents(getScriptFileURI(script.filename)) +                         "\n})()",                         url,                         sandbox,                         script);    }  },
meta: 4236	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/4236/c1205de4bbe1261b13603cbb8371edf75e9a60b6/greasemonkey.js/clean/src/components/greasemonkey.js