diff options
author | Simon Schampijer <erikos@localhost.localdomain> | 2008-07-29 08:04:05 (GMT) |
---|---|---|
committer | Simon Schampijer <erikos@localhost.localdomain> | 2008-07-29 08:04:05 (GMT) |
commit | 80820f45ae5147269565aa1e05057031ee621070 (patch) | |
tree | 9c2ec9a6d29af471585c6b58a3b4b633e387d570 | |
parent | 6a904c919eabdd78f6aa9ebce2107e993a5f8131 (diff) |
Setup a nsXULAppInfo service and register #7530 (tomeu)
-rw-r--r-- | components/.gitignore | 1 | ||||
-rw-r--r-- | components/Makefile.am | 3 | ||||
-rw-r--r-- | components/xulappinfo.js.in | 106 | ||||
-rw-r--r-- | configure.ac | 16 | ||||
-rw-r--r-- | src/HulahopDirectoryProvider.cpp | 17 | ||||
-rw-r--r-- | src/hulahop.cpp | 2 |
6 files changed, 140 insertions, 5 deletions
diff --git a/components/.gitignore b/components/.gitignore index 19903b8..0b0232f 100644 --- a/components/.gitignore +++ b/components/.gitignore @@ -1 +1,2 @@ *.xpt +xulappinfo.js diff --git a/components/Makefile.am b/components/Makefile.am index 1f4466a..bd6bafc 100644 --- a/components/Makefile.am +++ b/components/Makefile.am @@ -6,7 +6,8 @@ xpt_DATA = $(xpt_in_files:.idl=.xpt) $(LIBXUL_SDK_DIR)/bin/xpidl -m typelib -w -v -I $(LIBXUL_SDK_DIR)/idl -e $@ $< componentsdir = $(pkglibdir)/components -components_DATA = hulahopAddCertException.js +components_DATA = hulahopAddCertException.js \ + xulappinfo.js EXTRA_DIST = $(xpt_in_files) $(components_DATA) diff --git a/components/xulappinfo.js.in b/components/xulappinfo.js.in new file mode 100644 index 0000000..6a40ce5 --- /dev/null +++ b/components/xulappinfo.js.in @@ -0,0 +1,106 @@ +/* FIXME: The values in the block below should be supplied by the activity. */ +const APPLICATION_ID = '{ab9fc198-f515-477b-843f-8fb52810a3e0}' +const APPLICATION_VENDOR = 'Sugar' +const APPLICATION_NAME = 'Browser Activity' +const APPLICATION_VERSION = '@HULAHOP_VERSION@' +const APPLICATION_BUILD_ID = '@HULAHOP_BUILD_ID@' + +const PLATFORM_VERSION = '1.9' +const PLATFORM_BUILD_ID = '@HULAHOP_BUILD_ID@' +const OS = '@HULAHOP_HOST_OS@' +const XPCOMABI = '@HULAHOP_HOST_CPU@' + '-gcc3' + + +const XULAPPINFO_CONTRACTID = "@mozilla.org/xre/app-info;1"; +const XULAPPINFO_CID = Components.ID("{18eec982-b411-4f07-9fca-79d33ee6e4b5}"); + +const nsIXULAppInfo = Components.interfaces.nsIXULAppInfo; +const nsIXULRuntime = Components.interfaces.nsIXULRuntime; +const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar; +const nsIFactory = Components.interfaces.nsIFactory; + +function XULAppInfoService() +{} + +XULAppInfoService.prototype.ID = APPLICATION_ID +XULAppInfoService.prototype.vendor = APPLICATION_VENDOR +XULAppInfoService.prototype.name = APPLICATION_NAME +XULAppInfoService.prototype.version = APPLICATION_VERSION +XULAppInfoService.prototype.appBuildID = APPLICATION_BUILD_ID +XULAppInfoService.prototype.platformVersion = PLATFORM_VERSION +XULAppInfoService.prototype.platformBuildID = PLATFORM_BUILD_ID +XULAppInfoService.prototype.inSafeMode = false +XULAppInfoService.prototype.logConsoleErrors = true +XULAppInfoService.prototype.OS = OS +XULAppInfoService.prototype.XPCOMABI = XPCOMABI + +XULAppInfoService.prototype.QueryInterface = +function appinfo_QueryInterface(iid) +{ + if (!iid.equals(nsIXULAppInfo) && + !iid.equals(nsIXULRuntime) && + !iid.equals(nsISupports)) + { + throw Components.results.NS_ERROR_NO_INTERFACE; + } + + return this; +} + +var XULAppInfoFactory = new Object(); + +XULAppInfoFactory.createInstance = +function(outer, iid) +{ + if (outer != null) + throw Components.results.NS_ERROR_NO_AGGREGATION; + + if (!iid.equals(nsIXULAppInfo) && !iid.equals(nsISupports)) + throw Components.results.NS_ERROR_INVALID_ARG; + + return new XULAppInfoService(); +} + + +var XULAppInfoModule = new Object(); + +XULAppInfoModule.registerSelf = +function mod_registerSelf(compMgr, fileSpec, location, type) +{ + compMgr = compMgr.QueryInterface(nsIComponentRegistrar); + + compMgr.registerFactoryLocation(XULAPPINFO_CID, + "XUL AppInfo service", + XULAPPINFO_CONTRACTID, + fileSpec, location, type); +} + +XULAppInfoModule.unregisterSelf = +function mod_unregisterSelf(compMgr, fileSpec, location) +{ +} + +XULAppInfoModule.getClassObject = +function mod_getClassObject(compMgr, cid, iid) +{ + if (cid.equals(XULAPPINFO_CID)) + return XULAppInfoFactory; + + if (!iid.equals(nsIFactory)) + throw Components.results.NS_ERROR_NOT_IMPLEMENTED; + + throw Components.results.NS_ERROR_NO_INTERFACE; +} + +XULAppInfoModule.canUnload = +function mod_canUnload(compMgr) +{ + return true; +} + +/* entrypoint */ +function NSGetModule(compMgr, fileSpec) +{ + return XULAppInfoModule; +} + diff --git a/configure.ac b/configure.ac index e9b6b22..e2f2f67 100644 --- a/configure.ac +++ b/configure.ac @@ -1,10 +1,20 @@ -AC_INIT([hulahop],[0.4.2],[],[hulahop]) +m4_define([hulahop_build_id],[2008072400]) # FIXME: when should we update this? +m4_define([hulahop_version],[0.4.2]) + +AC_INIT([hulahop],[hulahop_version],[],[hulahop]) + +AC_SUBST([HULAHOP_VERSION],[hulahop_version]) +AC_SUBST([HULAHOP_BUILD_ID],[hulahop_build_id]) AC_PREREQ([2.59]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([configure.ac]) +AC_CANONICAL_HOST +AC_SUBST([HULAHOP_HOST_CPU],[$host_cpu]) +AC_SUBST([HULAHOP_HOST_OS],[$host_os]) + AM_INIT_AUTOMAKE([1.9 foreign dist-bzip2 no-dist-gzip]) AC_PROG_LIBTOOL @@ -36,6 +46,10 @@ AC_SUBST([LIBXUL_LIBS]) AC_SUBST([LIBXUL_DIR]) AC_SUBST([LIBXUL_SDK_DIR]) +AC_CONFIG_FILES([ +components/xulappinfo.js +]) + AC_OUTPUT([ Makefile components/Makefile diff --git a/src/HulahopDirectoryProvider.cpp b/src/HulahopDirectoryProvider.cpp index fb21d69..6fc438c 100644 --- a/src/HulahopDirectoryProvider.cpp +++ b/src/HulahopDirectoryProvider.cpp @@ -51,7 +51,8 @@ HulahopDirectoryProvider::GetFile(const char *aKey, { nsresult rv; - if (!strcmp(aKey, NS_APP_USER_PROFILE_50_DIR) && mProfilePath) { + if ((!strcmp(aKey, NS_APP_USER_PROFILE_50_DIR) || + !strcmp(aKey, NS_APP_USER_PROFILE_LOCAL_50_DIR)) && mProfilePath) { NS_ADDREF(*aResult = mProfilePath); return NS_OK; } @@ -67,7 +68,19 @@ HulahopDirectoryProvider::GetFile(const char *aKey, NS_ADDREF(*aResult = file); return NS_OK; } - + + if (!strcmp(aKey, NS_XPCOM_XPTI_REGISTRY_FILE) && mProfilePath) { + nsCOMPtr<nsIFile> file; + rv = mProfilePath->Clone(getter_AddRefs(file)); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + + rv = file->AppendNative(nsCString("xpti.dat")); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + + NS_ADDREF(*aResult = file); + return NS_OK; + } + if (!strcmp(aKey, NS_APP_PREF_DEFAULTS_50_DIR)) { nsCOMPtr<nsILocalFile> dataDir; NS_NewNativeLocalFile(nsCString(DATA_DIR), diff --git a/src/hulahop.cpp b/src/hulahop.cpp index 8d90c6f..3e3b963 100644 --- a/src/hulahop.cpp +++ b/src/hulahop.cpp @@ -56,7 +56,7 @@ hulahop_startup() NS_ENSURE_SUCCESS(rv, FALSE); nsCOMPtr<nsILocalFile> binDir; - rv = NS_NewNativeLocalFile(nsCString(LIBXUL_DIR"/components"), PR_TRUE, + rv = NS_NewNativeLocalFile(nsCString(LIBXUL_DIR), PR_TRUE, getter_AddRefs(binDir)); NS_ENSURE_SUCCESS(rv, FALSE); |