From e77e975333ac47677c48b57cea0ef6f785609941 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sat, 19 May 2007 14:10:05 +0000 Subject: Initial checkin --- (limited to 'components') 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); +}; -- cgit v0.9.1