Title: [116145] trunk/Source
Revision
116145
Author
[email protected]
Date
2012-05-04 12:44:47 -0700 (Fri, 04 May 2012)

Log Message

[BlackBerry] Rendering bmp file as text file when Content-Type:image/x-ms-bmp from apache web server.
https://bugs.webkit.org/show_bug.cgi?id=85036

Reviewed by Antonio Gomes.

Source/WebCore:

Move getNormalizedMIMEType from WebKit into MIMETypeRegistry. This way we support uncommon mime types like image/pjpeg
and image/x-ms-bmp out of the box since we map to the more common image/jpeg and image/bmp respectively.

* platform/MIMETypeRegistry.cpp:
(WebCore::initializeSupportedImageMIMETypes):
(WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
(WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType):
(WebCore):
(WebCore::mimeTypeAssociationMap):
(WebCore::MIMETypeRegistry::getNormalizedMIMEType):
* platform/MIMETypeRegistry.h:
(MIMETypeRegistry):

Source/WebKit/blackberry:

Move getNormalizedMIMEType into WebCore::MIMETypeRegistry.

* Api/WebSettings.cpp:
(WebKit):
(BlackBerry::WebKit::WebSettings::isSupportedObjectMIMEType):
* Api/WebSettings.h:
* WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
(WebCore::FrameLoaderClientBlackBerry::createPlugin):
(WebCore::FrameLoaderClientBlackBerry::canShowMIMEType):
(WebCore::FrameLoaderClientBlackBerry::objectContentType):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (116144 => 116145)


--- trunk/Source/WebCore/ChangeLog	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebCore/ChangeLog	2012-05-04 19:44:47 UTC (rev 116145)
@@ -1,3 +1,23 @@
+2012-05-04  Rob Buis  <[email protected]>
+
+        [BlackBerry] Rendering bmp file as text file when Content-Type:image/x-ms-bmp from apache web server.
+        https://bugs.webkit.org/show_bug.cgi?id=85036
+
+        Reviewed by Antonio Gomes.
+
+        Move getNormalizedMIMEType from WebKit into MIMETypeRegistry. This way we support uncommon mime types like image/pjpeg
+        and image/x-ms-bmp out of the box since we map to the more common image/jpeg and image/bmp respectively.
+
+        * platform/MIMETypeRegistry.cpp:
+        (WebCore::initializeSupportedImageMIMETypes):
+        (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
+        (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType):
+        (WebCore):
+        (WebCore::mimeTypeAssociationMap):
+        (WebCore::MIMETypeRegistry::getNormalizedMIMEType):
+        * platform/MIMETypeRegistry.h:
+        (MIMETypeRegistry):
+
 2012-05-04  Sami Kyostila  <[email protected]>
 
         [chromium] Revert compositor layer scrolling

Modified: trunk/Source/WebCore/platform/MIMETypeRegistry.cpp (116144 => 116145)


--- trunk/Source/WebCore/platform/MIMETypeRegistry.cpp	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebCore/platform/MIMETypeRegistry.cpp	2012-05-04 19:44:47 UTC (rev 116145)
@@ -259,11 +259,7 @@
         supportedImageMIMETypes->add(types[i]);
         supportedImageResourceMIMETypes->add(types[i]);
     }
-#if PLATFORM(BLACKBERRY)
-    supportedImageMIMETypes->add("image/pjpeg");
-    supportedImageResourceMIMETypes->add("image/pjpeg");
 #endif
-#endif
 }
 
 static void initializeSupportedImageMIMETypesForEncoding()
@@ -513,7 +509,7 @@
         return false;
     if (!supportedImageMIMETypes)
         initializeMIMETypeRegistry();
-    return supportedImageMIMETypes->contains(mimeType);
+    return supportedImageMIMETypes->contains(getNormalizedMIMEType(mimeType));
 }
 
 bool MIMETypeRegistry::isSupportedImageResourceMIMEType(const String& mimeType)
@@ -522,7 +518,7 @@
         return false;
     if (!supportedImageResourceMIMETypes)
         initializeMIMETypeRegistry();
-    return supportedImageResourceMIMETypes->contains(mimeType);
+    return supportedImageResourceMIMETypes->contains(getNormalizedMIMEType(mimeType));
 }
 
 bool MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(const String& mimeType)
@@ -631,4 +627,75 @@
     return defaultMIMEType;
 }
 
