From 04b81ee901568c05e8900a61ff9f5c25691e5726 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sun, 13 May 2007 16:26:55 +0200 Subject: [PATCH] Add a browsehelper component which I'll use for pyxpcom integration. --- browser/Makefile.am | 4 +- browser/components/Makefile.am | 1 + browser/components/browserhelper/.gitignore | 4 + browser/components/browserhelper/Makefile.am | 32 ++++++ .../browserhelper/nsBrowserHelper.js | 98 +++++++++++++++++++ .../browserhelper/nsIBrowserHelper.idl | 13 +++ .../{ => components}/sessionstore/.gitignore | 0 .../{ => components}/sessionstore/Makefile.am | 0 .../sessionstore/nsISessionStore.idl | 0 .../sessionstore/nsSessionStore.js | 0 browser/sugar-browser.cpp | 2 +- configure.ac | 4 +- 12 files changed, 155 insertions(+), 3 deletions(-) create mode 100644 browser/components/Makefile.am create mode 100644 browser/components/browserhelper/.gitignore create mode 100644 browser/components/browserhelper/Makefile.am create mode 100644 browser/components/browserhelper/nsBrowserHelper.js create mode 100644 browser/components/browserhelper/nsIBrowserHelper.idl rename browser/{ => components}/sessionstore/.gitignore (100%) rename browser/{ => components}/sessionstore/Makefile.am (100%) rename browser/{ => components}/sessionstore/nsISessionStore.idl (100%) rename browser/{ => components}/sessionstore/nsSessionStore.js (100%) diff --git a/browser/Makefile.am b/browser/Makefile.am index 9a7e4b09..3805566f 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 00000000..765dbeca --- /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 00000000..f722dc50 --- /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 00000000..0fda2f8a --- /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 00000000..c57e993f --- /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 00000000..08821fdc --- /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 similarity index 100% rename from browser/sessionstore/.gitignore rename to browser/components/sessionstore/.gitignore diff --git a/browser/sessionstore/Makefile.am b/browser/components/sessionstore/Makefile.am similarity index 100% rename from browser/sessionstore/Makefile.am rename to browser/components/sessionstore/Makefile.am diff --git a/browser/sessionstore/nsISessionStore.idl b/browser/components/sessionstore/nsISessionStore.idl similarity index 100% rename from browser/sessionstore/nsISessionStore.idl rename to browser/components/sessionstore/nsISessionStore.idl diff --git a/browser/sessionstore/nsSessionStore.js b/browser/components/sessionstore/nsSessionStore.js similarity index 100% rename from browser/sessionstore/nsSessionStore.js rename to browser/components/sessionstore/nsSessionStore.js diff --git a/browser/sugar-browser.cpp b/browser/sugar-browser.cpp index 4afbeaae..856dc9a8 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 eb3bad38..6f4f2a33 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