From 6fadfbe07379b55695a43687c6b7d935bff80133 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 27 Apr 2004 09:07:36 +0000 Subject: Nice mess of defines to support 1.8a. Damn. 2004-04-27 Marco Pesenti Gritti * configure.in: * embed/mozilla/ContentHandler.cpp: * embed/mozilla/ContentHandler.h: * embed/mozilla/EphyHeaderSniffer.cpp: * embed/mozilla/EventContext.h: * embed/mozilla/FilePicker.cpp: * embed/mozilla/MozDownload.cpp: * embed/mozilla/MozDownload.h: * embed/mozilla/mozilla-download.cpp: * embed/mozilla/mozilla-embed-persist.cpp: Nice mess of defines to support 1.8a. Damn. --- embed/mozilla/MozDownload.cpp | 72 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 8 deletions(-) (limited to 'embed/mozilla/MozDownload.cpp') diff --git a/embed/mozilla/MozDownload.cpp b/embed/mozilla/MozDownload.cpp index 722e7d8a5..2dd99e98d 100644 --- a/embed/mozilla/MozDownload.cpp +++ b/embed/mozilla/MozDownload.cpp @@ -60,7 +60,9 @@ #include "nsDirectoryServiceUtils.h" #include "nsIRequest.h" #include "nsIMIMEInfo.h" +#include "nsIFileURL.h" #include "netCore.h" +#include "nsNetUtil.h" const char* const persistContractID = "@mozilla.org/embedding/browser/nsWebBrowserPersist;1"; @@ -80,10 +82,14 @@ MozDownload::~MozDownload() NS_ASSERTION (!mEphyDownload, "MozillaDownload still alive!"); } +#if MOZILLA_SNAPSHOT < 16 NS_IMPL_ISUPPORTS2(MozDownload, nsIDownload, nsIWebProgressListener) +#else +NS_IMPL_ISUPPORTS3(MozDownload, nsIDownload, nsITransfer, nsIWebProgressListener) +#endif NS_IMETHODIMP -MozDownload::InitForEmbed (nsIURI *aSource, nsILocalFile *aTarget, const PRUnichar *aDisplayName, +MozDownload::InitForEmbed (nsIURI *aSource, nsIURI *aTarget, const PRUnichar *aDisplayName, nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist, MozillaEmbedPersist *aEmbedPersist, PRInt32 aMaxSize) { @@ -92,10 +98,16 @@ MozDownload::InitForEmbed (nsIURI *aSource, nsILocalFile *aTarget, const PRUnich return Init (aSource, aTarget, aDisplayName, aMIMEInfo, startTime, aPersist); } -/* void init (in nsIURI aSource, in nsILocalFile aTarget, in wstring aDisplayName, in nsIMIMEInfo aMIMEInfo, in long long startTime, in nsIWebBrowserPersist aPersist); */ +/* void init (in nsIURI aSource, in nsIURI aTarget, in wstring aDisplayName, in nsIMIMEInfo aMIMEInfo, in long long startTime, in nsIWebBrowserPersist aPersist); */ +#if MOZILLA_SNAPSHOT < 16 NS_IMETHODIMP MozDownload::Init(nsIURI *aSource, nsILocalFile *aTarget, const PRUnichar *aDisplayName, - nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist) + nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist) +#else +NS_IMETHODIMP +MozDownload::Init(nsIURI *aSource, nsIURI *aTarget, const PRUnichar *aDisplayName, + nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist) +#endif { PRBool addToView = PR_TRUE; nsresult rv; @@ -153,8 +165,13 @@ MozDownload::GetSource(nsIURI **aSource) return NS_OK; } +#if MOZILLA_SNAPSHOT < 16 NS_IMETHODIMP MozDownload::GetTarget(nsILocalFile **aTarget) +#else +NS_IMETHODIMP +MozDownload::GetTarget(nsIURI **aTarget) +#endif { NS_ENSURE_ARG_POINTER(aTarget); NS_IF_ADDREF(*aTarget = mDestination); @@ -162,6 +179,23 @@ MozDownload::GetTarget(nsILocalFile **aTarget) return NS_OK; } +#if MOZILLA_SNAPSHOT > 15 +NS_IMETHODIMP +MozDownload::GetTargetFile (nsILocalFile** aTargetFile) +{ + nsresult rv; + + nsCOMPtr fileURL = do_QueryInterface(mDestination, &rv); + if (NS_FAILED(rv)) return rv; + + nsCOMPtr file; + rv = fileURL->GetFile(getter_AddRefs(file)); + if (NS_SUCCEEDED(rv)) + rv = CallQueryInterface(file, aTargetFile); + return rv; +} +#endif + NS_IMETHODIMP MozDownload::GetPersist(nsIWebBrowserPersist **aPersist) { @@ -313,8 +347,8 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest, else if (NS_SUCCEEDED (aStatus)) { GnomeVFSMimeApplication *helperApp; - char *mimeType; - +#if MOZILLA_SNAPSHOT < 16 + char *mimeType; rv = mMIMEInfo->GetMIMEType (&mimeType); NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE); @@ -327,13 +361,31 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest, if we have to open the saved file */ if ((strcmp (NS_ConvertUTF16toUTF8 (description).get(), "gnome-default") == 0) && helperApp) +#else + nsCAutoString mimeType; + rv = mMIMEInfo->GetMIMEType (mimeType); + NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE); + + helperApp = gnome_vfs_mime_get_default_application (mimeType.get()); + + nsAutoString description; + mMIMEInfo->GetApplicationDescription (description); + + /* HACK we use the application description to decide + if we have to open the saved file */ + if ((strcmp (NS_ConvertUCS2toUTF8 (description).get(), "gnome-default") == 0) && + helperApp) +#endif { GList *params = NULL; char *param; nsCAutoString aDest; +#if MOZILLA_SNAPSHOT < 16 mDestination->GetNativePath (aDest); - +#else + mDestination->GetSpec (aDest); +#endif param = gnome_vfs_make_uri_canonical (aDest.get ()); params = g_list_append (params, param); gnome_vfs_mime_application_launch (helperApp, params); @@ -341,9 +393,10 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest, g_list_free (params); } - +#if MOZILLA_SNAPSHOT < 16 nsMemory::Free (mimeType); nsMemory::Free (description); +#endif gnome_vfs_mime_application_free (helperApp); } } @@ -478,9 +531,12 @@ nsresult InitiateMozillaDownload (nsIDOMDocument *domDocument, nsIURI *sourceURI nsAutoString fileDisplayName; inDestFile->GetLeafName(fileDisplayName); + nsCOMPtr destURI; + NS_NewFileURI (getter_AddRefs(destURI), inDestFile); + MozDownload *downloader = new MozDownload (); /* dlListener attaches to its progress dialog here, which gains ownership */ - rv = downloader->InitForEmbed (inOriginalURI, inDestFile, fileDisplayName.get(), + rv = downloader->InitForEmbed (inOriginalURI, destURI, fileDisplayName.get(), nsnull, timeNow, webPersist, embedPersist, aMaxSize); NS_ENSURE_SUCCESS (rv, rv); -- cgit v1.2.3