From 04b81ee901568c05e8900a61ff9f5c25691e5726 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sun, 13 May 2007 14:26:55 +0000 Subject: Add a browsehelper component which I'll use for pyxpcom integration. --- diff --git a/browser/Makefile.am b/browser/Makefile.am index 9a7e4b0..3805566 100644 --- a/browser/Makefile.am +++ b/browser/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = sessionstore +SUBDIRS = components libsugarbrowser_la_CPPFLAGS = \ $(WARN_CFLAGS) \ @@ -22,6 +22,8 @@ libsugarbrowser_la_CPPFLAGS = \ -I$(MOZILLA_INCLUDE_DIR)/webbrowserpersist \ -I$(MOZILLA_INCLUDE_DIR)/widget \ -I$(MOZILLA_INCLUDE_DIR)/xpcom \ + -I$(srcdir)/components/sessionstore \ + -I$(srcdir)/components/browserhelper \ -DPLUGIN_DIR=\"$(libdir)/mozilla/plugins\" \ -DSHARE_DIR=\"$(pkgdatadir)\" diff --git a/browser/components/Makefile.am b/browser/components/Makefile.am new file mode 100644 index 0000000..765dbec --- /dev/null +++ b/browser/components/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = browserhelper sessionstore diff --git a/browser/components/browserhelper/.gitignore b/browser/components/browserhelper/.gitignore new file mode 100644 index 0000000..f722dc5 --- /dev/null +++ b/browser/components/browserhelper/.gitignore @@ -0,0 +1,4 @@ +nsIBrowserHelper.h +nsIBrowserHelper.xpt +stamp-nsIBrowserHelper.h +stamp-nsIBrowserHelper.xpt diff --git a/browser/components/browserhelper/Makefile.am b/browser/components/browserhelper/Makefile.am new file mode 100644 index 0000000..0fda2f8 --- /dev/null +++ b/browser/components/browserhelper/Makefile.am @@ -0,0 +1,32 @@ +sessionstoredir = $(pkgdatadir)/mozilla/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 $(MOZILLA_IDL_DIR) -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 $(MOZILLA_IDL_DIR) -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/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; +} diff --git a/browser/components/browserhelper/nsIBrowserHelper.idl b/browser/components/browserhelper/nsIBrowserHelper.idl new file mode 100644 index 0000000..08821fd --- /dev/null +++ b/browser/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 ACString id); + + void registerBrowser(in ACString id, in nsIWebBrowser browser); + + void unregisterBrowser(in ACString id); +}; diff --git a/browser/sessionstore/.gitignore b/browser/components/sessionstore/.gitignore index 3e245c1..3e245c1 100644 --- a/browser/sessionstore/.gitignore +++ b/browser/components/sessionstore/.gitignore diff --git a/browser/sessionstore/Makefile.am b/browser/components/sessionstore/Makefile.am index 75f46ff..75f46ff 100644 --- a/browser/sessionstore/Makefile.am +++ b/browser/components/sessionstore/Makefile.am diff --git a/browser/sessionstore/nsISessionStore.idl b/browser/components/sessionstore/nsISessionStore.idl index 97f9668..97f9668 100644 --- a/browser/sessionstore/nsISessionStore.idl +++ b/browser/components/sessionstore/nsISessionStore.idl diff --git a/browser/sessionstore/nsSessionStore.js b/browser/components/sessionstore/nsSessionStore.js index 0ce3401..0ce3401 100644 --- a/browser/sessionstore/nsSessionStore.js +++ b/browser/components/sessionstore/nsSessionStore.js diff --git a/browser/sugar-browser.cpp b/browser/sugar-browser.cpp index 4afbeaa..856dc9a 100644 --- a/browser/sugar-browser.cpp +++ b/browser/sugar-browser.cpp @@ -63,7 +63,7 @@ #include #include -#include "sessionstore/nsISessionStore.h" +#include "nsISessionStore.h" #define SUGAR_PATH "SUGAR_PATH" diff --git a/configure.ac b/configure.ac index eb3bad3..6f4f2a3 100644 --- a/configure.ac +++ b/configure.ac @@ -96,7 +96,9 @@ Makefile bin/Makefile data/Makefile browser/Makefile -browser/sessionstore/Makefile +browser/components/Makefile +browser/components/sessionstore/Makefile +browser/components/browserhelper/Makefile services/Makefile services/presence/Makefile services/clipboard/Makefile -- cgit v0.9.1