Title: [229497] trunk/Source/WebCore
Revision
229497
Author
[email protected]
Date
2018-03-09 17:47:28 -0800 (Fri, 09 Mar 2018)

Log Message

Clean up MIMETypeRegistry::mimeTypeAssociationMap for Curl
https://bugs.webkit.org/show_bug.cgi?id=170529

Reviewed by Alex Christensen.

* platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::getNormalizedMIMEType):
(WebCore::mimeTypeAssociationMap): Deleted.
Create map with makeNeverDestroyed and a loop instead.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (229496 => 229497)


--- trunk/Source/WebCore/ChangeLog	2018-03-10 01:28:07 UTC (rev 229496)
+++ trunk/Source/WebCore/ChangeLog	2018-03-10 01:47:28 UTC (rev 229497)
@@ -1,3 +1,15 @@
+2018-03-09  Ross Kirsling  <[email protected]>
+
+        Clean up MIMETypeRegistry::mimeTypeAssociationMap for Curl
+        https://bugs.webkit.org/show_bug.cgi?id=170529
+
+        Reviewed by Alex Christensen.
+
+        * platform/MIMETypeRegistry.cpp:
+        (WebCore::MIMETypeRegistry::getNormalizedMIMEType):
+        (WebCore::mimeTypeAssociationMap): Deleted.
+        Create map with makeNeverDestroyed and a loop instead.
+
 2018-03-09  Brian Burg  <[email protected]>
 
         Web Inspector: there should only be one way for async backend commands to send failure

Modified: trunk/Source/WebCore/platform/MIMETypeRegistry.cpp (229496 => 229497)


--- trunk/Source/WebCore/platform/MIMETypeRegistry.cpp	2018-03-10 01:28:07 UTC (rev 229496)
+++ trunk/Source/WebCore/platform/MIMETypeRegistry.cpp	2018-03-10 01:47:28 UTC (rev 229497)
@@ -718,73 +718,66 @@
 
 #else
 
