Changeset 116145 in webkit


Ignore:
Timestamp:
May 4, 2012 12:44:47 PM (12 years ago)
Author:
rwlbuis@webkit.org
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):

Location:
trunk/Source
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r116142 r116145  
     12012-05-04  Rob Buis  <rbuis@rim.com>
     2
     3        [BlackBerry] Rendering bmp file as text file when Content-Type:image/x-ms-bmp from apache web server.
     4        https://bugs.webkit.org/show_bug.cgi?id=85036
     5
     6        Reviewed by Antonio Gomes.
     7
     8        Move getNormalizedMIMEType from WebKit into MIMETypeRegistry. This way we support uncommon mime types like image/pjpeg
     9        and image/x-ms-bmp out of the box since we map to the more common image/jpeg and image/bmp respectively.
     10
     11        * platform/MIMETypeRegistry.cpp:
     12        (WebCore::initializeSupportedImageMIMETypes):
     13        (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
     14        (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType):
     15        (WebCore):
     16        (WebCore::mimeTypeAssociationMap):
     17        (WebCore::MIMETypeRegistry::getNormalizedMIMEType):
     18        * platform/MIMETypeRegistry.h:
     19        (MIMETypeRegistry):
     20
    1212012-05-04  Sami Kyostila  <skyostil@chromium.org>
    222
  • trunk/Source/WebCore/platform/MIMETypeRegistry.cpp

    r116105 r116145  
    260260        supportedImageResourceMIMETypes->add(types[i]);
    261261    }
    262 #if PLATFORM(BLACKBERRY)
    263     supportedImageMIMETypes->add("image/pjpeg");
    264     supportedImageResourceMIMETypes->add("image/pjpeg");
    265 #endif
    266262#endif
    267263}
     
    514510    if (!supportedImageMIMETypes)
    515511        initializeMIMETypeRegistry();
    516     return supportedImageMIMETypes->contains(mimeType);
     512    return supportedImageMIMETypes->contains(getNormalizedMIMEType(mimeType));
    517513}
    518514
     
    523519    if (!supportedImageResourceMIMETypes)
    524520        initializeMIMETypeRegistry();
    525     return supportedImageResourceMIMETypes->contains(mimeType);
     521    return supportedImageResourceMIMETypes->contains(getNormalizedMIMEType(mimeType));
    526522}
    527523
     
    632628}
    633629
     630#if PLATFORM(BLACKBERRY)
     631typedef HashMap<String, String> MIMETypeAssociationMap;
     632
     633static const MIMETypeAssociationMap& mimeTypeAssociationMap()
     634{
     635    static MIMETypeAssociationMap* mimeTypeMap = 0;
     636    if (mimeTypeMap)
     637        return *mimeTypeMap;
     638
     639    mimeTypeMap = new MIMETypeAssociationMap;
     640    mimeTypeMap->add("image/x-ms-bmp", "image/bmp");
     641    mimeTypeMap->add("image/x-windows-bmp", "image/bmp");
     642    mimeTypeMap->add("image/x-bmp", "image/bmp");
     643    mimeTypeMap->add("image/x-bitmap", "image/bmp");
     644    mimeTypeMap->add("image/x-ms-bitmap", "image/bmp");
     645    mimeTypeMap->add("image/jpg", "image/jpeg");
     646    mimeTypeMap->add("image/pjpeg", "image/jpeg");
     647    mimeTypeMap->add("image/x-png", "image/png");
     648    mimeTypeMap->add("image/vnd.rim.png", "image/png");
     649    mimeTypeMap->add("image/ico", "image/vnd.microsoft.icon");
     650    mimeTypeMap->add("image/icon", "image/vnd.microsoft.icon");
     651    mimeTypeMap->add("text/ico", "image/vnd.microsoft.icon");
     652    mimeTypeMap->add("application/ico", "image/vnd.microsoft.icon");
     653    mimeTypeMap->add("image/x-icon", "image/vnd.microsoft.icon");
     654    mimeTypeMap->add("audio/vnd.qcelp", "audio/qcelp");
     655    mimeTypeMap->add("audio/qcp", "audio/qcelp");
     656    mimeTypeMap->add("audio/vnd.qcp", "audio/qcelp");
     657    mimeTypeMap->add("audio/wav", "audio/x-wav");
     658    mimeTypeMap->add("audio/mid", "audio/midi");
     659    mimeTypeMap->add("audio/sp-midi", "audio/midi");
     660    mimeTypeMap->add("audio/x-mid", "audio/midi");
     661    mimeTypeMap->add("audio/x-midi", "audio/midi");
     662    mimeTypeMap->add("audio/x-mpeg", "audio/mpeg");
     663    mimeTypeMap->add("audio/mp3", "audio/mpeg");
     664    mimeTypeMap->add("audio/x-mp3", "audio/mpeg");
     665    mimeTypeMap->add("audio/mpeg3", "audio/mpeg");
     666    mimeTypeMap->add("audio/x-mpeg3", "audio/mpeg");
     667    mimeTypeMap->add("audio/mpg3", "audio/mpeg");
     668    mimeTypeMap->add("audio/mpg", "audio/mpeg");
     669    mimeTypeMap->add("audio/x-mpg", "audio/mpeg");
     670    mimeTypeMap->add("audio/m4a", "audio/mp4");
     671    mimeTypeMap->add("audio/x-m4a", "audio/mp4");
     672    mimeTypeMap->add("audio/x-mp4", "audio/mp4");
     673    mimeTypeMap->add("audio/x-aac", "audio/aac");
     674    mimeTypeMap->add("audio/x-amr", "audio/amr");
     675    mimeTypeMap->add("audio/mpegurl", "audio/x-mpegurl");
     676    mimeTypeMap->add("audio/flac", "audio/x-flac");
     677    mimeTypeMap->add("video/3gp", "video/3gpp");
     678    mimeTypeMap->add("video/avi", "video/x-msvideo");
     679    mimeTypeMap->add("video/x-m4v", "video/mp4");
     680    mimeTypeMap->add("video/x-quicktime", "video/quicktime");
     681    mimeTypeMap->add("application/java", "application/java-archive");
     682    mimeTypeMap->add("application/x-java-archive", "application/java-archive");
     683    mimeTypeMap->add("application/x-zip-compressed", "application/zip");
     684
     685    return *mimeTypeMap;
     686}
     687#endif
     688
     689String MIMETypeRegistry::getNormalizedMIMEType(const String& mimeType)
     690{
     691#if PLATFORM(BLACKBERRY)
     692    MIMETypeAssociationMap::const_iterator it = mimeTypeAssociationMap().find(mimeType);
     693
     694    if (it != mimeTypeAssociationMap().end())
     695        return it->second;
     696#endif
     697    return mimeType;
     698}
     699
     700
    634701} // namespace WebCore
  • trunk/Source/WebCore/platform/MIMETypeRegistry.h

    r110557 r116145  
    8585    static HashSet<String>& getSupportedMediaMIMETypes();
    8686    static HashSet<String>& getUnsupportedTextMIMETypes();
     87
     88    static String getNormalizedMIMEType(const String&);
    8789};
    8890
  • trunk/Source/WebKit/blackberry/Api/WebSettings.cpp

    r111209 r116145  
    2020#include "WebSettings.h"
    2121
     22#include "MIMETypeRegistry.h"
    2223#include "WebSettings_p.h"
    2324
     
    8586DEFINE_STATIC_LOCAL(String, WebKitXSSAuditorEnabled, ("WebKitXSSAuditorEnabled"));
    8687
    87 // FIXME: We should consider moving all the mime type code into its own object.
    88 
    89 typedef HashMap<String, WebString> MIMETypeAssociationMap;
    90 
    91 static const MIMETypeAssociationMap& mimeTypeAssociationMap()
    92 {
    93     static MIMETypeAssociationMap* mimeTypeMap = 0;
    94     if (mimeTypeMap)
    95         return *mimeTypeMap;
    96 
    97     mimeTypeMap = new MIMETypeAssociationMap;
    98     mimeTypeMap->add("image/x-ms-bmp", "image/bmp");
    99     mimeTypeMap->add("image/x-windows-bmp", "image/bmp");
    100     mimeTypeMap->add("image/x-bmp", "image/bmp");
    101     mimeTypeMap->add("image/x-bitmap", "image/bmp");
    102     mimeTypeMap->add("image/x-ms-bitmap", "image/bmp");
    103     mimeTypeMap->add("image/jpg", "image/jpeg");
    104     mimeTypeMap->add("image/pjpeg", "image/jpeg");
    105     mimeTypeMap->add("image/x-png", "image/png");
    106     mimeTypeMap->add("image/vnd.rim.png", "image/png");
    107     mimeTypeMap->add("image/ico", "image/vnd.microsoft.icon");
    108     mimeTypeMap->add("image/icon", "image/vnd.microsoft.icon");
    109     mimeTypeMap->add("text/ico", "image/vnd.microsoft.icon");
    110     mimeTypeMap->add("application/ico", "image/vnd.microsoft.icon");
    111     mimeTypeMap->add("image/x-icon", "image/vnd.microsoft.icon");
    112     mimeTypeMap->add("audio/vnd.qcelp", "audio/qcelp");
    113     mimeTypeMap->add("audio/qcp", "audio/qcelp");
    114     mimeTypeMap->add("audio/vnd.qcp", "audio/qcelp");
    115     mimeTypeMap->add("audio/wav", "audio/x-wav");
    116     mimeTypeMap->add("audio/mid", "audio/midi");
    117     mimeTypeMap->add("audio/sp-midi", "audio/midi");
    118     mimeTypeMap->add("audio/x-mid", "audio/midi");
    119     mimeTypeMap->add("audio/x-midi", "audio/midi");
    120     mimeTypeMap->add("audio/x-mpeg", "audio/mpeg");
    121     mimeTypeMap->add("audio/mp3", "audio/mpeg");
    122     mimeTypeMap->add("audio/x-mp3", "audio/mpeg");
    123     mimeTypeMap->add("audio/mpeg3", "audio/mpeg");
    124     mimeTypeMap->add("audio/x-mpeg3", "audio/mpeg");
    125     mimeTypeMap->add("audio/mpg3", "audio/mpeg");
    126     mimeTypeMap->add("audio/mpg", "audio/mpeg");
    127     mimeTypeMap->add("audio/x-mpg", "audio/mpeg");
    128     mimeTypeMap->add("audio/m4a", "audio/mp4");
    129     mimeTypeMap->add("audio/x-m4a", "audio/mp4");
    130     mimeTypeMap->add("audio/x-mp4", "audio/mp4");
    131     mimeTypeMap->add("audio/x-aac", "audio/aac");
    132     mimeTypeMap->add("audio/x-amr", "audio/amr");
    133     mimeTypeMap->add("audio/mpegurl", "audio/x-mpegurl");
    134     mimeTypeMap->add("audio/flac", "audio/x-flac");
    135     mimeTypeMap->add("video/3gp", "video/3gpp");
    136     mimeTypeMap->add("video/avi", "video/x-msvideo");
    137     mimeTypeMap->add("video/x-m4v", "video/mp4");
    138     mimeTypeMap->add("video/x-quicktime", "video/quicktime");
    139     mimeTypeMap->add("application/java", "application/java-archive");
    140     mimeTypeMap->add("application/x-java-archive", "application/java-archive");
    141     mimeTypeMap->add("application/x-zip-compressed", "application/zip");
    142 
    143     return *mimeTypeMap;
    144 }
    145 
    14688static HashSet<String>* s_supportedObjectMIMETypes;
    14789
     
    255197        return false;
    256198
    257     return s_supportedObjectMIMETypes->contains(getNormalizedMIMEType(mimeType));
    258 }
    259 
    260 WebString WebSettings::getNormalizedMIMEType(const WebString& type)
    261 {
    262     MIMETypeAssociationMap::const_iterator i = mimeTypeAssociationMap().find(type);
    263 
    264     return i == mimeTypeAssociationMap().end() ? type : i->second;
     199    return s_supportedObjectMIMETypes->contains(MIMETypeRegistry::getNormalizedMIMEType(mimeType));
    265200}
    266201
  • trunk/Source/WebKit/blackberry/Api/WebSettings.h

    r111209 r116145  
    5757    static void addSupportedObjectPluginMIMEType(const char*);
    5858    static bool isSupportedObjectMIMEType(const WebString&);
    59     static WebString getNormalizedMIMEType(const WebString&);
    6059
    6160    bool xssAuditorEnabled() const;
  • trunk/Source/WebKit/blackberry/ChangeLog

    r116121 r116145  
     12012-05-04  Rob Buis  <rbuis@rim.com>
     2
     3        [BlackBerry] Rendering bmp file as text file when Content-Type:image/x-ms-bmp from apache web server.
     4        https://bugs.webkit.org/show_bug.cgi?id=85036
     5
     6        Reviewed by Antonio Gomes.
     7
     8        Move getNormalizedMIMEType into WebCore::MIMETypeRegistry.
     9
     10        * Api/WebSettings.cpp:
     11        (WebKit):
     12        (BlackBerry::WebKit::WebSettings::isSupportedObjectMIMEType):
     13        * Api/WebSettings.h:
     14        * WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
     15        (WebCore::FrameLoaderClientBlackBerry::createPlugin):
     16        (WebCore::FrameLoaderClientBlackBerry::canShowMIMEType):
     17        (WebCore::FrameLoaderClientBlackBerry::objectContentType):
     18
    1192012-05-04  Nate Chapin  <japhet@chromium.org>
    220
  • trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp

    r116121 r116145  
    321321    if (mimeType.isEmpty()) {
    322322        mimeType = MIMETypeRegistry::getMIMETypeForPath(url.path());
    323         mimeType = WebSettings::getNormalizedMIMEType(mimeType);
     323        mimeType = MIMETypeRegistry::getNormalizedMIMEType(mimeType);
    324324        if (mimeType != "application/x-shockwave-flash")
    325325            mimeType = mimeTypeIn;
     
    452452{
    453453    // Get normalized type.
    454     String mimeType = WebSettings::getNormalizedMIMEType(mimeTypeIn);
     454    String mimeType = MIMETypeRegistry::getNormalizedMIMEType(mimeTypeIn);
    455455
    456456    // FIXME: Seems no other port checks empty MIME type in this function. Should we do that?
     
    769769
    770770    // Get mapped type.
    771     mimeType = WebSettings::getNormalizedMIMEType(mimeType);
     771    mimeType = MIMETypeRegistry::getNormalizedMIMEType(mimeType);
    772772
    773773    ObjectContentType defaultType = FrameLoader::defaultObjectContentType(url, mimeType, shouldPreferPlugInsForImages);
Note: See TracChangeset for help on using the changeset viewer.