diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:08:59 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:09:20 +0100 |
commit | 061d58bc0fa016cfeed744fd3e4663460635d69b (patch) | |
tree | ad9b8b032c803e1c9054c23fa1b7a0f1976bf98f /Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp | |
parent | 470286ecfe79d59df14944e5b5d34630fc739391 (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.cpp | 18 |
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()); |