Title: [135511] trunk/Source/WebCore
- Revision
- 135511
- Author
- [email protected]
- Date
- 2012-11-22 05:50:21 -0800 (Thu, 22 Nov 2012)
Log Message
[Qt] Correct extensions on preferredFilename
https://bugs.webkit.org/show_bug.cgi?id=103054
Reviewed by Simon Hausmann.
When guessing a filename we will now ensure it has an extension that is valid for its mimetype.
To do this the two missing methods getExtensionsForMIMEType and getPreferredExtensionForMIMEType
have been added to the Qt implementation of MIMETypeRegistry.
* platform/network/qt/QNetworkReplyHandler.cpp:
(WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
* platform/qt/MIMETypeRegistryQt.cpp:
(WebCore::MIMETypeRegistry::getExtensionsForMIMEType):
(WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (135510 => 135511)
--- trunk/Source/WebCore/ChangeLog 2012-11-22 13:45:59 UTC (rev 135510)
+++ trunk/Source/WebCore/ChangeLog 2012-11-22 13:50:21 UTC (rev 135511)
@@ -1,3 +1,20 @@
+2012-11-22 Allan Sandfeld Jensen <[email protected]>
+
+ [Qt] Correct extensions on preferredFilename
+ https://bugs.webkit.org/show_bug.cgi?id=103054
+
+ Reviewed by Simon Hausmann.
+
+ When guessing a filename we will now ensure it has an extension that is valid for its mimetype.
+ To do this the two missing methods getExtensionsForMIMEType and getPreferredExtensionForMIMEType
+ have been added to the Qt implementation of MIMETypeRegistry.
+
+ * platform/network/qt/QNetworkReplyHandler.cpp:
+ (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
+ * platform/qt/MIMETypeRegistryQt.cpp:
+ (WebCore::MIMETypeRegistry::getExtensionsForMIMEType):
+ (WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
+
2012-11-22 Kent Tamura <[email protected]>
INPUT_MULTIPLE_FIELDS_UI: Refactoring: Do not call updateInnerTextValue if only read-only sub-fields have values
Modified: trunk/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp (135510 => 135511)
--- trunk/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp 2012-11-22 13:45:59 UTC (rev 135510)
+++ trunk/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp 2012-11-22 13:50:21 UTC (rev 135511)
@@ -32,6 +32,7 @@
#include <QDateTime>
#include <QFile>
#include <QFileInfo>
+#include <QMimeDatabase>
#include <QNetworkCookie>
#include <QNetworkReply>
@@ -581,8 +582,21 @@
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());
Modified: trunk/Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp (135510 => 135511)
--- trunk/Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp 2012-11-22 13:45:59 UTC (rev 135510)
+++ trunk/Source/WebCore/platform/qt/MIMETypeRegistryQt.cpp 2012-11-22 13:50:21 UTC (rev 135511)
@@ -56,6 +56,28 @@
return defaultMIMEType();
}
+Vector<String> MIMETypeRegistry::getExtensionsForMIMEType(const String& mimeTypeName)
+{
+ Vector<String> extensions;
+ QMimeType mimeType = QMimeDatabase().mimeTypeForName(mimeTypeName);
+ if (mimeType.isValid() && !mimeType.isDefault()) {
+ Q_FOREACH(const QString& suffix, mimeType.suffixes()) {
+ extensions.append(suffix);
+ }
+ }
+
+ return extensions;
+}
+
+String MIMETypeRegistry::getPreferredExtensionForMIMEType(const String& mimeTypeName)
+{
+ QMimeType mimeType = QMimeDatabase().mimeTypeForName(mimeTypeName);
+ if (mimeType.isValid() && !mimeType.isDefault())
+ return mimeType.preferredSuffix();
+
+ return String();
+}
+
String MIMETypeRegistry::getNormalizedMIMEType(const String& mimeTypeName)
{
// This looks up the mime type object by preferred name or alias, and returns the preferred name.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes