Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/browser/components/browserhelper/nsBrowserHelper.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/browserhelper/nsBrowserHelper.js')
-rw-r--r--browser/components/browserhelper/nsBrowserHelper.js98
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;
+}