summaryrefslogtreecommitdiff
path: root/firefox-RC1-stock-icons-be.patch
diff options
context:
space:
mode:
Diffstat (limited to 'firefox-RC1-stock-icons-be.patch')
-rw-r--r--firefox-RC1-stock-icons-be.patch1161
1 files changed, 0 insertions, 1161 deletions
diff --git a/firefox-RC1-stock-icons-be.patch b/firefox-RC1-stock-icons-be.patch
deleted file mode 100644
index e29aa72..0000000
--- a/firefox-RC1-stock-icons-be.patch
+++ /dev/null
@@ -1,1161 +0,0 @@
-Index: configure.in
-===================================================================
-RCS file: /cvsroot/mozilla/configure.in,v
-retrieving revision 1.1335.2.6.2.18
-diff -u -r1.1335.2.6.2.18 configure.in
---- configure.in 31 Oct 2004 07:17:58 -0000 1.1335.2.6.2.18
-+++ configure.in 3 Nov 2004 10:03:35 -0000
-@@ -92,6 +92,7 @@
- MAKE_VERSION=3.78
- WINDRES_VERSION=2.14.90
- W32API_VERSION=2.4
-+GNOMEUI_VERSION=2.0.6
- GNOMEVFS_VERSION=2.0
- GCONF_VERSION=1.2.1
- LIBGNOME_VERSION=2.0
-@@ -3588,7 +3589,35 @@
-
- AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
- fi
-+dnl = libgnomeui support module
-+dnl ========================================================
-+
-+if test "$MOZ_ENABLE_GTK2"
-+then
-+ MOZ_ENABLE_GNOMEUI=1
-+
-+ MOZ_ARG_DISABLE_BOOL(gnomeui,
-+ [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
-+ MOZ_ENABLE_GNOMEUI=,
-+ MOZ_ENABLE_GNOMEUI=force)
-+
-+ if test "$MOZ_ENABLE_GNOMEUI"
-+ then
-+ PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
-+ [MOZ_ENABLE_GNOMEUI=1], [
-+ if test "$MOZ_ENABLE_GNOMEUI" = "force"
-+ then
-+ AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
-+ fi
-+ MOZ_ENABLE_GNOMEUI=
-+ ])
-+ fi
-
-+ AC_SUBST(MOZ_ENABLE_GNOMEUI)
-+ AC_SUBST(MOZ_GNOMEUI_CFLAGS)
-+ AC_SUBST(MOZ_GNOMEUI_LIBS)
-+
-+fi
- dnl ========================================================
- dnl = Setting MOZ_EXTRA_X11CONVERTERS turns on additional
- dnl = converters in intl/uconv that are used only by X11 gfx
-@@ -3999,6 +4028,17 @@
- MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
- fi
- ;;
-+*)
-+ if test "$MOZ_ENABLE_GNOMEUI"; then
-+
-+ MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
-+ fi
-+ ;;
-+*)
-+ if test "$MOZ_ENABLE_GNOMEUI"; then
-+ MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
-+ fi
-+ ;;
- esac
-
- MOZ_ARG_ENABLE_STRING(image-decoders,
-Index: config/autoconf.mk.in
-===================================================================
-RCS file: /cvsroot/mozilla/config/autoconf.mk.in,v
-retrieving revision 3.310.6.7
-diff -u -r3.310.6.7 autoconf.mk.in
---- config/autoconf.mk.in 31 Oct 2004 04:29:54 -0000 3.310.6.7
-+++ config/autoconf.mk.in 3 Nov 2004 10:03:54 -0000
-@@ -165,8 +165,14 @@
- endif
- endif
- MOZ_LIBART_LIBS = @MOZ_LIBART_LIBS@
-+
- MOZ_CAIRO_LIBS = @MOZ_CAIRO_LIBS@
-
-+MOZ_ENABLE_GNOMEUI = @MOZ_ENABLE_GNOMEUI@
-+MOZ_GNOMEUI_CFLAGS = @MOZ_GNOMEUI_CFLAGS@
-+MOZ_GNOMEUI_LIBS = @MOZ_GNOMEUI_LIBS@
-+
-+
- MOZ_GNOMEVFS_CFLAGS = @MOZ_GNOMEVFS_CFLAGS@
- MOZ_GNOMEVFS_LIBS = @MOZ_GNOMEVFS_LIBS@
-
-Index: modules/libpr0n/decoders/Makefile.in
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/Makefile.in,v
-retrieving revision 1.10
-diff -u -r1.10 Makefile.in
---- modules/libpr0n/decoders/Makefile.in 1 Jul 2003 03:57:24 -0000 1.10
-+++ modules/libpr0n/decoders/Makefile.in 3 Nov 2004 10:03:59 -0000
-@@ -29,6 +29,9 @@
- DIRS = $(MOZ_IMG_DECODERS)
-
- ifneq (,$(findstring icon,$(MOZ_IMG_DECODERS)))
-+ifdef MOZ_ENABLE_GNOMEUI
-+DIRS := icon/gtk $(DIRS)
-+endif
- ifeq ($(OS_ARCH),WINNT)
- DIRS := icon/win $(DIRS)
- endif
-@@ -39,6 +42,9 @@
- DIRS := icon/mac $(DIRS)
- endif
- endif # icon
-+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
-+DIRS := icon/gtk $(DIRS)
-+endif
-
- include $(topsrcdir)/config/rules.mk
-
-Index: modules/libpr0n/decoders/icon/Makefile.in
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/Makefile.in,v
-retrieving revision 1.9.20.1
-diff -u -r1.9.20.1 Makefile.in
---- modules/libpr0n/decoders/icon/Makefile.in 22 Jun 2004 22:37:07 -0000 1.9.20.1
-+++ modules/libpr0n/decoders/icon/Makefile.in 3 Nov 2004 10:03:59 -0000
-@@ -35,6 +35,13 @@
-
- PACKAGE_FILE = imgicon.pkg
-
-+ifdef MOZ_ENABLE_GNOMEUI
-+EXTRA_DSO_LDOPTS = $(MOZ_GNOMEUI_LIBS)
-+PLATFORM = gtk
-+FORCE_SHARED_LIB = 1
-+EXPORT_LIBRARY =
-+endif
-+
- ifeq ($(OS_ARCH),WINNT)
- EXTRA_DSO_LIBS = gkgfx
- PLATFORM = win
-@@ -48,6 +55,10 @@
- PLATFORM = mac
- endif
-
-+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
-+PLATFORM = gtk
-+endif
-+
- DIRS = $(PLATFORM)
-
- REQUIRES = xpcom \
-@@ -68,7 +79,7 @@
-
- SHARED_LIBRARY_LIBS = $(DIST)/lib/$(LIB_PREFIX)imgicon$(PLATFORM)_s.$(LIB_SUFFIX)
-
--EXTRA_DSO_LDOPTS = \
-+EXTRA_DSO_LDOPTS += \
- $(EXTRA_DSO_LIBS) \
- $(MOZ_COMPONENT_LIBS) \
- $(NULL)
-Index: modules/libpr0n/decoders/icon/nsIIconURI.idl
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIIconURI.idl,v
-retrieving revision 1.5
-diff -u -r1.5 nsIIconURI.idl
---- modules/libpr0n/decoders/icon/nsIIconURI.idl 27 Apr 2002 05:32:16 -0000 1.5
-+++ modules/libpr0n/decoders/icon/nsIIconURI.idl 3 Nov 2004 10:03:59 -0000
-@@ -21,26 +21,90 @@
-
- #include "nsIURI.idl"
-
--//
--// moz-icon URLs have the following syntax
--//
--// moz-icon:<file-uri>?size=16&contentType=text/html
--// OR
--// moz-icon://dummyfile.html
--// moz-icon://dummyfile.html?size=32
--//
--// The content type field is optional. The size field is optional. You only need to specify a file url inside the icon
--// if the file you want the icon for actually exists. Otherwise you can omit the file:// and just place a dummy file name with the extension
--// or content type you want: moz-icon://dummy.html.
--//
-+ /**
-+ * nsIIconURI
-+ *
-+ * This interface derives from nsIURI, to provide additional information
-+ * about moz-icon URIs. These URIs
-+ *
-+ * What *is* a moz-icon URI you ask? Well, it has the following syntax:
-+ *
-+ * moz-icon://[<file-uri> | <file-with-extension>]? ['?'[<parameter-value-pairs>]]
-+ *
-+ * <file-uri> is a legal file: URI spec. You only need to specify a file: URI inside the icon
-+ * if the file you want the icon for actually exists.
-+ *
-+ * <file-with-extension> is any filename with an extension, e.g. "dummy.html".
-+ * If the file you want an icon for isn't known to exist, you can omit the file URI, and just
-+ * place a dummy file name with the extension or content type you want: moz-icon://dummy.html.
-+ *
-+ * <stock-image> is of the format: stock/<icon-name>
-+ *
-+ * <icon-name> is a valid icon name, such as 'ok', 'cancel', 'yes', 'no'.
-+ * XXXcaa document or reference to all 76 (yes, 76) of them.
-+ *
-+ * Legal parameter value pairs are listed below:
-+ *
-+ * Parameter: size
-+ * Values: [<integer> | button | toolbar | toolbarsmall | menu | dialog]
-+ * Description: If integer, this is the desired size in square pixels of the icon
-+ * Else, use the OS default for the specified keyword context.
-+ * Note that stock images require a keyword, not an integer pixel value.
-+ *
-+ * Parameter: contentType
-+ * Values: <mime-type>
-+ * Description: A valid mime type for the icon.
-+ */
-
- [scriptable, uuid(733A7A16-2D36-11d5-9907-001083010E9B)]
- interface nsIMozIconURI : nsIURI
- {
-- // Returns the file URL contained within this -moz-icon url.
-- attribute nsIURI IconFile; // maybe null if there isn't a real file we are trying to fetch
-+ /**
-+ * iconFile
-+ *
-+ * the file URL contained within this moz-icon url, or null.
-+ */
-+ attribute nsIURI iconFile;
-+ /**
-+ * imageSize
-+ *
-+ * The image area in square pixels, defaulting to 16 if unspecified.
-+ */
-+ attribute unsigned long imageSize;
-
-- attribute unsigned long imageSize; // measured by # of pixels in a row. defaults to 16.
-- attribute ACString contentType; // may be an empty string
-+ /**
-+ * contentType
-+ *
-+ * A valid mime type, or the empty string.
-+ */
-+
-+ attribute ACString contentType;
-+
-+ /**
-+ * fileExtension
-+ *
-+ * The file extension of the file which we are looking up.
-+ */
- readonly attribute ACString fileExtension;
-+
-+ /**
-+ * stockIcon
-+ *
-+ * The stock icon name requested from the OS.
-+ */
-+ readonly attribute ACString stockIcon;
-+
-+ /**
-+ * stockIconSize
-+ *
-+ * The stock icon size requested from the OS.
-+ */
-+ readonly attribute ACString stockIconSize;
-+
-+ /**
-+ * stockIconState
-+ *
-+ * The stock icon state requested from the OS.
-+ */
-+ readonly attribute ACString stockIconState;
- };
-Index: modules/libpr0n/decoders/icon/nsIconModule.cpp
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconModule.cpp,v
-retrieving revision 1.4
-diff -u -r1.4 nsIconModule.cpp
---- modules/libpr0n/decoders/icon/nsIconModule.cpp 30 Jan 2002 21:05:40 -0000 1.4
-+++ modules/libpr0n/decoders/icon/nsIconModule.cpp 3 Nov 2004 10:03:59 -0000
-@@ -26,6 +26,7 @@
-
- #include "nsIconDecoder.h"
- #include "nsIconProtocolHandler.h"
-+#include "nsIconURI.h"
-
- // objects that just require generic constructors
- /******************************************************************************
-@@ -41,7 +42,8 @@
- { "icon decoder",
- NS_ICONDECODER_CID,
- "@mozilla.org/image/decoder;2?type=image/icon",
-- nsIconDecoderConstructor, },
-+ nsIconDecoderConstructor
-+ },
-
- { "Icon Protocol Handler",
- NS_ICONPROTOCOL_CID,
-@@ -50,4 +52,12 @@
- }
- };
-
--NS_IMPL_NSGETMODULE(nsIconDecoderModule, components)
-+PR_STATIC_CALLBACK(nsresult)
-+IconDecoderModuleCtor(nsIModule* aSelf)
-+{
-+ nsMozIconURI::InitAtoms();
-+ return NS_OK;
-+}
-+
-+NS_IMPL_NSGETMODULE_WITH_CTOR(nsIconDecoderModule, components,
-+ IconDecoderModuleCtor)
-Index: modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp,v
-retrieving revision 1.12
-diff -u -r1.12 nsIconProtocolHandler.cpp
---- modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp 8 Jan 2003 22:02:55 -0000 1.12
-+++ modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp 3 Nov 2004 10:03:59 -0000
-@@ -89,15 +89,18 @@
-
- NS_IMETHODIMP nsIconProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result)
- {
-- nsCOMPtr<nsIChannel> channel;
-- NS_NEWXPCOM(channel, nsIconChannel);
-+ nsIconChannel* channel = new nsIconChannel;
-+ if (!channel)
-+ return NS_ERROR_OUT_OF_MEMORY;
-+ NS_ADDREF(channel);
-
-- if (channel)
-- NS_STATIC_CAST(nsIconChannel*,NS_STATIC_CAST(nsIChannel*, channel))->Init(url);
-+ nsresult rv = channel->Init(url);
-+ if (NS_FAILED(rv)) {
-+ delete channel;
-+ return rv;
-+ }
-
- *result = channel;
-- NS_IF_ADDREF(*result);
--
- return NS_OK;
- }
-
-Index: modules/libpr0n/decoders/icon/nsIconURI.cpp
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconURI.cpp,v
-retrieving revision 1.16
-diff -u -r1.16 nsIconURI.cpp
---- modules/libpr0n/decoders/icon/nsIconURI.cpp 17 Mar 2004 21:23:51 -0000 1.16
-+++ modules/libpr0n/decoders/icon/nsIconURI.cpp 3 Nov 2004 10:03:59 -0000
-@@ -26,6 +26,8 @@
- #include "nsCRT.h"
- #include "nsReadableUtils.h"
- #include "nsPrintfCString.h"
-+#include "nsIAtom.h"
-+#include "nsStaticAtom.h"
-
- static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
- #define DEFAULT_IMAGE_SIZE 16
-@@ -34,17 +36,48 @@
- // from the icon url.
- static void extractAttributeValue(const char * searchString, const char * attributeName, char ** result);
-
-+static nsIAtom *sStockSizeButton = nsnull;
-+static nsIAtom *sStockSizeToolbar = nsnull;
-+static nsIAtom *sStockSizeToolbarsmall = nsnull;
-+static nsIAtom *sStockSizeMenu = nsnull;
-+static nsIAtom *sStockSizeDialog = nsnull;
-+static nsIAtom *sStockStateNormal = nsnull;
-+static nsIAtom *sStockStateDisabled = nsnull;
-+
-+/* static */ const nsStaticAtom nsMozIconURI::sSizeAtoms[] =
-+{
-+ { "button", &sStockSizeButton },
-+ { "toolbar", &sStockSizeToolbar },
-+ { "toolbarsmall", &sStockSizeToolbarsmall },
-+ { "menu", &sStockSizeMenu },
-+ { "dialog", &sStockSizeDialog }
-+};
-+
-+/* static */ const nsStaticAtom nsMozIconURI::sStateAtoms[] =
-+{
-+ { "normal", &sStockStateNormal },
-+ { "disabled", &sStockStateDisabled }
-+};
-+
- ////////////////////////////////////////////////////////////////////////////////
-
- nsMozIconURI::nsMozIconURI()
-+ : mSize(DEFAULT_IMAGE_SIZE)
- {
-- mSize = DEFAULT_IMAGE_SIZE;
- }
-
- nsMozIconURI::~nsMozIconURI()
- {
- }
-
-+
-+/* static */ void
-+nsMozIconURI::InitAtoms()
-+{
-+ NS_RegisterStaticAtoms(sSizeAtoms, NS_ARRAY_LENGTH(sSizeAtoms));
-+ NS_RegisterStaticAtoms(sStateAtoms, NS_ARRAY_LENGTH(sStateAtoms));
-+}
-+
- NS_IMPL_THREADSAFE_ISUPPORTS2(nsMozIconURI, nsIMozIconURI, nsIURI)
-
- #define NS_MOZICON_SCHEME "moz-icon:"
-@@ -64,6 +97,26 @@
- NS_ENSURE_SUCCESS(rv, rv);
- spec += fileIconSpec;
- }
-+ else if (!mStockIcon.IsEmpty())
-+ {
-+ spec += "//stock/";
-+ spec += mStockIcon;
-+ if (mStockIconSize) {
-+ spec += NS_MOZ_ICON_DELIMITER;
-+ spec += "size=";
-+ const char *size_string;
-+ mStockIconSize->GetUTF8String(&size_string);
-+ spec.Append(nsPrintfCString("%s", size_string));
-+ }
-+ if (mStockIconState) {
-+ spec += NS_MOZ_ICON_DELIMITER;
-+ spec += "state=";
-+ const char *state_string;
-+ mStockIconSize->GetUTF8String(&state_string);
-+ spec.Append(nsPrintfCString("%s", state_string));
-+ }
-+ return NS_OK;
-+ }
- else
- {
- spec += "//";
-@@ -116,12 +169,10 @@
- else // there is nothing left so eat up rest of line.
- attributeValue = PL_strdup(startOfAttribute);
- } // if we have a attribute value
--
- } // if we have a attribute name
- } // if we got non-null search string and attribute name values
-
- *result = attributeValue; // passing ownership of attributeValue into result...no need to
-- return;
- }
-
- NS_IMETHODIMP
-@@ -138,6 +189,8 @@
- if (strcmp("moz-icon", scheme.get()) != 0)
- return NS_ERROR_MALFORMED_URI;
-
-+ nsXPIDLCString sizeString;
-+ nsXPIDLCString stateString;
- nsCAutoString mozIconPath(aSpec);
- PRInt32 endPos = mozIconPath.FindChar(':') + 1; // guaranteed to exist!
- PRInt32 pos = mozIconPath.FindChar(NS_MOZ_ICON_DELIMITER);
-@@ -150,26 +203,48 @@
- {
- mozIconPath.Mid(mDummyFilePath, endPos, pos - endPos);
- // fill in any size and content type values...
-- nsXPIDLCString sizeString;
- nsXPIDLCString contentTypeString;
- extractAttributeValue(mozIconPath.get() + pos, "size=", getter_Copies(sizeString));
-+ extractAttributeValue(mozIconPath.get() + pos, "state=", getter_Copies(stateString));
- extractAttributeValue(mozIconPath.get() + pos, "contentType=", getter_Copies(contentTypeString));
- mContentType = contentTypeString;
--
-- if (sizeString.get())
-- {
-- PRInt32 sizeValue = atoi(sizeString);
-- // if the size value we got back is > 0 then use it
-- if (sizeValue)
-- mSize = sizeValue;
-- }
- }
-
-- // Okay now we have a bit of a hack here...filePath can have two forms:
-+ // Okay now we have a bit of a hack here...filePath can have three forms:
- // (1) file://<some valid platform specific file url>
- // (2) //<some dummy file with an extension>
-+ // (3) stock/<icon-identifier>
- // We need to determine which case we are and behave accordingly...
-- if (mDummyFilePath.Length() > 2) // we should at least have two forward slashes followed by a file or a file://
-+ if (mDummyFilePath.Length() > 2)
-+ {
-+ if (!strncmp("//stock/", mDummyFilePath.get(), 8))
-+ {
-+ // we have a stock icon
-+ mStockIcon = Substring(mDummyFilePath, 8);
-+ if (!sizeString.IsEmpty())
-+ {
-+ nsCOMPtr<nsIAtom> atom = do_GetAtom(sizeString);
-+ for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(sSizeAtoms); i++)
-+ {
-+ if (atom == *(sSizeAtoms[i].mAtom))
-+ {
-+ mStockIconSize = atom;
-+ break;
-+ }
-+ }
-+
-+ atom = do_GetAtom(stateString);
-+ for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(sStateAtoms); i++)
-+ {
-+ if (atom == *(sStateAtoms[i].mAtom))
-+ {
-+ mStockIconState = atom;
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ else
- {
- if (!nsCRT::strncmp("//", mDummyFilePath.get(), 2))// must not have a url here..
- {
-@@ -177,16 +252,22 @@
- // and remember the rest in mDummyFilePath
- mDummyFilePath.Cut(0, 2); // cut the first 2 bytes....
- }
--
-- if (!nsCRT::strncmp("file://", mDummyFilePath.get(), 7))
-+ else if (!nsCRT::strncmp("file://", mDummyFilePath.get(), 7))
- {
- // we have a file url.....so store it...
- rv = ioService->NewURI(mDummyFilePath, nsnull, nsnull, getter_AddRefs(mFileIcon));
-- if (NS_FAILED(rv)) return NS_ERROR_MALFORMED_URI;
-+ }
-+ if (!sizeString.IsEmpty())
-+ {
-+ PRInt32 sizeValue = atoi(sizeString);
-+ // if the size value we got back is > 0 then use it
-+ if (sizeValue)
-+ mSize = sizeValue;
-+ }
- }
- }
- else
-- return NS_ERROR_MALFORMED_URI; // they didn't include a file path...
-+ rv = NS_ERROR_MALFORMED_URI; // they didn't include a file path...
- return rv;
- }
-
-@@ -436,10 +517,35 @@
- const char * chFileName = fileExtension.get(); // get the underlying buffer
- const char * fileExt = strrchr(chFileName, '.');
- if (!fileExt) return NS_ERROR_FAILURE; // no file extension to work from.
-- else
-+
- aFileExtension = nsDependentCString(fileExt);
-
- return NS_OK;
- }
-
-+NS_IMETHODIMP
-+nsMozIconURI::GetStockIcon(nsACString &aStockIcon)
-+{
-+ aStockIcon.Assign(mStockIcon);
-+
-+ return NS_OK;
-+}
-+
-+NS_IMETHODIMP
-+nsMozIconURI::GetStockIconSize(nsACString &aSize)
-+{
-+ if (mStockIconSize)
-+ return mStockIconSize->ToUTF8String(aSize);
-+ aSize.Truncate();
-+ return NS_OK;
-+}
-+
-+NS_IMETHODIMP
-+nsMozIconURI::GetStockIconState(nsACString &aState)
-+{
-+ if (mStockIconState)
-+ return mStockIconState->ToUTF8String(aState);
-+ aState.Truncate();
-+ return NS_OK;
-+}
- ////////////////////////////////////////////////////////////////////////////////
-Index: modules/libpr0n/decoders/icon/nsIconURI.h
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconURI.h,v
-retrieving revision 1.6
-diff -u -r1.6 nsIconURI.h
---- modules/libpr0n/decoders/icon/nsIconURI.h 6 Mar 2002 07:47:49 -0000 1.6
-+++ modules/libpr0n/decoders/icon/nsIconURI.h 3 Nov 2004 10:04:00 -0000
-@@ -25,6 +25,9 @@
- #include "nsIIconURI.h"
- #include "nsCOMPtr.h"
- #include "nsString.h"
-+class nsStaticAtom;
-+
-+class nsIAtom;
-
- #define NS_MOZICONURI_CID \
- { \
-@@ -41,6 +44,8 @@
- NS_DECL_NSIURI
- NS_DECL_NSIMOZICONURI
-
-+ static void InitAtoms();
-+
- // nsJARURI
- nsMozIconURI();
- virtual ~nsMozIconURI();
-@@ -50,6 +55,12 @@
- PRUint32 mSize; // the # of pixels in a row that we want for this image. Typically 16, 32, 128, etc.
- nsCString mContentType; // optional field explicitly specifying the content type
- nsCString mDummyFilePath; // if we don't have a valid file url, the file path is stored here....i.e if mFileIcon is null.....
-+ nsCString mStockIcon;
-+ nsCOMPtr<nsIAtom> mStockIconSize;
-+ nsCOMPtr<nsIAtom> mStockIconState;
-+
-+ static const nsStaticAtom sSizeAtoms[];
-+ static const nsStaticAtom sStateAtoms[];
-
- nsresult FormatSpec(nsACString &result);
- };
-Index: modules/libpr0n/decoders/icon/win/nsIconChannel.h
-===================================================================
-RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/win/nsIconChannel.h,v
-retrieving revision 1.6
-diff -u -r1.6 nsIconChannel.h
---- modules/libpr0n/decoders/icon/win/nsIconChannel.h 19 Dec 2003 15:04:27 -0000 1.6
-+++ modules/libpr0n/decoders/icon/win/nsIconChannel.h 3 Nov 2004 10:04:00 -0000
-@@ -45,7 +45,7 @@
- NS_DECL_NSISTREAMLISTENER
-
- nsIconChannel();
-- virtual ~nsIconChannel();
-+ ~nsIconChannel();
-
- nsresult Init(nsIURI* uri);
-
-Index: caps/src/nsScriptSecurityManager.cpp
-===================================================================
-RCS file: /cvsroot/mozilla/caps/src/nsScriptSecurityManager.cpp,v
-retrieving revision 1.229.6.6
-diff -u -r1.229.6.6 nsScriptSecurityManager.cpp
---- caps/src/nsScriptSecurityManager.cpp 24 Oct 2004 12:04:33 -0000 1.229.6.6
-+++ caps/src/nsScriptSecurityManager.cpp 3 Nov 2004 10:11:43 -0000
-@@ -1233,6 +1233,7 @@
- // to increase performance
- { "http", AllowProtocol },
- { "chrome", ChromeProtocol },
-+ { "moz-icon", ChromeProtocol },
- { "file", PrefControlled },
- { "https", AllowProtocol },
- { "mailbox", DenyProtocol },
---- /dev/null 2004-11-03 10:29:10.174421952 +0100
-+++ modules/libpr0n/decoders/icon/gtk/Makefile.in 2004-10-17 15:14:05.000000000 +0200
-@@ -0,0 +1,63 @@
-+# ***** BEGIN LICENSE BLOCK *****
-+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-+#
-+# The contents of this file are subject to the Mozilla Public License Version
-+# 1.1 (the "License"); you may not use this file except in compliance with
-+# the License. You may obtain a copy of the License at
-+# http://www.mozilla.org/MPL/
-+#
-+# Software distributed under the License is distributed on an "AS IS" basis,
-+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-+# for the specific language governing rights and limitations under the
-+# License.
-+#
-+# The Original Code is the Makefile for the Gnome icon decoder.
-+#
-+# The Initial Developer of the Original Code is
-+# Christian Biesinger <cbiesinger@web.de>.
-+# Portions created by the Initial Developer are Copyright (C) 2004
-+# the Initial Developer. All Rights Reserved.
-+#
-+# Contributor(s):
-+#
-+# Alternatively, the contents of this file may be used under the terms of
-+# either the GNU General Public License Version 2 or later (the "GPL"), or
-+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-+# in which case the provisions of the GPL or the LGPL are applicable instead
-+# of those above. If you wish to allow use of your version of this file only
-+# under the terms of either the GPL or the LGPL, and not to allow others to
-+# use your version of this file under the terms of the MPL, indicate your
-+# decision by deleting the provisions above and replace them with the notice
-+# and other provisions required by the GPL or the LGPL. If you do not delete
-+# the provisions above, a recipient may use your version of this file under
-+# the terms of any one of the MPL, the GPL or the LGPL.
-+#
-+# ***** END LICENSE BLOCK *****
-+
-+
-+DEPTH = ../../../../..
-+topsrcdir = @top_srcdir@
-+srcdir = @srcdir@
-+VPATH = @srcdir@
-+
-+include $(DEPTH)/config/autoconf.mk
-+
-+MODULE = imgicon
-+LIBRARY_NAME = imgicongtk_s
-+
-+REQUIRES = xpcom \
-+ string \
-+ necko \
-+ intl \
-+ mimetype \
-+ $(NULL)
-+
-+CPPSRCS = nsIconChannel.cpp
-+
-+LOCAL_INCLUDES += $(MOZ_GNOMEUI_CFLAGS) $(MOZ_GTK2_CFLAGS)
-+
-+# we don't want the shared lib, but we want to force the creation of a static lib.
-+FORCE_STATIC_LIB = 1
-+
-+include $(topsrcdir)/config/rules.mk
-+
---- /dev/null 2004-11-03 10:29:10.174421952 +0100
-+++ modules/libpr0n/decoders/icon/gtk/nsIconChannel.h 2004-10-17 15:14:05.000000000 +0200
-@@ -0,0 +1,84 @@
-+/* ***** BEGIN LICENSE BLOCK *****
-+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
-+ *
-+ * The contents of this file are subject to the Mozilla Public License Version
-+ * 1.1 (the "License"); you may not use this file except in compliance with
-+ * the License. You may obtain a copy of the License at
-+ * http://www.mozilla.org/MPL/
-+ *
-+ * Software distributed under the License is distributed on an "AS IS" basis,
-+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-+ * for the specific language governing rights and limitations under the
-+ * License.
-+ *
-+ * The Original Code is the Mozilla icon channel for gnome.
-+ *
-+ * The Initial Developer of the Original Code is
-+ * Christian Biesinger <cbiesinger@web.de>.
-+ * Portions created by the Initial Developer are Copyright (C) 2004
-+ * the Initial Developer. All Rights Reserved.
-+ *
-+ * Contributor(s):
-+ *
-+ * Alternatively, the contents of this file may be used under the terms of
-+ * either the GNU General Public License Version 2 or later (the "GPL"), or
-+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-+ * in which case the provisions of the GPL or the LGPL are applicable instead
-+ * of those above. If you wish to allow use of your version of this file only
-+ * under the terms of either the GPL or the LGPL, and not to allow others to
-+ * use your version of this file under the terms of the MPL, indicate your
-+ * decision by deleting the provisions above and replace them with the notice
-+ * and other provisions required by the GPL or the LGPL. If you do not delete
-+ * the provisions above, a recipient may use your version of this file under
-+ * the terms of any one of the MPL, the GPL or the LGPL.
-+ *
-+ * ***** END LICENSE BLOCK ***** */
-+
-+#ifndef nsIconChannel_h_
-+#define nsIconChannel_h_
-+
-+#include "nsIChannel.h"
-+#include "nsIStreamListener.h"
-+#include "nsIURI.h"
-+#include "nsIIconURI.h"
-+#include "nsCOMPtr.h"
-+
-+/**
-+ * This class is the gnome implementation of nsIconChannel. It basically asks
-+ * gtk/gnome for an icon, saves it as a tmp icon, and creates a new channel for
-+ * that file to which all calls will be proxied.
-+ */
-+class nsIconChannel : public nsIChannel
-+{
-+ public:
-+ NS_DECL_ISUPPORTS
-+ NS_FORWARD_NSIREQUEST(mRealChannel->)
-+ NS_FORWARD_NSICHANNEL(mRealChannel->)
-+
-+ nsIconChannel() {}
-+ ~nsIconChannel() {}
-+
-+ /**
-+ * Called by nsIconProtocolHandler after it creates this channel.
-+ * Must be called before calling any other function on this object.
-+ * If this method fails, no other function must be called on this object.
-+ */
-+ NS_HIDDEN_(nsresult) Init(nsIURI* aURI);
-+ private:
-+ /**
-+ * The channel to the temp icon file (e.g. to /tmp/2qy9wjqw.html).
-+ * Will always be non-null after a successful Init.
-+ */
-+ nsCOMPtr<nsIChannel> mRealChannel;
-+ /**
-+ * The moz-icon URI we're loading. Always non-null after a successful Init.
-+ */
-+ nsCOMPtr<nsIMozIconURI> mURI;
-+
-+ /**
-+ * Called by Init if we need to use the gnomeui library.
-+ */
-+ nsresult InitWithGnome();
-+};
-+
-+#endif
---- /dev/null 2004-11-03 10:29:10.174421952 +0100
-+++ modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp 2004-10-23 12:15:15.000000000 +0200
-@@ -0,0 +1,352 @@
-+/* vim:set ts=2 sw=2 sts=2 cin et: */
-+/* ***** BEGIN LICENSE BLOCK *****
-+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
-+ *
-+ * The contents of this file are subject to the Mozilla Public License Version
-+ * 1.1 (the "License"); you may not use this file except in compliance with
-+ * the License. You may obtain a copy of the License at
-+ * http://www.mozilla.org/MPL/
-+ *
-+ * Software distributed under the License is distributed on an "AS IS" basis,
-+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-+ * for the specific language governing rights and limitations under the
-+ * License.
-+ *
-+ * The Original Code is the Mozilla icon channel for gnome.
-+ *
-+ * The Initial Developer of the Original Code is
-+ * Christian Biesinger <cbiesinger@web.de>.
-+ * Portions created by the Initial Developer are Copyright (C) 2004
-+ * the Initial Developer. All Rights Reserved.
-+ *
-+ * Contributor(s):
-+ *
-+ * Alternatively, the contents of this file may be used under the terms of
-+ * either the GNU General Public License Version 2 or later (the "GPL"), or
-+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-+ * in which case the provisions of the GPL or the LGPL are applicable instead
-+ * of those above. If you wish to allow use of your version of this file only
-+ * under the terms of either the GPL or the LGPL, and not to allow others to
-+ * use your version of this file under the terms of the MPL, indicate your
-+ * decision by deleting the provisions above and replace them with the notice
-+ * and other provisions required by the GPL or the LGPL. If you do not delete
-+ * the provisions above, a recipient may use your version of this file under
-+ * the terms of any one of the MPL, the GPL or the LGPL.
-+ *
-+ * ***** END LICENSE BLOCK ***** */
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+// Older versions of these headers seem to be missing an extern "C"
-+extern "C" {
-+#include <libgnome/libgnome.h>
-+#include <libgnomeui/gnome-icon-theme.h>
-+#include <libgnomeui/gnome-icon-lookup.h>
-+#include <libgnomeui/gnome-ui-init.h>
-+
-+#include <libgnomevfs/gnome-vfs-file-info.h>
-+#include <libgnomevfs/gnome-vfs-ops.h>
-+}
-+
-+#include <gtk/gtk.h>
-+#include <gdk/gdk.h>
-+
-+#include "nsIMIMEService.h"
-+
-+#include "nsIStringBundle.h"
-+
-+#include "nsEscape.h"
-+#include "nsNetUtil.h"
-+#include "nsIURL.h"
-+#include "prlink.h"
-+#include "nsIconChannel.h"
-+
-+NS_IMPL_ISUPPORTS2(nsIconChannel, nsIRequest, nsIChannel)
-+
-+/**
-+ * Given a path to a PNG Image, creates a channel from it.
-+ * Note that the channel will delete the file when it's done with it.
-+ *
-+ * (When this function fails, the file will NOT be deleted)
-+ */
-+static nsresult pngfile_to_channel(const char* aFilename, nsIChannel** aChannel) {
-+ // Now we have to create an uri for the file...
-+ nsCOMPtr<nsILocalFile> lf;
-+ nsresult rv = NS_NewNativeLocalFile(nsDependentCString(aFilename), PR_FALSE,
-+ getter_AddRefs(lf));
-+ if (NS_FAILED(rv))
-+ return rv;
-+
-+ nsCOMPtr<nsIInputStream> is;
-+ rv = NS_NewLocalFileInputStream(getter_AddRefs(is), lf, -1, -1,
-+ nsIFileInputStream::DELETE_ON_CLOSE);
-+ if (NS_FAILED(rv))
-+ return rv;
-+
-+ nsCOMPtr<nsIURI> realURI;
-+ rv = NS_NewFileURI(getter_AddRefs(realURI), lf);
-+ if (NS_FAILED(rv))
-+ return rv;
-+
-+ rv = NS_NewInputStreamChannel(aChannel, realURI, is,
-+ NS_LITERAL_CSTRING("image/png"));
-+ return rv;
-+}
-+
-+static nsresult
-+moz_gdk_pixbuf_to_channel(GdkPixbuf* aPixbuf, nsIChannel **aChannel)
-+{
-+ char tmpfile[] = "/tmp/moziconXXXXXX";
-+ int fd = mkstemp(tmpfile);
-+ if (fd == -1) {
-+ return NS_ERROR_UNEXPECTED;
-+ }
-+
-+ GError *err = NULL;
-+ gboolean ok = gdk_pixbuf_save(aPixbuf, tmpfile, "png", &err, NULL);
-+ if (!ok) {
-+ close(fd);
-+ remove(tmpfile);
-+ if (err)
-+ g_error_free(err);
-+ return NS_ERROR_UNEXPECTED;
-+ }
-+
-+ nsresult rv = pngfile_to_channel(tmpfile, aChannel);
-+ close(fd);
-+ if (NS_FAILED(rv))
-+ remove(tmpfile);
-+ return rv;
-+}
-+
-+static GtkWidget *gProtoWindow = nsnull;
-+static GtkWidget *gStockImageWidget = nsnull;
-+static GtkIconFactory *gIconFactory = nsnull;
-+
-+static void
-+ensure_stock_image_widget()
-+{
-+ if (!gProtoWindow) {
-+ gProtoWindow = gtk_window_new(GTK_WINDOW_POPUP);
-+ gtk_widget_realize(gProtoWindow);
-+ GtkWidget* protoLayout = gtk_fixed_new();
-+ gtk_container_add(GTK_CONTAINER(gProtoWindow), protoLayout);
-+
-+ gStockImageWidget = gtk_image_new();
-+ gtk_container_add(GTK_CONTAINER(protoLayout), gStockImageWidget);
-+ gtk_widget_realize(gStockImageWidget);
-+ }
-+}
-+
-+static void
-+ensure_icon_factory()
-+{
-+ if (!gIconFactory) {
-+ gIconFactory = gtk_icon_factory_new();
-+ gtk_icon_factory_add_default (gIconFactory);
-+ g_object_unref(gIconFactory);
-+ }
-+}
-+
-+static GtkIconSize
-+moz_gtk_icon_size(const char *name)
-+{
-+ if (strcmp(name, "button") == 0)
-+ return GTK_ICON_SIZE_BUTTON;
-+
-+ if (strcmp(name, "menu") == 0)
-+ return GTK_ICON_SIZE_MENU;
-+
-+ if (strcmp(name, "toolbar") == 0)
-+ return GTK_ICON_SIZE_LARGE_TOOLBAR;
-+
-+ if (strcmp(name, "toolbarsmall") == 0)
-+ return GTK_ICON_SIZE_SMALL_TOOLBAR;
-+
-+ if (strcmp(name, "dialog") == 0)
-+ return GTK_ICON_SIZE_DIALOG;
-+
-+ return GTK_ICON_SIZE_INVALID;
-+}
-+
-+nsresult
-+nsIconChannel::InitWithGnome()
-+{
-+ if (!gnome_program_get()) {
-+ // Get the brandShortName from the string bundle to pass to GNOME
-+ // as the application name. This may be used for things such as
-+ // the title of grouped windows in the panel.
-+ nsCOMPtr<nsIStringBundleService> bundleService =
-+ do_GetService(NS_STRINGBUNDLE_CONTRACTID);
-+
-+ NS_ASSERTION(bundleService, "String bundle service must be present!");
-+
-+ nsCOMPtr<nsIStringBundle> bundle;
-+ bundleService->CreateBundle("chrome://global/locale/brand.properties",
-+ getter_AddRefs(bundle));
-+ nsXPIDLString appName;
-+
-+ if (bundle) {
-+ bundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(),
-+ getter_Copies(appName));
-+ } else {
-+ NS_WARNING("brand.properties not present, using default application name");
-+ appName.Assign(NS_LITERAL_STRING("Gecko"));
-+ }
-+
-+ char* empty[] = { "" };
-+ gnome_init(NS_ConvertUTF16toUTF8(appName).get(), "1.0", 1, empty);
-+ }
-+
-+ PRUint32 iconSize;
-+ nsresult rv = mURI->GetImageSize(&iconSize);
-+ NS_ASSERTION(NS_SUCCEEDED(rv), "GetImageSize failed");
-+
-+ nsCAutoString type;
-+ mURI->GetContentType(type);
-+
-+ GnomeVFSFileInfo fileInfo = {0};
-+ fileInfo.refcount = 1; // In case some GnomeVFS function addrefs and releases it
-+
-+ nsCAutoString spec;
-+ nsCOMPtr<nsIURI> fileURI;
-+ rv = mURI->GetIconFile(getter_AddRefs(fileURI));
-+ if (fileURI) {
-+ fileURI->GetAsciiSpec(spec);
-+ // Only ask gnome-vfs for a GnomeVFSFileInfo for file: uris, to avoid a
-+ // network request
-+ PRBool isFile;
-+ if (NS_SUCCEEDED(fileURI->SchemeIs("file", &isFile)) && isFile) {
-+ gnome_vfs_get_file_info(spec.get(), &fileInfo, GNOME_VFS_FILE_INFO_DEFAULT);
-+ }
-+ else {
-+ // We have to get a leaf name from our uri...
-+ nsCOMPtr<nsIURL> url(do_QueryInterface(fileURI));
-+ if (url) {
-+ nsCAutoString name;
-+ // The filename we get is UTF-8-compatible, which matches gnome expectations.
-+ // See also: http://lists.gnome.org/archives/gnome-vfs-list/2004-March/msg00049.html
-+ // "Whenever we can detect the charset used for the URI type we try to
-+ // convert it to/from utf8 automatically inside gnome-vfs."
-+ // I'll interpret that as "otherwise, this field is random junk".
-+ url->GetFileName(name);
-+ fileInfo.name = g_strdup(name.get());
-+ }
-+ // If this is no nsIURL, nothing we can do really.
-+
-+ if (!type.IsEmpty()) {
-+ fileInfo.valid_fields = GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE;
-+ fileInfo.mime_type = g_strdup(type.get());
-+ }
-+ }
-+ }
-+
-+
-+ if (type.IsEmpty()) {
-+ nsCOMPtr<nsIMIMEService> ms(do_GetService("@mozilla.org/mime;1"));
-+ if (ms) {
-+ nsCAutoString fileExt;
-+ mURI->GetFileExtension(fileExt);
-+ nsXPIDLCString extType;
-+ ms->GetTypeFromExtension(fileExt.get(), getter_Copies(extType));
-+ fileExt.Assign(extType);
-+ }
-+ }
-+
-+ // Get the icon theme
-+ GnomeIconTheme *t = gnome_icon_theme_new();
-+ if (!t) {
-+ gnome_vfs_file_info_clear(&fileInfo);
-+ return NS_ERROR_NOT_AVAILABLE;
-+ }
-+
-+
-+ char* name = gnome_icon_lookup(t, NULL, spec.get(), NULL, &fileInfo, type.get(), GNOME_ICON_LOOKUP_FLAGS_NONE, NULL);
-+ gnome_vfs_file_info_clear(&fileInfo);
-+ if (!name) {
-+ g_object_unref(G_OBJECT(t));
-+ return NS_ERROR_NOT_AVAILABLE;
-+ }
-+
-+ char* file = gnome_icon_theme_lookup_icon(t, name, iconSize, NULL, NULL);
-+ g_free(name);
-+ g_object_unref(G_OBJECT(t));
-+ if (!file)
-+ return NS_ERROR_NOT_AVAILABLE;
-+
-+ // Create a GdkPixbuf buffer and scale it
-+ GError *err = nsnull;
-+ GdkPixbuf* buf = gdk_pixbuf_new_from_file(file, &err);
-+ g_free(file);
-+ if (!buf) {
-+ if (err)
-+ g_error_free(err);
-+ return NS_ERROR_UNEXPECTED;
-+ }
-+
-+ // scale...
-+ GdkPixbuf* scaled = gdk_pixbuf_scale_simple(buf, iconSize, iconSize, GDK_INTERP_BILINEAR);
-+ gdk_pixbuf_unref(buf);
-+ if (!scaled)
-+ return NS_ERROR_OUT_OF_MEMORY;
-+
-+ rv = moz_gdk_pixbuf_to_channel(scaled, getter_AddRefs(mRealChannel));
-+ gdk_pixbuf_unref(scaled);
-+ return rv;
-+}
-+
-+nsresult
-+nsIconChannel::Init(nsIURI* aURI) {
-+ mURI = do_QueryInterface(aURI);
-+ NS_ASSERTION(mURI, "URI passed to nsIconChannel is no nsIMozIconURI!");
-+
-+ nsCAutoString stockIcon;
-+ mURI->GetStockIcon(stockIcon);
-+ if (stockIcon.IsEmpty()) {
-+ return InitWithGnome();
-+ }
-+
-+ nsCAutoString iconSizeString;
-+ mURI->GetStockIconSize(iconSizeString);
-+
-+ nsCAutoString iconStateString;
-+ mURI->GetStockIconState(iconStateString);
-+
-+ GtkIconSize icon_size = moz_gtk_icon_size(iconSizeString.get());
-+ if (icon_size == GTK_ICON_SIZE_INVALID) {
-+ NS_WARNING(iconSizeString.get());
-+ return NS_ERROR_FAILURE;
-+ }
-+
-+ ensure_stock_image_widget();
-+
-+ gboolean sensitive = strcmp(iconStateString.get(), "disabled");
-+ gtk_widget_set_sensitive (gStockImageWidget, sensitive);
-+
-+ GdkPixbuf *icon = gtk_widget_render_icon(gStockImageWidget, stockIcon.get(),
-+ icon_size, NULL);
-+ if (!icon) {
-+ ensure_icon_factory();
-+
-+ GtkIconSet *icon_set = gtk_icon_set_new();
-+ GtkIconSource *icon_source = gtk_icon_source_new();
-+
-+ gtk_icon_source_set_icon_name(icon_source, stockIcon.get());
-+ gtk_icon_set_add_source(icon_set, icon_source);
-+ gtk_icon_factory_add(gIconFactory, stockIcon.get(), icon_set);
-+ gtk_icon_set_unref(icon_set);
-+ gtk_icon_source_free(icon_source);
-+
-+ icon = gtk_widget_render_icon(gStockImageWidget, stockIcon.get(),
-+ icon_size, NULL);
-+ }
-+
-+ if (!icon)
-+ return NS_ERROR_NOT_AVAILABLE;
-+
-+ nsresult rv = moz_gdk_pixbuf_to_channel(icon, getter_AddRefs(mRealChannel));
-+
-+ gdk_pixbuf_unref(icon);
-+
-+ return rv;
-+}
bgstack15