+#if PLATFORM(BLACKBERRY)
+typedef HashMap<String, String> MIMETypeAssociationMap;
+
+static const MIMETypeAssociationMap& mimeTypeAssociationMap()
+{
+    static MIMETypeAssociationMap* mimeTypeMap = 0;
+    if (mimeTypeMap)
+        return *mimeTypeMap;
+
+    mimeTypeMap = new MIMETypeAssociationMap;
+    mimeTypeMap->add("image/x-ms-bmp", "image/bmp");
+    mimeTypeMap->add("image/x-windows-bmp", "image/bmp");
+    mimeTypeMap->add("image/x-bmp", "image/bmp");
+    mimeTypeMap->add("image/x-bitmap", "image/bmp");
+    mimeTypeMap->add("image/x-ms-bitmap", "image/bmp");
+    mimeTypeMap->add("image/jpg", "image/jpeg");
+    mimeTypeMap->add("image/pjpeg", "image/jpeg");
+    mimeTypeMap->add("image/x-png", "image/png");
+    mimeTypeMap->add("image/vnd.rim.png", "image/png");
+    mimeTypeMap->add("image/ico", "image/vnd.microsoft.icon");
+    mimeTypeMap->add("image/icon", "image/vnd.microsoft.icon");
+    mimeTypeMap->add("text/ico", "image/vnd.microsoft.icon");
+    mimeTypeMap->add("application/ico", "image/vnd.microsoft.icon");
+    mimeTypeMap->add("image/x-icon", "image/vnd.microsoft.icon");
+    mimeTypeMap->add("audio/vnd.qcelp", "audio/qcelp");
+    mimeTypeMap->add("audio/qcp", "audio/qcelp");
+    mimeTypeMap->add("audio/vnd.qcp", "audio/qcelp");
+    mimeTypeMap->add("audio/wav", "audio/x-wav");
+    mimeTypeMap->add("audio/mid", "audio/midi");
+    mimeTypeMap->add("audio/sp-midi", "audio/midi");
+    mimeTypeMap->add("audio/x-mid", "audio/midi");
+    mimeTypeMap->add("audio/x-midi", "audio/midi");
+    mimeTypeMap->add("audio/x-mpeg", "audio/mpeg");
+    mimeTypeMap->add("audio/mp3", "audio/mpeg");
+    mimeTypeMap->add("audio/x-mp3", "audio/mpeg");
+    mimeTypeMap->add("audio/mpeg3", "audio/mpeg");
+    mimeTypeMap->add("audio/x-mpeg3", "audio/mpeg");
+    mimeTypeMap->add("audio/mpg3", "audio/mpeg");
+    mimeTypeMap->add("audio/mpg", "audio/mpeg");
+    mimeTypeMap->add("audio/x-mpg", "audio/mpeg");
+    mimeTypeMap->add("audio/m4a", "audio/mp4");
+    mimeTypeMap->add("audio/x-m4a", "audio/mp4");
+    mimeTypeMap->add("audio/x-mp4", "audio/mp4");
+    mimeTypeMap->add("audio/x-aac", "audio/aac");
+    mimeTypeMap->add("audio/x-amr", "audio/amr");
+    mimeTypeMap->add("audio/mpegurl", "audio/x-mpegurl");
+    mimeTypeMap->add("audio/flac", "audio/x-flac");
+    mimeTypeMap->add("video/3gp", "video/3gpp");
+    mimeTypeMap->add("video/avi", "video/x-msvideo");
+    mimeTypeMap->add("video/x-m4v", "video/mp4");
+    mimeTypeMap->add("video/x-quicktime", "video/quicktime");
+    mimeTypeMap->add("application/java", "application/java-archive");
+    mimeTypeMap->add("application/x-java-archive", "application/java-archive");
+    mimeTypeMap->add("application/x-zip-compressed", "application/zip");
+
+    return *mimeTypeMap;
+}
+#endif
+
+String MIMETypeRegistry::getNormalizedMIMEType(const String& mimeType)
+{
+#if PLATFORM(BLACKBERRY)
+    MIMETypeAssociationMap::const_iterator it = mimeTypeAssociationMap().find(mimeType);
+
+    if (it != mimeTypeAssociationMap().end())
+        return it->second;
+#endif
+    return mimeType;
+}
+
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/MIMETypeRegistry.h (116144 => 116145)


--- trunk/Source/WebCore/platform/MIMETypeRegistry.h	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebCore/platform/MIMETypeRegistry.h	2012-05-04 19:44:47 UTC (rev 116145)
@@ -84,6 +84,8 @@
     static HashSet<String>& getSupportedNonImageMIMETypes();
     static HashSet<String>& getSupportedMediaMIMETypes();
     static HashSet<String>& getUnsupportedTextMIMETypes();
+
+    static String getNormalizedMIMEType(const String&);
 };
 
 const String& defaultMIMEType();

