From a5bea2483f00918a8a5a4600902bd62914ec8143 Mon Sep 17 00:00:00 2001 From: "benjamin%smedbergs.us" Date: Wed, 17 May 2006 02:38:59 +0000 Subject: [PATCH] Bug 332045 - toolkit/components/gnome should use the glue, r=darin --- toolkit/system/Makefile.in | 4 +-- toolkit/system/nsGConfService.cpp | 18 +++++----- toolkit/system/nsGnomeVFSService.cpp | 50 ++++++++++++++++++++++++---- 3 files changed, 55 insertions(+), 17 deletions(-) diff --git a/toolkit/system/Makefile.in b/toolkit/system/Makefile.in index 55d03da5e645..2055f6ce2f0d 100644 --- a/toolkit/system/Makefile.in +++ b/toolkit/system/Makefile.in @@ -43,7 +43,6 @@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk MODULE = mozgnome -MOZILLA_INTERNAL_API = 1 XPIDLSRCS = \ nsIGConfService.idl \ @@ -73,7 +72,8 @@ CPPSRCS = \ $(NULL) EXTRA_DSO_LDOPTS += \ - $(MOZ_COMPONENT_LIBS) \ + $(XPCOM_GLUE_LDOPTS) \ + $(XPCOM_FROZEN_LDOPTS) \ $(MOZ_GCONF_LIBS) \ $(MOZ_GNOMEVFS_LIBS) \ $(MOZ_LIBGNOME_LIBS) \ diff --git a/toolkit/system/nsGConfService.cpp b/toolkit/system/nsGConfService.cpp index eb0d07c0e558..d8af2255a52c 100644 --- a/toolkit/system/nsGConfService.cpp +++ b/toolkit/system/nsGConfService.cpp @@ -37,8 +37,7 @@ * ***** END LICENSE BLOCK ***** */ #include "nsGConfService.h" -#include "nsCRT.h" -#include "nsString.h" +#include "nsStringAPI.h" #include @@ -165,8 +164,9 @@ NS_IMETHODIMP nsGConfService::GetAppForProtocol(const nsACString &aScheme, PRBool *aEnabled, nsACString &aHandler) { - nsCAutoString key(NS_LITERAL_CSTRING("/desktop/gnome/url-handlers/") - + aScheme + NS_LITERAL_CSTRING("/command")); + nsCAutoString key("/desktop/gnome/url-handlers/"); + key.Append(aScheme); + key.Append("/command"); GError *err = nsnull; gchar *command = gconf_client_get_string(mClient, key.get(), &err); @@ -193,8 +193,9 @@ NS_IMETHODIMP nsGConfService::HandlerRequiresTerminal(const nsACString &aScheme, PRBool *aResult) { - nsCAutoString key(NS_LITERAL_CSTRING("/desktop/gnome/url-handlers/") - + aScheme + NS_LITERAL_CSTRING("/requires_terminal")); + nsCAutoString key("/desktop/gnome/url-handlers/"); + key.Append(aScheme); + key.Append("/requires_terminal"); GError *err = nsnull; *aResult = gconf_client_get_bool(mClient, key.get(), &err); @@ -210,8 +211,9 @@ NS_IMETHODIMP nsGConfService::SetAppForProtocol(const nsACString &aScheme, const nsACString &aCommand) { - nsCAutoString key(NS_LITERAL_CSTRING("/desktop/gnome/url-handlers/") - + aScheme + NS_LITERAL_CSTRING("/command")); + nsCAutoString key("/desktop/gnome/url-handlers/"); + key.Append(aScheme); + key.Append("/command"); PRBool res = gconf_client_set_string(mClient, key.get(), PromiseFlatCString(aCommand).get(), diff --git a/toolkit/system/nsGnomeVFSService.cpp b/toolkit/system/nsGnomeVFSService.cpp index 3e390f6a298e..097be0c712b6 100644 --- a/toolkit/system/nsGnomeVFSService.cpp +++ b/toolkit/system/nsGnomeVFSService.cpp @@ -37,10 +37,12 @@ * ***** END LICENSE BLOCK ***** */ #include "nsGnomeVFSService.h" -#include "nsStringEnumerator.h" #include "nsVoidArray.h" -#include "nsString.h" +#include "nsStringAPI.h" #include "nsIURI.h" +#include "nsTArray.h" +#include "nsIStringEnumerator.h" +#include "nsAutoPtr.h" extern "C" { #include @@ -101,22 +103,55 @@ nsGnomeVFSMimeApp::GetExpectsURIs(PRInt32* aExpects) return NS_OK; } +class UTF8StringEnumerator : public nsIUTF8StringEnumerator +{ +public: + UTF8StringEnumerator() : mIndex(0) { } + ~UTF8StringEnumerator() { } + + NS_DECL_ISUPPORTS + NS_DECL_NSIUTF8STRINGENUMERATOR + + nsTArray mStrings; + PRUint32 mIndex; +}; + +NS_IMPL_ISUPPORTS1(UTF8StringEnumerator, nsIUTF8StringEnumerator) + +NS_IMETHODIMP +UTF8StringEnumerator::HasMore(PRBool *aResult) +{ + *aResult = mIndex < mStrings.Length(); + return NS_OK; +} + +NS_IMETHODIMP +UTF8StringEnumerator::GetNext(nsACString& aResult) +{ + if (mIndex >= mStrings.Length()) + return NS_ERROR_UNEXPECTED; + + aResult.Assign(mStrings[mIndex]); + ++mIndex; + return NS_OK; +} + NS_IMETHODIMP nsGnomeVFSMimeApp::GetSupportedURISchemes(nsIUTF8StringEnumerator** aSchemes) { *aSchemes = nsnull; - nsCStringArray *array = new nsCStringArray(); + nsRefPtr array = new UTF8StringEnumerator(); NS_ENSURE_TRUE(array, NS_ERROR_OUT_OF_MEMORY); for (GList *list = mApp->supported_uri_schemes; list; list = list->next) { - if (!array->AppendCString(nsDependentCString((char*) list->data))) { - delete array; + if (!array->mStrings.AppendElement((char*) list->data)) { return NS_ERROR_OUT_OF_MEMORY; } } - return NS_NewAdoptingUTF8StringEnumerator(aSchemes, array); + NS_ADDREF(*aSchemes = array); + return NS_OK; } NS_IMETHODIMP @@ -138,7 +173,8 @@ NS_IMETHODIMP nsGnomeVFSService::GetMimeTypeFromExtension(const nsACString &aExtension, nsACString& aMimeType) { - nsCAutoString fileExtToUse(NS_LITERAL_CSTRING(".") + aExtension); + nsCAutoString fileExtToUse("."); + fileExtToUse.Append(aExtension); const char *mimeType = gnome_vfs_mime_type_from_name(fileExtToUse.get()); aMimeType.Assign(mimeType);