diff options
-rw-r--r-- | embed/mozilla/ContentHandler.cpp | 24 | ||||
-rw-r--r-- | embed/mozilla/MozDownload.cpp | 36 |
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; |