Modified: trunk/Source/WebKit/blackberry/Api/WebSettings.cpp (116144 => 116145)


--- trunk/Source/WebKit/blackberry/Api/WebSettings.cpp	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebKit/blackberry/Api/WebSettings.cpp	2012-05-04 19:44:47 UTC (rev 116145)
@@ -19,6 +19,7 @@
 #include "config.h"
 #include "WebSettings.h"
 
+#include "MIMETypeRegistry.h"
 #include "WebSettings_p.h"
 
 #include "WebString.h"
@@ -84,65 +85,6 @@
 DEFINE_STATIC_LOCAL(String, WebKitWebSocketsEnabled, ("WebKitWebSocketsEnabled"));
 DEFINE_STATIC_LOCAL(String, WebKitXSSAuditorEnabled, ("WebKitXSSAuditorEnabled"));
 
-// FIXME: We should consider moving all the mime type code into its own object.
-
-typedef HashMap<String, WebString> MIMETypeAssociationMap;
-
-static const MIMETypeAssociationMap& mimeTypeAssociationMap()
-{
-    static MIMETypeAssociationMap* mimeTypeMap = 0;
-    if (mimeTypeMap)
-        return *mimeTypeMap;
-
-    mimeTypeMap = new MIMETypeAssociationMap;
-    mimeTypeMap->add("image/x-ms-bmp", "image/bmp");
-    mimeTypeMap->add("image/x-windows-bmp", "image/bmp");
-    mimeTypeMap->add("image/x-bmp", "image/bmp");
-    mimeTypeMap->add("image/x-bitmap", "image/bmp");
-    mimeTypeMap->add("image/x-ms-bitmap", "image/bmp");
-    mimeTypeMap->add("image/jpg", "image/jpeg");
-    mimeTypeMap->add("image/pjpeg", "image/jpeg");
-    mimeTypeMap->add("image/x-png", "image/png");
-    mimeTypeMap->add("image/vnd.rim.png", "image/png");
-    mimeTypeMap->add("image/ico", "image/vnd.microsoft.icon");
-    mimeTypeMap->add("image/icon", "image/vnd.microsoft.icon");
-    mimeTypeMap->add("text/ico", "image/vnd.microsoft.icon");
-    mimeTypeMap->add("application/ico", "image/vnd.microsoft.icon");
-    mimeTypeMap->add("image/x-icon", "image/vnd.microsoft.icon");
-    mimeTypeMap->add("audio/vnd.qcelp", "audio/qcelp");
-    mimeTypeMap->add("audio/qcp", "audio/qcelp");
-    mimeTypeMap->add("audio/vnd.qcp", "audio/qcelp");
-    mimeTypeMap->add("audio/wav", "audio/x-wav");
-    mimeTypeMap->add("audio/mid", "audio/midi");
-    mimeTypeMap->add("audio/sp-midi", "audio/midi");
-    mimeTypeMap->add("audio/x-mid", "audio/midi");
-    mimeTypeMap->add("audio/x-midi", "audio/midi");
-    mimeTypeMap->add("audio/x-mpeg", "audio/mpeg");
-    mimeTypeMap->add("audio/mp3", "audio/mpeg");
-    mimeTypeMap->add("audio/x-mp3", "audio/mpeg");
-    mimeTypeMap->add("audio/mpeg3", "audio/mpeg");
-    mimeTypeMap->add("audio/x-mpeg3", "audio/mpeg");
-    mimeTypeMap->add("audio/mpg3", "audio/mpeg");
-    mimeTypeMap->add("audio/mpg", "audio/mpeg");
-    mimeTypeMap->add("audio/x-mpg", "audio/mpeg");
-    mimeTypeMap->add("audio/m4a", "audio/mp4");
-    mimeTypeMap->add("audio/x-m4a", "audio/mp4");
-    mimeTypeMap->add("audio/x-mp4", "audio/mp4");
-    mimeTypeMap->add("audio/x-aac", "audio/aac");
-    mimeTypeMap->add("audio/x-amr", "audio/amr");
-    mimeTypeMap->add("audio/mpegurl", "audio/x-mpegurl");
-    mimeTypeMap->add("audio/flac", "audio/x-flac");
-    mimeTypeMap->add("video/3gp", "video/3gpp");
-    mimeTypeMap->add("video/avi", "video/x-msvideo");
-    mimeTypeMap->add("video/x-m4v", "video/mp4");
-    mimeTypeMap->add("video/x-quicktime", "video/quicktime");
-    mimeTypeMap->add("application/java", "application/java-archive");
-    mimeTypeMap->add("application/x-java-archive", "application/java-archive");
-    mimeTypeMap->add("application/x-zip-compressed", "application/zip");
-
-    return *mimeTypeMap;
-}
-
 static HashSet<String>* s_supportedObjectMIMETypes;
 
 WebSettingsPrivate::WebSettingsPrivate()
