summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-23 15:08:59 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-23 15:09:20 +0100
commit061d58bc0fa016cfeed744fd3e4663460635d69b (patch)
treead9b8b032c803e1c9054c23fa1b7a0f1976bf98f /Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
parent470286ecfe79d59df14944e5b5d34630fc739391 (diff)
Imported WebKit commit 8eb048315f36fa33731f28694630fe4a3c2cbc99 (http://svn.webkit.org/repository/webkit/trunk@135602)
New snapshot that fixes various bugs Change-Id: Icb6ce541a26a9f500d087821ce4b83a8d8a5474a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp')
-rw-r--r--Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
index b83f2ba08..904e85983 100644
--- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -32,6 +32,7 @@
#include <QDateTime>
#include <QFile>
#include <QFileInfo>
+#include <QMimeDatabase>
#include <QNetworkCookie>
#include <QNetworkReply>
@@ -581,8 +582,21 @@ void QNetworkReplyHandler::sendResponseIfNeeded()
if (!suggestedFilename.isEmpty())
response.setSuggestedFilename(suggestedFilename);
- else
- response.setSuggestedFilename(url.lastPathComponent());
+ else {
+ Vector<String> extensions = MIMETypeRegistry::getExtensionsForMIMEType(mimeType);
+ if (extensions.isEmpty())
+ response.setSuggestedFilename(url.lastPathComponent());
+ else {
+ // If the suffix doesn't match the MIME type, correct the suffix.
+ QString filename = url.lastPathComponent();
+ const String suffix = QMimeDatabase().suffixForFileName(filename);
+ if (!extensions.contains(suffix)) {
+ filename.chop(suffix.length());
+ filename += MIMETypeRegistry::getPreferredExtensionForMIMEType(mimeType);
+ }
+ response.setSuggestedFilename(filename);
+ }
+ }
response.setHTTPStatusCode(statusCode);
response.setHTTPStatusText(m_replyWrapper->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toByteArray().constData());