aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--embed/mozilla/ContentHandler.cpp24
-rw-r--r--embed/mozilla/MozDownload.cpp36
2 files changed, 32 insertions, 28 deletions
diff --git a/embed/mozilla/ContentHandler.cpp b/embed/mozilla/ContentHandler.cpp
index b7ba3b43f..3535d362c 100644
--- a/embed/mozilla/ContentHandler.cpp
+++ b/embed/mozilla/ContentHandler.cpp
@@ -416,14 +416,7 @@ NS_METHOD GContentHandler::MIMEDoAction (void)
mLauncher->GetMIMEInfo(getter_AddRefs(mimeInfo));
NS_ENSURE_TRUE (mimeInfo, NS_ERROR_FAILURE);
-#ifdef HAVE_GECKO_1_9
- nsHandlerInfoAction action;
- if (mAction == CONTENT_ACTION_DOWNLOAD) {
- action = EPHY_ACTION_BROWSE_TO_FILE;
- } else {
- action = nsIMIMEInfo::useSystemDefault;
- }
-#else
+#ifndef HAVE_GECKO_1_9
char *info = NULL;
if (mAction == CONTENT_ACTION_OPEN)
@@ -478,5 +471,20 @@ NS_METHOD GContentHandler::MIMEDoAction (void)
mLauncher->SaveToDisk (nsnull, PR_FALSE);
}
+#ifdef HAVE_GECKO_1_9
+ /* We have to do this work down here because the external helper app modifies the
+ * value after calling SaveToDisk.
+ */
+ nsHandlerInfoAction action;
+ if (mAction == CONTENT_ACTION_DOWNLOAD) {
+ action = EPHY_ACTION_BROWSE_TO_FILE;
+
+ /* This won't be able to transport the activation time so we cannot
+ * do startup notification, but it's the best that was available
+ */
+ mimeInfo->SetPreferredAction (action);
+ }
+#endif
+
return NS_OK;
}
diff --git a/embed/mozilla/MozDownload.cpp b/embed/mozilla/MozDownload.cpp
index d24bcb25c..943da0ff8 100644
--- a/embed/mozilla/MozDownload.cpp
+++ b/embed/mozilla/MozDownload.cpp
@@ -351,26 +351,22 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest,
{
NS_ENSURE_TRUE (mMIMEInfo, NS_ERROR_FAILURE);
#ifdef HAVE_GECKO_1_9
- nsHandlerInfoAction action;
- mMIMEInfo->GetPreferredAction(&action);
-
- nsCOMPtr<nsIInterfaceRequestor> req (do_QueryInterface (mRequest));
-
- if (action == EPHY_ACTION_BROWSE_TO_FILE) {
- nsCString destSpec;
- rv = mDestination->GetSpec (destSpec);
- NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
-
- GFile *dest;
- dest = g_file_new_for_uri (destSpec.get ());
- ephy_file_browse_to (dest, 0 /* FIXME BUG BUG BUG */);
- g_object_unref (dest);
- } else {
- rv = mMIMEInfo->LaunchWithURI (mDestination, req);
- NS_ENSURE_SUCCESS(rv, rv);
- }
-
- return NS_OK;
+ nsHandlerInfoAction action;
+ mMIMEInfo->GetPreferredAction(&action);
+
+ if (action == EPHY_ACTION_BROWSE_TO_FILE) {
+ nsCString destSpec;
+ rv = mDestination->GetSpec (destSpec);
+ NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
+
+ GFile *dest;
+ dest = g_file_new_for_uri (destSpec.get ());
+ ephy_file_browse_to (dest, 0 /* FIXME BUG BUG BUG */);
+ g_object_unref (dest);
+ }
+ /* All other values are handled by gecko itself */
+
+ return NS_OK;
#else
GDesktopAppInfo *helperApp;