diff options
author | Kris Maglione <maglione.k@gmail.com> | 2008-12-23 15:07:48 -0500 |
---|---|---|
committer | Kris Maglione <maglione.k@gmail.com> | 2008-12-23 15:07:48 -0500 |
commit | 89698e3e050feb9876adaf01db6c7b6dee4697e3 (patch) | |
tree | 54a5d3e127621991828163610ca9b9f290e3dee2 /common | |
parent | aa27e686c8732361d86490117a8ad69fb7ba0ee5 (diff) | |
download | pentadactyl-89698e3e050feb9876adaf01db6c7b6dee4697e3.tar.gz |
s/service[(".*?")]/services.get(\1)/g; s/service.get(\w+)/'services.create("' + lcfirst($1) + '")'/ge
Diffstat (limited to 'common')
-rw-r--r-- | common/content/buffer.js | 4 | ||||
-rw-r--r-- | common/content/completion.js | 14 | ||||
-rw-r--r-- | common/content/events.js | 5 | ||||
-rw-r--r-- | common/content/find.js | 2 | ||||
-rw-r--r-- | common/content/io.js | 28 | ||||
-rw-r--r-- | common/content/liberator-overlay.js | 2 | ||||
-rw-r--r-- | common/content/liberator.js | 47 | ||||
-rw-r--r-- | common/content/options.js | 49 | ||||
-rw-r--r-- | common/content/service.js | 34 | ||||
-rw-r--r-- | common/content/services.js | 73 | ||||
-rw-r--r-- | common/content/tabs.js | 8 | ||||
-rw-r--r-- | common/content/ui.js | 4 |
12 files changed, 150 insertions, 120 deletions
diff --git a/common/content/buffer.js b/common/content/buffer.js index 9cbab80d..fd750f6e 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -751,8 +751,8 @@ function Buffer() //{{{ { try { - var cacheEntryDescriptor = service["cache"].createSession(proto, 0, true) - .openCacheEntry(cacheKey, ACCESS_READ, false); + var cacheEntryDescriptor = services.get("cache").createSession(proto, 0, true) + .openCacheEntry(cacheKey, ACCESS_READ, false); break; } catch (e) {} diff --git a/common/content/completion.js b/common/content/completion.js index a6bea8f0..fd465199 100644 --- a/common/content/completion.js +++ b/common/content/completion.js @@ -1551,7 +1551,7 @@ function Completion() //{{{ location: function location(context) { - if (!service["autoCompleteSearch"]) + if (!services.get("autoCompleteSearch")) return context.anchored = false; context.title = ["Smart Completions"]; @@ -1567,8 +1567,8 @@ function Completion() //{{{ for (i in util.range(0, result.matchCount)) ]; }); - service["autoCompleteSearch"].stopSearch(); - service["autoCompleteSearch"].startSearch(context.filter, "", context.result, { + services.get("autoCompleteSearch").stopSearch(); + services.get("autoCompleteSearch").startSearch(context.filter, "", context.result, { onSearchResult: function onSearchResult(search, result) { context.result = result; @@ -1651,9 +1651,7 @@ function Completion() //{{{ context.anchored = false; context.title = ["Firefox Preference", "Value"]; context.keys = { text: function (item) item, description: function (item) options.getPref(item) }; - context.completions = Cc["@mozilla.org/preferences-service;1"] - .getService(Ci.nsIPrefBranch) - .getChildList("", { value: 0 }); + context.completions = services.get("pref").getChildList("", { value: 0 }); }, search: function search(context, noSuggest) @@ -1704,7 +1702,7 @@ function Completion() //{{{ let completions = []; engineList.forEach(function (name) { - let engine = service["browserSearch"].getEngineByAlias(name); + let engine = services.get("browserSearch").getEngineByAlias(name); if (!engine) return; let [,word] = /^\s*(\S+)/.exec(context.filter) || []; @@ -1727,7 +1725,7 @@ function Completion() //{{{ context.title = ["Shell Command", "Path"]; context.generate = function () { - let dirNames = service["environment"].get("PATH").split(RegExp(liberator.has("Win32") ? ";" : ":")); + let dirNames = services.get("environment").get("PATH").split(RegExp(liberator.has("Win32") ? ";" : ":")); let commands = []; for (let [,dirName] in Iterator(dirNames)) diff --git a/common/content/events.js b/common/content/events.js index 226d4483..630de130 100644 --- a/common/content/events.js +++ b/common/content/events.js @@ -1644,9 +1644,8 @@ function Events() //{{{ prefObserver: { register: function () { - const prefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService); - this._branch = prefService.getBranch(""); // better way to monitor all changes? - this._branch.QueryInterface(Ci.nsIPrefBranch2); + // better way to monitor all changes? + this._branch = services.get("pref").getBranch("").QueryInterface(Ci.nsIPrefBranch2); this._branch.addObserver("", this, false); }, diff --git a/common/content/find.js b/common/content/find.js index 09f02a43..8e67fbb4 100644 --- a/common/content/find.js +++ b/common/content/find.js @@ -138,7 +138,7 @@ function Search() //{{{ var highlightObj = { search: function (aWord, matchCase) { - var finder = service.getFind(); + var finder = services.create("find"); if (matchCase !== undefined) finder.caseSensitive = matchCase; diff --git a/common/content/io.js b/common/content/io.js index 1b7135e0..8254151d 100644 --- a/common/content/io.js +++ b/common/content/io.js @@ -69,7 +69,7 @@ function IO() //{{{ const downloadManager = Cc["@mozilla.org/download-manager;1"].createInstance(Ci.nsIDownloadManager); const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); - var processDir = service["directory"].get("CurWorkD", Ci.nsIFile); + var processDir = services.get("directory").get("CurWorkD", Ci.nsIFile); var cwd = processDir; var oldcwd = null; @@ -77,7 +77,7 @@ function IO() //{{{ var scriptNames = []; // default option values - var cdpath = "," + (service["environment"].get("CDPATH").replace(/[:;]/g, ",") || ","); + var cdpath = "," + (services.get("environment").get("CDPATH").replace(/[:;]/g, ",") || ","); var shell, shellcmdflag; if (WINDOWS) @@ -89,7 +89,7 @@ function IO() //{{{ } else { - shell = service["environment"].get("SHELL") || "sh"; + shell = services.get("environment").get("SHELL") || "sh"; shellcmdflag = "-c"; } @@ -132,7 +132,7 @@ function IO() //{{{ { try { - service.getFile().initWithPath(path); + services.create("file").initWithPath(path); return true; } catch (e) @@ -480,7 +480,7 @@ function IO() //{{{ // also expands relative paths getFile: function (path, noCheckPWD) { - let file = service.getFile(); + let file = services.create("file"); if (/file:\/\//.test(path)) { @@ -521,7 +521,7 @@ function IO() //{{{ break; } - let file = service["directory"].get("TmpD", Ci.nsIFile); + let file = services.get("directory").get("TmpD", Ci.nsIFile); file.append(tmpName); file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0600); @@ -627,7 +627,7 @@ function IO() //{{{ } else { - let dirs = service["environment"].get("PATH").split(WINDOWS ? ";" : ":"); + let dirs = services.get("environment").get("PATH").split(WINDOWS ? ";" : ":"); // Windows tries the cwd first TODO: desirable? if (WINDOWS) dirs = [io.getCurrentDirectory().path].concat(dirs); @@ -645,7 +645,7 @@ lookup: // automatically try to add the executable path extensions on windows if (WINDOWS) { - let extensions = service["environment"].get("PATHEXT").split(";"); + let extensions = services.get("environment").get("PATHEXT").split(";"); for (let [,extension] in Iterator(extensions)) { file = joinPaths(dir, program + extension); @@ -664,7 +664,7 @@ lookup: return -1; } - let process = service.getProcess(); + let process = services.create("process"); process.init(file); process.run(blocking, args, args.length); @@ -922,7 +922,7 @@ lookup: }; //}}} -IO.__defineGetter__("runtimePath", function () service["environment"].get(config.name.toUpperCase() + "_RUNTIME") || +IO.__defineGetter__("runtimePath", function () services.get("environment").get(config.name.toUpperCase() + "_RUNTIME") || "~/" + (liberator.has("Win32") ? "" : ".") + config.name.toLowerCase()); IO.expandPath = function (path, relative) @@ -939,7 +939,7 @@ IO.expandPath = function (path, relative) function expand(path) path.replace( !WINDOWS ? /\$(\w+)\b|\${(\w+)}/g : /\$(\w+)\b|\${(\w+)}|%(\w+)%/g, - function (m, n1, n2, n3) service["environment"].get(n1 || n2 || n3) || m + function (m, n1, n2, n3) services.get("environment").get(n1 || n2 || n3) || m ); path = expand(path); @@ -947,12 +947,12 @@ IO.expandPath = function (path, relative) if (!relative && (WINDOWS ? /^~(?:$|\\)/ : /^~(?:$|\/)/).test(path)) { // Try $HOME first, on all systems - let home = service["environment"].get("HOME"); + let home = services.get("environment").get("HOME"); // Windows has its own ideosyncratic $HOME variables. if (!home && WINDOWS) - home = service["environment"].get("USERPROFILE") || - service["environment"].get("HOMEDRIVE") + service["environment"].get("HOMEPATH"); + home = services.get("environment").get("USERPROFILE") || + services.get("environment").get("HOMEDRIVE") + services.get("environment").get("HOMEPATH"); path = home + path.substr(1); } diff --git a/common/content/liberator-overlay.js b/common/content/liberator-overlay.js index eb60e48f..73431da4 100644 --- a/common/content/liberator-overlay.js +++ b/common/content/liberator-overlay.js @@ -31,7 +31,7 @@ let prefix = [BASE]; - ["service.js", + ["services.js", "liberator.js", "config.js", "util.js", diff --git a/common/content/liberator.js b/common/content/liberator.js index e6470186..27ec275c 100644 --- a/common/content/liberator.js +++ b/common/content/liberator.js @@ -28,11 +28,6 @@ the terms of any one of the MPL, the GPL or the LGPL. /** @scope modules */ -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cr = Components.results; -const Cu = Components.utils; - Cu.import("resource://gre/modules/XPCOMUtils.jsm"); const plugins = {}; @@ -684,18 +679,18 @@ const liberator = (function () //{{{ return false; // so you can do: if (...) return liberator.beep(); }, - newThread: function () service["threadManager"].newThread(0), + newThread: function () services.get("threadManager").newThread(0), callAsync: function (thread, self, func) { - thread = thread || service["threadManager"].newThread(0); + thread = thread || services.get("threadManager").newThread(0); thread.dispatch(new Runnable(self, func, Array.slice(arguments, 3)), thread.DISPATCH_NORMAL); }, // be sure to call GUI related methods like alert() or dump() ONLY in the main thread callFunctionInThread: function (thread, func) { - thread = thread || service["threadManager"].newThread(0); + thread = thread || services.get("threadManager").newThread(0); // DISPATCH_SYNC is necessary, otherwise strange things will happen thread.dispatch(new Runnable(null, func, Array.slice(arguments, 2)), thread.DISPATCH_SYNC); @@ -767,7 +762,7 @@ const liberator = (function () //{{{ loadScript: function (uri, context) { - service["subscriptLoader"].loadSubScript(uri, context); + services.get("subscriptLoader").loadSubScript(uri, context); }, eval: function (str, context) @@ -901,7 +896,7 @@ const liberator = (function () //{{{ // if clearFocusedElement, also blur a focused link focusContent: function (clearFocusedElement) { - if (window != service["windowWatcher"].activeWindow) + if (window != services.get("windowWatcher").activeWindow) return; let elem = config.mainWidget || window.content; @@ -934,7 +929,7 @@ const liberator = (function () //{{{ hasExtension: function (name) { - let extensions = service["extensionManager"].getItemList(Ci.nsIUpdateItem.TYPE_EXTENSION, {}); + let extensions = services.get("extensionManager").getItemList(Ci.nsIUpdateItem.TYPE_EXTENSION, {}); return extensions.some(function (e) e.name == name); }, @@ -1112,8 +1107,8 @@ const liberator = (function () //{{{ case liberator.NEW_WINDOW: window.open(); - service["windowMediator"].getMostRecentWindow("navigator:browser") - .loadURI(url, null, postdata); + services.get("windowMediator").getMostRecentWindow("navigator:browser") + .loadURI(url, null, postdata); break; default: @@ -1154,7 +1149,7 @@ const liberator = (function () //{{{ options.setPref("browser.startup.page", 1); // start with default homepage session if (force) - service["appStartup"].quit(Ci.nsIAppStartup.eForceQuit); + services.get("appStartup").quit(Ci.nsIAppStartup.eForceQuit); else window.goQuitApplication(); }, @@ -1184,24 +1179,24 @@ const liberator = (function () //{{{ { // notify all windows that an application quit has been requested. var cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool); - service["observer"].notifyObservers(cancelQuit, "quit-application-requested", null); + services.get("observer").notifyObservers(cancelQuit, "quit-application-requested", null); // something aborted the quit process. if (cancelQuit.data) return; // notify all windows that an application quit has been granted. - service["observer"].notifyObservers(null, "quit-application-granted", null); + services.get("observer").notifyObservers(null, "quit-application-granted", null); // enumerate all windows and call shutdown handlers - let windows = service["windowMediator"].getEnumerator(null); + let windows = services.get("windowMediator").getEnumerator(null); while (windows.hasMoreElements()) { let win = windows.getNext(); if (("tryToClose" in win) && !win.tryToClose()) return; } - service["appStartup"].quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit); + services.get("appStartup").quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit); }, // TODO: move to {muttator,vimperator,...}.js @@ -1228,10 +1223,10 @@ const liberator = (function () //{{{ try { - let infoPath = service.getFile(); + let infoPath = services.create("file"); infoPath.initWithPath(IO.expandPath(IO.runtimePath.replace(/,.*/, ""))); infoPath.append("info"); - infoPath.append(service["profile"].selectedProfile.name); + infoPath.append(services.get("profile").selectedProfile.name); storage.infoPath = infoPath; } catch (e) @@ -1280,7 +1275,7 @@ const liberator = (function () //{{{ // make sourcing asynchronous, otherwise commands that open new tabs won't work setTimeout(function () { - let init = service["environment"].get(config.name.toUpperCase() + "_INIT"); + let init = services.get("environment").get(config.name.toUpperCase() + "_INIT"); if (init) liberator.execute(init); else @@ -1337,7 +1332,7 @@ const liberator = (function () //{{{ sleep: function (delay) { - let mainThread = service["threadManager"].mainThread; + let mainThread = services.get("threadManager").mainThread; let end = Date.now() + delay; while (Date.now() < end) @@ -1347,8 +1342,8 @@ const liberator = (function () //{{{ callInMainThread: function (callback, self) { - let mainThread = service["threadManager"].mainThread; - if (!service["threadManager"].isMainThread) + let mainThread = services.get("threadManager").mainThread; + if (!services.get("threadManager").isMainThread) mainThread.dispatch({ run: callback.call(self) }, mainThread.DISPATCH_NORMAL); else callback.call(self); @@ -1356,7 +1351,7 @@ const liberator = (function () //{{{ threadYield: function (flush, interruptable) { - let mainThread = service["threadManager"].mainThread; + let mainThread = services.get("threadManager").mainThread; liberator.interrupted = false; do { @@ -1396,7 +1391,7 @@ const liberator = (function () //{{{ get windows() { let windows = []; - let enumerator = service["windowMediator"].getEnumerator("navigator:browser"); + let enumerator = services.get("windowMediator").getEnumerator("navigator:browser"); while (enumerator.hasMoreElements()) windows.push(enumerator.getNext()); diff --git a/common/content/options.js b/common/content/options.js index 558bedc6..9877c741 100644 --- a/common/content/options.js +++ b/common/content/options.js @@ -304,8 +304,6 @@ function Options() //{{{ ////////////////////// PRIVATE SECTION ///////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////{{{ - const prefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); - const SAVED = "liberator.saved."; const optionHash = {}; @@ -332,27 +330,27 @@ function Options() //{{{ prefContexts[prefContexts.length - 1][name] = val; } - let type = prefService.getPrefType(name); + let type = services.get("pref").getPrefType(name); switch (typeof value) { case "string": - if (type == prefService.PREF_INVALID || type == prefService.PREF_STRING) - prefService.setCharPref(name, value); - else if (type == prefService.PREF_INT) + if (type == Ci.nsIPrefBranch.PREF_INVALID || type == Ci.nsIPrefBranch.PREF_STRING) + services.get("pref").setCharPref(name, value); + else if (type == Ci.nsIPrefBranch.PREF_INT) liberator.echoerr("E521: Number required after =: " + name + "=" + value); else liberator.echoerr("E474: Invalid argument: " + name + "=" + value); break; case "number": - if (type == prefService.PREF_INVALID || type == prefService.PREF_INT) - prefService.setIntPref(name, value); + if (type == Ci.nsIPrefBranch.PREF_INVALID || type == Ci.nsIPrefBranch.PREF_INT) + services.get("pref").setIntPref(name, value); else liberator.echoerr("E474: Invalid argument: " + name + "=" + value); break; case "boolean": - if (type == prefService.PREF_INVALID || type == prefService.PREF_BOOL) - prefService.setBoolPref(name, value); - else if (type == prefService.PREF_INT) + if (type == Ci.nsIPrefBranch.PREF_INVALID || type == Ci.nsIPrefBranch.PREF_BOOL) + services.get("pref").setBoolPref(name, value); + else if (type == Ci.nsIPrefBranch.PREF_INT) liberator.echoerr("E521: Number required after =: " + name + "=" + value); else liberator.echoerr("E474: Invalid argument: " + name + "=" + value); @@ -368,22 +366,22 @@ function Options() //{{{ if (forcedDefault != null) // this argument sets defaults for non-user settable options (like extensions.history.comp_history) defaultValue = forcedDefault; - let branch = defaultBranch ? prefService.getDefaultBranch("") : prefService; - let type = prefService.getPrefType(name); + let branch = defaultBranch ? services.get("pref").getDefaultBranch("") : services.get("pref"); + let type = services.get("pref").getPrefType(name); try { switch (type) { - case prefService.PREF_STRING: + case Ci.nsIPrefBranch.PREF_STRING: let value = branch.getComplexValue(name, Ci.nsISupportsString).data; // try in case it's a localized string (will throw an exception if not) - if (!prefService.prefIsLocked(name) && !prefService.prefHasUserValue(name) && - /^chrome:\/\/.+\/locale\/.+\.properties/.test(value)) + if (!services.get("pref").prefIsLocked(name) && !services.get("pref").prefHasUserValue(name) && + RegExp("chrome://.+/locale/.+\\.properties").test(value)) value = branch.getComplexValue(name, Ci.nsIPrefLocalizedString).data; return value; - case prefService.PREF_INT: + case Ci.nsIPrefBranch.PREF_INT: return branch.getIntPref(name); - case prefService.PREF_BOOL: + case Ci.nsIPrefBranch.PREF_BOOL: return branch.getBoolPref(name); default: return defaultValue; @@ -788,8 +786,9 @@ function Options() //{{{ { completion.setFunctionCompleter(options.get, [function () ([o.name, o.description] for (o in options))]); completion.setFunctionCompleter([options.getPref, options.safeSetPref, options.setPref, options.resetPref, options.invertPref], - [function () prefService.getChildList("", { value: 0 }) - .map(function (pref) [pref, ""])]); + [function () services.get("pref") + .getChildList("", { value: 0 }) + .map(function (pref) [pref, ""])]); }); return { @@ -890,12 +889,12 @@ function Options() //{{{ if (!filter) filter = ""; - let prefArray = prefService.getChildList("", { value: 0 }); + let prefArray = services.get("pref").getChildList("", { value: 0 }); prefArray.sort(); let prefs = function () { - for each (let pref in prefArray) + for (let [,pref] in Iterator(prefArray)) { - let userValue = prefService.prefHasUserValue(pref); + let userValue = services.get("pref").prefHasUserValue(pref); if (onlyNonDefault && !userValue || pref.indexOf(filter) == -1) continue; @@ -990,7 +989,7 @@ function Options() //{{{ { try { - return prefService.clearUserPref(name); + return services.get("pref").clearUserPref(name); } catch (e) { @@ -1001,7 +1000,7 @@ function Options() //{{{ // this works only for booleans invertPref: function (name) { - if (prefService.getPrefType(name) == prefService.PREF_BOOL) + if (services.get("pref").getPrefType(name) == Ci.nsIPrefBranch.PREF_BOOL) this.setPref(name, !this.getPref(name)); else liberator.echoerr("E488: Trailing characters: " + name + "!"); diff --git a/common/content/service.js b/common/content/service.js deleted file mode 100644 index 26fd1ab6..00000000 --- a/common/content/service.js +++ /dev/null @@ -1,34 +0,0 @@ -/** @scope modules */ - -let (cc = function (class, iface, meth) { try { return Components.classes[class][meth || "getService"](iface) } catch (e) {} }) -{ - // var Ci = Components.interfaces; // quick fix for muttator, will change/remove service.js anyway after the vacation - - /** - * Cached XPCOM services and instances. - * - * @singleton - */ - const service = { - appStartup: cc("@mozilla.org/toolkit/app-startup;1", Components.interfaces.nsIAppStartup), - autoCompleteSearch: cc("@mozilla.org/browser/global-history;2", Components.interfaces.nsIAutoCompleteSearch), - browserSearch: cc("@mozilla.org/browser/search-service;1", Components.interfaces.nsIBrowserSearchService), - cache: cc("@mozilla.org/network/cache-service;1", Components.interfaces.nsICacheService), - console: cc("@mozilla.org/consoleservice;1", Components.interfaces.nsIConsoleService), - directory: cc("@mozilla.org/file/directory_service;1", Components.interfaces.nsIProperties), - environment: cc("@mozilla.org/process/environment;1", Components.interfaces.nsIEnvironment), - extensionManager: cc("@mozilla.org/extensions/manager;1", Components.interfaces.nsIExtensionManager), - json: cc("@mozilla.org/dom/json;1", Components.interfaces.nsIJSON, "createInstance"), - observer: cc("@mozilla.org/observer-service;1", Components.interfaces.nsIObserverService), - profile: cc("@mozilla.org/toolkit/profile-service;1", Components.interfaces.nsIToolkitProfileService), - sessionStore: cc("@mozilla.org/browser/sessionstore;1", Components.interfaces.nsISessionStore), - subscriptLoader: cc("@mozilla.org/moz/jssubscript-loader;1", Components.interfaces.mozIJSSubScriptLoader), - threadManager: cc("@mozilla.org/thread-manager;1", Components.interfaces.nsIThreadManager), - windowMediator: cc("@mozilla.org/appshell/window-mediator;1", Components.interfaces.nsIWindowMediator), - windowWatcher: cc("@mozilla.org/embedcomp/window-watcher;1", Components.interfaces.nsIWindowWatcher), - getFile: function () Cc["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile), - getFind: function () Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance(Components.interfaces.nsIFind), - getProcess: function () Cc["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess) - }; -}; - diff --git a/common/content/services.js b/common/content/services.js new file mode 100644 index 00000000..2b22c702 --- /dev/null +++ b/common/content/services.js @@ -0,0 +1,73 @@ +/***** BEGIN LICENSE BLOCK ***** {{{ + ©2008 Kris Maglione <maglione.k at Gmail> + Distributable under the terms of the MIT license, which allows + for sublicensing under any compatible license, including the MPL, + GPL, and MPL. Anyone who changes this file is welcome to relicense + it under any or all of those licenseses. +}}} ***** END LICENSE BLOCK *****/ + +/** @scope modules */ + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cr = Components.results; +const Cu = Components.utils; + +/** + * Cached XPCOM services and instances. + * + * @constructor + */ +function Services() +{ + const classes = {}; + const services = {}; + function create(classes, ifaces, meth) + { + ifaces = Array.concat(ifaces); + try + { + let res = Cc[classes][meth || "getService"](ifaces.shift()) + ifaces.forEach(function (iface) res.QueryInterface(iface)); + return res; + } + catch (e) {} + } + const self = { + add: function (name, class, ifaces, meth) + { + return services[name] = create(class, ifaces, meth); + }, + addClass: function (name, class, ifaces) + { + return classes[name] = function () create(class, ifaces, "createInstance"); + }, + get: function (name) services[name], + create: function (name) classes[name]() + }; + self.add("appStartup", "@mozilla.org/toolkit/app-startup;1", Ci.nsIAppStartup); + self.add("autoCompleteSearch", "@mozilla.org/browser/global-history;2", Ci.nsIAutoCompleteSearch); + self.add("browserSearch", "@mozilla.org/browser/search-service;1", Ci.nsIBrowserSearchService); + self.add("cache", "@mozilla.org/network/cache-service;1", Ci.nsICacheService); + self.add("console", "@mozilla.org/consoleservice;1", Ci.nsIConsoleService); + self.add("directory", "@mozilla.org/file/directory_service;1", Ci.nsIProperties); + self.add("environment", "@mozilla.org/process/environment;1", Ci.nsIEnvironment); + self.add("extensionManager", "@mozilla.org/extensions/manager;1", Ci.nsIExtensionManager); + self.add("json", "@mozilla.org/dom/json;1", Ci.nsIJSON, "createInstance"); + self.add("observer", "@mozilla.org/observer-service;1", Ci.nsIObserverService); + self.add("pref", "@mozilla.org/preferences-service;1", [Ci.nsIPrefService, Ci.nsIPrefBranch, Ci.nsIPrefBranch2]); + self.add("profile", "@mozilla.org/toolkit/profile-service;1", Ci.nsIToolkitProfileService); + self.add("sessionStore", "@mozilla.org/browser/sessionstore;1", Ci.nsISessionStore); + self.add("subscriptLoader", "@mozilla.org/moz/jssubscript-loader;1", Ci.mozIJSSubScriptLoader); + self.add("threadManager", "@mozilla.org/thread-manager;1", Ci.nsIThreadManager); + self.add("windowMediator", "@mozilla.org/appshell/window-mediator;1", Ci.nsIWindowMediator); + self.add("windowWatcher", "@mozilla.org/embedcomp/window-watcher;1", Ci.nsIWindowWatcher); + + self.addClass("file", "@mozilla.org/file/local;1", Ci.nsILocalFile); + self.addClass("find", "@mozilla.org/embedcomp/rangefind;1", Ci.nsIFind); + self.addClass("process", "@mozilla.org/process/util;1", Ci.nsIProcess); + return self; +}; + +var services = Services(); + diff --git a/common/content/tabs.js b/common/content/tabs.js index 3341a0ac..4e33b942 100644 --- a/common/content/tabs.js +++ b/common/content/tabs.js @@ -102,8 +102,8 @@ function Tabs() //{{{ if (!from) from = getBrowser().mTabContainer.selectedItem; - let tabState = service["sessionStore"].getTabState(from); - service["sessionStore"].setTabState(to, tabState); + let tabState = services.get("sessionStore").getTabState(from); + services.get("sessionStore").setTabState(to, tabState); } // hide tabs initially @@ -743,7 +743,7 @@ function Tabs() //{{{ get closedTabs() { - return service["json"].decode(service["sessionStore"].getClosedTabData(window)); + return services.get("json").decode(services.get("sessionStore").getClosedTabData(window)); }, list: function (filter) @@ -970,7 +970,7 @@ function Tabs() //{{{ tab = getBrowser().mTabContainer.selectedItem; window.open(); - let win = service["windowMediator"].getMostRecentWindow("navigator:browser"); + let win = services.get("windowMediator").getMostRecentWindow("navigator:browser"); copyTab(win.getBrowser().mCurrentTab, tab); this.remove(tab, 1, false, 1); diff --git a/common/content/ui.js b/common/content/ui.js index 3f817e4c..458a353a 100644 --- a/common/content/ui.js +++ b/common/content/ui.js @@ -659,8 +659,8 @@ function CommandLine() //{{{ { completer: function completer(value) { - let engines = service["browserSearch"].getEngines({}) - .filter(function (engine) engine.supportsResponseType("application/x-suggestions+json")); + let engines = services.get("browserSearch").getEngines({}) + .filter(function (engine) engine.supportsResponseType("application/x-suggestions+json")); return engines.map(function (engine) [engine.alias, engine.description]); }, |