Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-05-19 14:10:05 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-05-19 14:10:05 (GMT)
commite77e975333ac47677c48b57cea0ef6f785609941 (patch)
tree81490b4c694c490a115d67e7f07947672b5342c5 /components
Initial checkin
Diffstat (limited to 'components')
-rw-r--r--components/Makefile.am1
-rw-r--r--components/browserhelper/Makefile.am32
-rw-r--r--components/browserhelper/nsBrowserHelper.js100
-rw-r--r--components/browserhelper/nsIBrowserHelper.idl13
4 files changed, 146 insertions, 0 deletions
diff --git a/components/Makefile.am b/components/Makefile.am
new file mode 100644
index 0000000..4385e25
--- /dev/null
+++ b/components/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = browserhelper
diff --git a/components/browserhelper/Makefile.am b/components/browserhelper/Makefile.am
new file mode 100644
index 0000000..e33b907
--- /dev/null
+++ b/components/browserhelper/Makefile.am
@@ -0,0 +1,32 @@
+sessionstoredir = $(pkgdatadir)/components
+
+sessionstore_DATA = \
+ nsIBrowserHelper.xpt \
+ nsBrowserHelper.js
+
+BUILT_SOURCES = \
+ nsIBrowserHelper.xpt \
+ nsIBrowserHelper.h
+
+stamp_files = \
+ stamp-nsIBrowserHelper.xpt \
+ stamp-nsIBrowserHelper.h
+
+nsIBrowserHelper.xpt: stamp-nsIBrowserHelper.xpt
+ @true
+stamp-nsIBrowserHelper.xpt: nsIBrowserHelper.idl
+ $(XPIDL) -m typelib -w -v -I $(XPIDL_IDLDIR) -e nsIBrowserHelper.xpt \
+ $(srcdir)/nsIBrowserHelper.idl \
+ && echo timestamp > $(@F)
+
+nsIBrowserHelper.h: stamp-nsIBrowserHelper.h
+ @true
+stamp-nsIBrowserHelper.h: nsIBrowserHelper.idl
+ $(XPIDL) -m header -w -v -I $(XPIDL_IDLDIR) -e nsIBrowserHelper.h \
+ $(srcdir)/nsIBrowserHelper.idl \
+ && echo timestamp > $(@F)
+
+CLEANFILES = $(stamp_files) $(BUILT_SOURCES)
+DISTCLEANFILES = $(stamp_files) $(BUILT_SOURCES)
+MAINTAINERCLEANFILES = $(stamp_files) $(BUILT_SOURCES)
+EXTRA_DIST = nsIBrowserHelper.idl nsBrowserHelper.js
diff --git a/components/browserhelper/nsBrowserHelper.js b/components/browserhelper/nsBrowserHelper.js
new file mode 100644
index 0000000..f726ddf
--- /dev/null
+++ b/components/browserhelper/nsBrowserHelper.js
@@ -0,0 +1,100 @@
+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 browsers = [];
+
+function BrowserHelperService() {
+}
+
+BrowserHelperService.prototype = {
+
+/* ........ nsIBrowserHelper API .............. */
+
+ getBrowser: function bh_getBrowser(aId) {
+ return browsers[aId]
+ },
+
+ registerBrowser: function bh_registerBrowser(aId, aBrowser) {
+ browsers[aId] = aBrowser;
+ },
+
+ unregisterBrowser: function bh_unregisterBrowser(aId) {
+ browsers.pop(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) {
+ dump("nsBrowserHelper: NSGetModule\n")
+ return BrowserHelperModule;
+}
diff --git a/components/browserhelper/nsIBrowserHelper.idl b/components/browserhelper/nsIBrowserHelper.idl
new file mode 100644
index 0000000..abe52b3
--- /dev/null
+++ b/components/browserhelper/nsIBrowserHelper.idl
@@ -0,0 +1,13 @@
+#include "nsISupports.idl"
+
+interface nsIWebBrowser;
+
+[scriptable, uuid(475e1194-92bc-4e03-92f3-5ad6ccddaca3)]
+interface nsIBrowserHelper : nsISupports
+{
+ nsIWebBrowser getBrowser(in long id);
+
+ void registerBrowser(in long id, in nsIWebBrowser browser);
+
+ void unregisterBrowser(in long id);
+};