@@ -254,16 +196,9 @@
     if (!s_supportedObjectMIMETypes)
         return false;
 
-    return s_supportedObjectMIMETypes->contains(getNormalizedMIMEType(mimeType));
+    return s_supportedObjectMIMETypes->contains(MIMETypeRegistry::getNormalizedMIMEType(mimeType));
 }
 
-WebString WebSettings::getNormalizedMIMEType(const WebString& type)
-{
-    MIMETypeAssociationMap::const_iterator i = mimeTypeAssociationMap().find(type);
-
-    return i == mimeTypeAssociationMap().end() ? type : i->second;
-}
-
 bool WebSettings::xssAuditorEnabled() const
 {
     return m_private->getBoolean(WebKitXSSAuditorEnabled);

Modified: trunk/Source/WebKit/blackberry/Api/WebSettings.h (116144 => 116145)


--- trunk/Source/WebKit/blackberry/Api/WebSettings.h	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebKit/blackberry/Api/WebSettings.h	2012-05-04 19:44:47 UTC (rev 116145)
@@ -56,7 +56,6 @@
 
     static void addSupportedObjectPluginMIMEType(const char*);
     static bool isSupportedObjectMIMEType(const WebString&);
-    static WebString getNormalizedMIMEType(const WebString&);
 
     bool xssAuditorEnabled() const;
     void setXSSAuditorEnabled(bool);

Modified: trunk/Source/WebKit/blackberry/ChangeLog (116144 => 116145)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-05-04 19:44:47 UTC (rev 116145)
@@ -1,3 +1,21 @@
+2012-05-04  Rob Buis  <[email protected]>
+
+        [BlackBerry] Rendering bmp file as text file when Content-Type:image/x-ms-bmp from apache web server.
+        https://bugs.webkit.org/show_bug.cgi?id=85036
+
+        Reviewed by Antonio Gomes.
+
+        Move getNormalizedMIMEType into WebCore::MIMETypeRegistry.
+
+        * Api/WebSettings.cpp:
+        (WebKit):
+        (BlackBerry::WebKit::WebSettings::isSupportedObjectMIMEType):
+        * Api/WebSettings.h:
+        * WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
+        (WebCore::FrameLoaderClientBlackBerry::createPlugin):
+        (WebCore::FrameLoaderClientBlackBerry::canShowMIMEType):
+        (WebCore::FrameLoaderClientBlackBerry::objectContentType):
+
 2012-05-04  Nate Chapin  <[email protected]>
 
         Don't require FrameLoaderClient to manufacture a commitData() call for empty documents.

Modified: trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp (116144 => 116145)


--- trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp	2012-05-04 19:38:24 UTC (rev 116144)
+++ trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp	2012-05-04 19:44:47 UTC (rev 116145)
@@ -320,7 +320,7 @@
     String mimeType(mimeTypeIn);
     if (mimeType.isEmpty()) {
         mimeType = MIMETypeRegistry::getMIMETypeForPath(url.path());
-        mimeType = WebSettings::getNormalizedMIMEType(mimeType);
+        mimeType = MIMETypeRegistry::getNormalizedMIMEType(mimeType);
         if (mimeType != "application/x-shockwave-flash")
             mimeType = mimeTypeIn;
     }
@@ -451,7 +451,7 @@
 bool FrameLoaderClientBlackBerry::canShowMIMEType(const String& mimeTypeIn) const
 {
     // Get normalized type.
-    String mimeType = WebSettings::getNormalizedMIMEType(mimeTypeIn);
+    String mimeType = MIMETypeRegistry::getNormalizedMIMEType(mimeTypeIn);
 
     // FIXME: Seems no other port checks empty MIME type in this function. Should we do that?
     return MIMETypeRegistry::isSupportedImageMIMEType(mimeType) || MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)
@@ -768,7 +768,7 @@
         mimeType = MIMETypeRegistry::getMIMETypeForPath(url.path());
 
     // Get mapped type.
-    mimeType = WebSettings::getNormalizedMIMEType(mimeType);
+    mimeType = MIMETypeRegistry::getNormalizedMIMEType(mimeType);
 
     ObjectContentType defaultType = FrameLoader::defaultObjectContentType(url, mimeType, shouldPreferPlugInsForImages);
     if (defaultType != ObjectContentNone)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to