diff options
Diffstat (limited to 'browser/components/browserhelper/nsBrowserHelper.js')
-rw-r--r-- | browser/components/browserhelper/nsBrowserHelper.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/browser/components/browserhelper/nsBrowserHelper.js b/browser/components/browserhelper/nsBrowserHelper.js new file mode 100644 index 0000000..c57e993 --- /dev/null +++ b/browser/components/browserhelper/nsBrowserHelper.js @@ -0,0 +1,98 @@ +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cr = Components.results; + +const CID = Components.ID("{475e1194-92bc-4e03-92f3-5ad6ccddaca3}"); +const CONTRACT_ID = "@laptop.org/browser/browserhelper;1"; +const CLASS_NAME = "Browser Helper"; + +var browser; + +function BrowserHelperService() { +} + +BrowserHelperService.prototype = { + +/* ........ nsIBrowserHelper API .............. */ + + getBrowser: function bh_getBrowser(aId) { + return browser; + }, + + registerBrowser: function bh_registerBrowser(aBrowser, aId) { + browser = aBrowser; + }, + + unregisterBrowser: function bh_unregisterBrowser(aId) { + }, + + QueryInterface: function(aIID) { + if (!aIID.equals(Ci.nsISupports) && + !aIID.equals(Ci.nsIBrowserHelper)) { + Components.returnCode = Cr.NS_ERROR_NO_INTERFACE; + return null; + } + + return this; + } +; + +/* :::::::: Service Registration & Initialization ::::::::::::::: */ + +/* ........ nsIModule .............. */ + +const BrowserHelperModule = { + + getClassObject: function(aCompMgr, aCID, aIID) { + if (aCID.equals(CID)) { + return BrowserHelperFactory; + } + + Components.returnCode = Cr.NS_ERROR_NOT_REGISTERED; + return null; + }, + + registerSelf: function(aCompMgr, aFileSpec, aLocation, aType) { + aCompMgr.QueryInterface(Ci.nsIComponentRegistrar); + aCompMgr.registerFactoryLocation(CID, CLASS_NAME, CONTRACT_ID, aFileSpec, aLocation, aType); + }, + + unregisterSelf: function(aCompMgr, aLocation, aType) { + aCompMgr.QueryInterface(Ci.nsIComponentRegistrar); + aCompMgr.unregisterFactoryLocation(CID, aLocation); + }, + + canUnload: function(aCompMgr) { + return true; + } +} + +/* ........ nsIFactory .............. */ + +const BrowserHelperFactory = { + + createInstance: function(aOuter, aIID) { + if (aOuter != null) { + Components.returnCode = Cr.NS_ERROR_NO_AGGREGATION; + return null; + } + + return (new BrowserHelperService()).QueryInterface(aIID); + }, + + lockFactory: function(aLock) { }, + + QueryInterface: function(aIID) { + if (!aIID.equals(Ci.nsISupports) && !aIID.equals(Ci.nsIModule) && + !aIID.equals(Ci.nsIFactory) && !aIID.equals(Ci.nsIBrowserHelper)) { + Components.returnCode = Cr.NS_ERROR_NO_INTERFACE; + return null; + } + + return this; + } +}; + +function NSGetModule(aComMgr, aFileSpec) { + return BrowserHelperModule; +} |