mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-07 01:01:43 +00:00
Bug 332045 - toolkit/components/gnome should use the glue, r=darin
This commit is contained in:
parent
9eab6c6ae0
commit
411ccf69d1
@ -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) \
|
||||
|
@ -37,8 +37,7 @@
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsGConfService.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStringAPI.h"
|
||||
|
||||
#include <gconf/gconf-client.h>
|
||||
|
||||
@ -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(),
|
||||
|
@ -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 <libgnomevfs/gnome-vfs-application-registry.h>
|
||||
@ -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<nsCString> 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<UTF8StringEnumerator> 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user