-typedef HashMap<String, String, ASCIICaseInsensitiveHash> MIMETypeAssociationMap;
-
-static const MIMETypeAssociationMap& mimeTypeAssociationMap()
+String MIMETypeRegistry::getNormalizedMIMEType(const String& mimeType)
 {
-    static MIMETypeAssociationMap* mimeTypeMap = 0;
-    if (mimeTypeMap)
-        return *mimeTypeMap;
+    static const auto mimeTypeAssociationMap = makeNeverDestroyed([] {
+        static const std::pair<const char*, const char*> mimeTypeAssociations[] = {
+            { "image/x-ms-bmp", "image/bmp" },
+            { "image/x-windows-bmp", "image/bmp" },
+            { "image/x-bmp", "image/bmp" },
+            { "image/x-bitmap", "image/bmp" },
+            { "image/x-ms-bitmap", "image/bmp" },
+            { "image/jpg", "image/jpeg" },
+            { "image/pjpeg", "image/jpeg" },
+            { "image/x-png", "image/png" },
+            { "image/vnd.rim.png", "image/png" },
+            { "image/ico", "image/vnd.microsoft.icon" },
+            { "image/icon", "image/vnd.microsoft.icon" },
+            { "text/ico", "image/vnd.microsoft.icon" },
+            { "application/ico", "image/vnd.microsoft.icon" },
+            { "image/x-icon", "image/vnd.microsoft.icon" },
+            { "audio/vnd.qcelp", "audio/qcelp" },
+            { "audio/qcp", "audio/qcelp" },
+            { "audio/vnd.qcp", "audio/qcelp" },
+            { "audio/wav", "audio/x-wav" },
+            { "audio/vnd.wave", "audio/x-wav" },
+            { "audio/mid", "audio/midi" },
+            { "audio/sp-midi", "audio/midi" },
+            { "audio/x-mid", "audio/midi" },
+            { "audio/x-midi", "audio/midi" },
+            { "audio/x-mpeg", "audio/mpeg" },
+            { "audio/mp3", "audio/mpeg" },
+            { "audio/x-mp3", "audio/mpeg" },
+            { "audio/mpeg3", "audio/mpeg" },
+            { "audio/x-mpeg3", "audio/mpeg" },
+            { "audio/mpg3", "audio/mpeg" },
+            { "audio/mpg", "audio/mpeg" },
+            { "audio/x-mpg", "audio/mpeg" },
+            { "audio/m4a", "audio/mp4" },
+            { "audio/x-m4a", "audio/mp4" },
+            { "audio/x-mp4", "audio/mp4" },
+            { "audio/x-aac", "audio/aac" },
+            { "audio/x-amr", "audio/amr" },
+            { "audio/mpegurl", "audio/x-mpegurl" },
+            { "audio/flac", "audio/x-flac" },
+            { "video/3gp", "video/3gpp" },
+            { "video/avi", "video/x-msvideo" },
+            { "video/x-m4v", "video/mp4" },
+            { "video/x-quicktime", "video/quicktime" },
+            { "application/java", "application/java-archive" },
+            { "application/x-java-archive", "application/java-archive" },
+            { "application/x-zip-compressed", "application/zip" },
+            { "text/cache-manifest", "text/plain" },
+        };
 
-    // FIXME: Should not allocate this on the heap; use NeverDestroyed instead.
-    mimeTypeMap = new MIMETypeAssociationMap;
+        HashMap<String, String, ASCIICaseInsensitiveHash> map;
+        for (auto& pair : mimeTypeAssociations)
+            map->add(ASCIILiteral { pair.first }, ASCIILiteral { pair.second });
+        return map;
+    }());
 
-    // FIXME: Writing the function out like this will create a giant function.
-    // Should use a loop instead.
-    mimeTypeMap->add(ASCIILiteral("image/x-ms-bmp"), ASCIILiteral("image/bmp"));
-    mimeTypeMap->add(ASCIILiteral("image/x-windows-bmp"), ASCIILiteral("image/bmp"));
-    mimeTypeMap->add(ASCIILiteral("image/x-bmp"), ASCIILiteral("image/bmp"));
-    mimeTypeMap->add(ASCIILiteral("image/x-bitmap"), ASCIILiteral("image/bmp"));
-    mimeTypeMap->add(ASCIILiteral("image/x-ms-bitmap"), ASCIILiteral("image/bmp"));
-    mimeTypeMap->add(ASCIILiteral("image/jpg"), ASCIILiteral("image/jpeg"));
-    mimeTypeMap->add(ASCIILiteral("image/pjpeg"), ASCIILiteral("image/jpeg"));
-    mimeTypeMap->add(ASCIILiteral("image/x-png"), ASCIILiteral("image/png"));
-    mimeTypeMap->add(ASCIILiteral("image/vnd.rim.png"), ASCIILiteral("image/png"));
-    mimeTypeMap->add(ASCIILiteral("image/ico"), ASCIILiteral("image/vnd.microsoft.icon"));
-    mimeTypeMap->add(ASCIILiteral("image/icon"), ASCIILiteral("image/vnd.microsoft.icon"));
-    mimeTypeMap->add(ASCIILiteral("text/ico"), ASCIILiteral("image/vnd.microsoft.icon"));
-    mimeTypeMap->add(ASCIILiteral("application/ico"), ASCIILiteral("image/vnd.microsoft.icon"));
-    mimeTypeMap->add(ASCIILiteral("image/x-icon"), ASCIILiteral("image/vnd.microsoft.icon"));
-    mimeTypeMap->add(ASCIILiteral("audio/vnd.qcelp"), ASCIILiteral("audio/qcelp"));
-    mimeTypeMap->add(ASCIILiteral("audio/qcp"), ASCIILiteral("audio/qcelp"));
-    mimeTypeMap->add(ASCIILiteral("audio/vnd.qcp"), ASCIILiteral("audio/qcelp"));
-    mimeTypeMap->add(ASCIILiteral("audio/wav"), ASCIILiteral("audio/x-wav"));
-    mimeTypeMap->add(ASCIILiteral("audio/vnd.wave"), ASCIILiteral("audio/x-wav"));
-    mimeTypeMap->add(ASCIILiteral("audio/mid"), ASCIILiteral("audio/midi"));
-    mimeTypeMap->add(ASCIILiteral("audio/sp-midi"), ASCIILiteral("audio/midi"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-mid"), ASCIILiteral("audio/midi"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-midi"), ASCIILiteral("audio/midi"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-mpeg"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/mp3"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-mp3"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/mpeg3"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-mpeg3"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/mpg3"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/mpg"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-mpg"), ASCIILiteral("audio/mpeg"));
-    mimeTypeMap->add(ASCIILiteral("audio/m4a"), ASCIILiteral("audio/mp4"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-m4a"), ASCIILiteral("audio/mp4"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-mp4"), ASCIILiteral("audio/mp4"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-aac"), ASCIILiteral("audio/aac"));
-    mimeTypeMap->add(ASCIILiteral("audio/x-amr"), ASCIILiteral("audio/amr"));
-    mimeTypeMap->add(ASCIILiteral("audio/mpegurl"), ASCIILiteral("audio/x-mpegurl"));
-    mimeTypeMap->add(ASCIILiteral("audio/flac"), ASCIILiteral("audio/x-flac"));
-    mimeTypeMap->add(ASCIILiteral("video/3gp"), ASCIILiteral("video/3gpp"));
-    mimeTypeMap->add(ASCIILiteral("video/avi"), ASCIILiteral("video/x-msvideo"));
-    mimeTypeMap->add(ASCIILiteral("video/x-m4v"), ASCIILiteral("video/mp4"));
-    mimeTypeMap->add(ASCIILiteral("video/x-quicktime"), ASCIILiteral("video/quicktime"));
-    mimeTypeMap->add(ASCIILiteral("application/java"), ASCIILiteral("application/java-archive"));
-    mimeTypeMap->add(ASCIILiteral("application/x-java-archive"), ASCIILiteral("application/java-archive"));
-    mimeTypeMap->add(ASCIILiteral("application/x-zip-compressed"), ASCIILiteral("application/zip"));
-    mimeTypeMap->add(ASCIILiteral("text/cache-manifest"), ASCIILiteral("text/plain"));
-
-    return *mimeTypeMap;
-}
-
-String MIMETypeRegistry::getNormalizedMIMEType(const String& mimeType)
-{
-    auto it = mimeTypeAssociationMap().find(mimeType);
-    if (it != mimeTypeAssociationMap().end())
+    auto it = mimeTypeAssociationMap.get().find(mimeType);
+    if (it != mimeTypeAssociationMap.get().end())
         return it->value;
     return mimeType;
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to