Title: [224387] trunk/Source
Revision
224387
Author
m...@apple.com
Date
2017-11-02 23:08:11 -0700 (Thu, 02 Nov 2017)

Log Message

Don't try to guess plugin MIME type from a file extension in a URL (no observable effect)
https://bugs.webkit.org/show_bug.cgi?id=178333

Reviewed by Darin Adler.

Source/WebCore:

No test cases because I could not find an observable behavior difference,
even after trying many different plugin loading scenarios.

* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot): loadedMIMEType --> serviceType
(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns): ditto
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot): ditto
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn): ditto
* html/HTMLPlugInImageElement.h:
(WebCore::HTMLPlugInImageElement::loadedMimeType const): Deleted. This was the one call site
for mimeTypeFromURL, and is otherwise just a wrapper for SerciceType()
* platform/URL.cpp:
(WebCore::mimeTypeFromURL): Deleted. This was the only use of MIMETypeDatabase in URL.
* platform/URL.h: Removed declaration for mimeTypeFromURL.
* WebCore.order: Removed mimeTypeFromURL.

Source/WebKit:

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::pluginDidReceiveUserInteraction): loadedMIMEType --> serviceType
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::determinePrimarySnapshottedPlugIn): ditto

Source/WebKitLegacy/win:

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::objectContentType): Remove unnecessary call to mimeTypeFromURL

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (224386 => 224387)


--- trunk/Source/WebCore/ChangeLog	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebCore/ChangeLog	2017-11-03 06:08:11 UTC (rev 224387)
@@ -1,3 +1,26 @@
+2017-11-02  Maciej Stachowiak  <m...@apple.com>
+
+        Don't try to guess plugin MIME type from a file extension in a URL (no observable effect)
+        https://bugs.webkit.org/show_bug.cgi?id=178333
+
+        Reviewed by Darin Adler.
+
+        No test cases because I could not find an observable behavior difference,
+        even after trying many different plugin loading scenarios.
+        
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot): loadedMIMEType --> serviceType
+        (WebCore::HTMLPlugInImageElement::restartSimilarPlugIns): ditto
+        (WebCore::HTMLPlugInImageElement::userDidClickSnapshot): ditto
+        (WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn): ditto
+        * html/HTMLPlugInImageElement.h:
+        (WebCore::HTMLPlugInImageElement::loadedMimeType const): Deleted. This was the one call site
+        for mimeTypeFromURL, and is otherwise just a wrapper for SerciceType()
+        * platform/URL.cpp:
+        (WebCore::mimeTypeFromURL): Deleted. This was the only use of MIMETypeDatabase in URL.
+        * platform/URL.h: Removed declaration for mimeTypeFromURL.
+        * WebCore.order: Removed mimeTypeFromURL.
+
 2017-11-02  Basuke Suzuki  <basuke.suz...@sony.com>
 
         [Curl] Fix cancellation process implementation

Modified: trunk/Source/WebCore/WebCore.order (224386 => 224387)


--- trunk/Source/WebCore/WebCore.order	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebCore/WebCore.order	2017-11-03 06:08:11 UTC (rev 224387)
@@ -15563,7 +15563,6 @@
 __ZN7WebCore18jsHTMLElementTitleEPN3JSC9ExecStateENS0_7JSValueENS0_12PropertyNameE
 __ZN7WebCore9InlineBox11extractLineEv
 __ZN7WebCore9InlineBox10attachLineEv
-__ZN7WebCore15mimeTypeFromURLERKNS_4KURLE
 __ZN7WebCore22HTMLPlugInImageElement15setDisplayStateENS_17HTMLPlugInElement12DisplayStateE
 __ZN7WebCore16HTMLQuoteElementD0Ev
 __ZN7WebCore15PlatformCALayer18removeAllSublayersEv

Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (224386 => 224387)


--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp	2017-11-03 06:08:11 UTC (rev 224387)
@@ -356,7 +356,7 @@
     // the look-and-feel of the snapshotted plug-in overlay. 
     root.setResetStyleInheritance(true);
     
-    String mimeType = loadedMimeType();
+    String mimeType = serviceType();
 
     auto& isolatedWorld = plugInImageElementIsolatedWorld();
     document().ensurePlugInsInjectedScript(isolatedWorld);
@@ -425,7 +425,7 @@
     // may be in different frames, so traverse from the top of the document.
 
     String plugInOrigin = m_loadedUrl.host();
-    String mimeType = loadedMimeType();
+    String mimeType = serviceType();
     Vector<Ref<HTMLPlugInImageElement>> similarPlugins;
 
     if (!document().page())
@@ -439,7 +439,7 @@
             continue;
 
         for (auto& element : descendantsOfType<HTMLPlugInImageElement>(*frame->document())) {
-            if (plugInOrigin == element.loadedUrl().host() && mimeType == element.loadedMimeType())
+            if (plugInOrigin == element.loadedUrl().host() && mimeType == element.serviceType())
                 similarPlugins.append(element);
         }
     }
@@ -460,7 +460,7 @@
 
     String plugInOrigin = m_loadedUrl.host();
     if (document().page() && !SchemeRegistry::shouldTreatURLSchemeAsLocal(document().page()->mainFrame().document()->baseURL().protocol().toStringWithoutCopying()) && document().page()->settings().autostartOriginPlugInSnapshottingEnabled())
-        document().page()->plugInClient()->didStartFromOrigin(document().page()->mainFrame().document()->baseURL().host(), plugInOrigin, loadedMimeType(), document().page()->sessionID());
+        document().page()->plugInClient()->didStartFromOrigin(document().page()->mainFrame().document()->baseURL().host(), plugInOrigin, serviceType(), document().page()->sessionID());
 
     LOG(Plugins, "%p User clicked on snapshotted plug-in. Restart.", this);
     restartSnapshottedPlugIn();
@@ -602,7 +602,7 @@
 {
     LOG(Plugins, "%p Plug-in URL: %s", this, m_url.utf8().data());
     LOG(Plugins, "   Actual URL: %s", url.string().utf8().data());
-    LOG(Plugins, "   MIME type: %s", loadedMimeType().utf8().data());
+    LOG(Plugins, "   MIME type: %s", serviceType().utf8().data());
 
     m_loadedUrl = url;
     m_plugInWasCreated = false;
@@ -664,14 +664,14 @@
         return;
     }
 
-    if (document().page()->settings().autostartOriginPlugInSnapshottingEnabled() && document().page()->plugInClient() && document().page()->plugInClient()->shouldAutoStartFromOrigin(document().page()->mainFrame().document()->baseURL().host(), url.host(), loadedMimeType())) {
+    if (document().page()->settings().autostartOriginPlugInSnapshottingEnabled() && document().page()->plugInClient() && document().page()->plugInClient()->shouldAutoStartFromOrigin(document().page()->mainFrame().document()->baseURL().host(), url.host(), serviceType())) {
         LOG(Plugins, "%p Plug-in from (%s, %s) is marked to auto-start, set to play", this, document().page()->mainFrame().document()->baseURL().host().utf8().data(), url.host().utf8().data());
         m_snapshotDecision = NeverSnapshot;
         return;
     }
 
-    if (m_loadedUrl.isEmpty() && !loadedMimeType().isEmpty()) {
-        LOG(Plugins, "%p Plug-in has no src URL but does have a valid mime type %s, set to play", this, loadedMimeType().utf8().data());
+    if (m_loadedUrl.isEmpty() && !serviceType().isEmpty()) {
+        LOG(Plugins, "%p Plug-in has no src URL but does have a valid mime type %s, set to play", this, serviceType().utf8().data());
         m_snapshotDecision = MaySnapshotWhenContentIsSet;
         return;
     }

Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.h (224386 => 224387)


--- trunk/Source/WebCore/html/HTMLPlugInImageElement.h	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.h	2017-11-03 06:08:11 UTC (rev 224387)
@@ -43,14 +43,6 @@
     const String& url() const { return m_url; }
     const URL& loadedUrl() const { return m_loadedUrl; }
 
-    String loadedMimeType() const
-    {
-        String mimeType = serviceType();
-        if (mimeType.isEmpty())
-            mimeType = mimeTypeFromURL(m_loadedUrl);
-        return mimeType;
-    }
-
     // Public for FrameView::addWidgetToUpdate()
     bool needsWidgetUpdate() const { return m_needsWidgetUpdate; }
     void setNeedsWidgetUpdate(bool needsWidgetUpdate) { m_needsWidgetUpdate = needsWidgetUpdate; }

Modified: trunk/Source/WebCore/platform/URL.cpp (224386 => 224387)


--- trunk/Source/WebCore/platform/URL.cpp	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebCore/platform/URL.cpp	2017-11-03 06:08:11 UTC (rev 224387)
@@ -28,7 +28,6 @@
 #include "URL.h"
 
 #include "DecodeEscapeSequences.h"
-#include "MIMETypeRegistry.h"
 #include "TextEncoding.h"
 #include "URLParser.h"
 #include <stdio.h>
@@ -1321,15 +1320,6 @@
     return url.substring(5, index - 5).convertToASCIILowercase();
 }
 
-String mimeTypeFromURL(const URL& url)
-{
-    String decodedPath = decodeURLEscapeSequences(url.path());
-    String extension = decodedPath.substring(decodedPath.reverseFind('.') + 1);
-
-    // We don't use MIMETypeRegistry::getMIMETypeForPath() because it returns "application/octet-stream" upon failure
-    return MIMETypeRegistry::getMIMETypeForExtension(extension);
-}
-
 String URL::stringCenterEllipsizedToLength(unsigned length) const
 {
     if (string().length() <= length)

Modified: trunk/Source/WebCore/platform/URL.h (224386 => 224387)


--- trunk/Source/WebCore/platform/URL.h	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebCore/platform/URL.h	2017-11-03 06:08:11 UTC (rev 224387)
@@ -339,7 +339,6 @@
 bool isValidProtocol(const String&);
 
 String mimeTypeFromDataURL(const String& url);
-WEBCORE_EXPORT String mimeTypeFromURL(const URL&);
 
 // Unescapes the given string using URL escaping rules, given an optional
 // encoding (defaulting to UTF-8 otherwise). DANGER: If the URL has "%00"

Modified: trunk/Source/WebKit/ChangeLog (224386 => 224387)


--- trunk/Source/WebKit/ChangeLog	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebKit/ChangeLog	2017-11-03 06:08:11 UTC (rev 224387)
@@ -1,3 +1,15 @@
+2017-11-02  Maciej Stachowiak  <m...@apple.com>
+
+        Don't try to guess plugin MIME type from a file extension in a URL (no observable effect)
+        https://bugs.webkit.org/show_bug.cgi?id=178333
+
+        Reviewed by Darin Adler.
+
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::PluginView::pluginDidReceiveUserInteraction): loadedMIMEType --> serviceType
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::determinePrimarySnapshottedPlugIn): ditto
+
 2017-11-02  Brady Eidson  <beid...@apple.com>
 
         SW: Implement "Update Registration State" algorithm (unused for now)

Modified: trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp (224386 => 224387)


--- trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp	2017-11-03 06:08:11 UTC (rev 224387)
@@ -1838,7 +1838,7 @@
     HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(*m_pluginElement);
     String pageOrigin = plugInImageElement.document().page()->mainFrame().document()->baseURL().host();
     String pluginOrigin = plugInImageElement.loadedUrl().host();
-    String mimeType = plugInImageElement.loadedMimeType();
+    String mimeType = plugInImageElement.serviceType();
 
     WebProcess::singleton().plugInDidReceiveUserInteraction(pageOrigin, pluginOrigin, mimeType, plugInImageElement.document().page()->sessionID());
 }

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (224386 => 224387)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2017-11-03 06:08:11 UTC (rev 224387)
@@ -5250,7 +5250,7 @@
     m_didFindPrimarySnapshottedPlugin = true;
     m_primaryPlugInPageOrigin = m_page->mainFrame().document()->baseURL().host();
     m_primaryPlugInOrigin = candidatePlugIn->loadedUrl().host();
-    m_primaryPlugInMimeType = candidatePlugIn->loadedMimeType();
+    m_primaryPlugInMimeType = candidatePlugIn->serviceType();
 
     candidatePlugIn->setIsPrimarySnapshottedPlugIn(true);
 }

Modified: trunk/Source/WebKitLegacy/win/ChangeLog (224386 => 224387)


--- trunk/Source/WebKitLegacy/win/ChangeLog	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebKitLegacy/win/ChangeLog	2017-11-03 06:08:11 UTC (rev 224387)
@@ -1,3 +1,13 @@
+2017-11-02  Maciej Stachowiak  <m...@apple.com>
+
+        Don't try to guess plugin MIME type from a file extension in a URL (no observable effect)
+        https://bugs.webkit.org/show_bug.cgi?id=178333
+
+        Reviewed by Darin Adler.
+
+        * WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebFrameLoaderClient::objectContentType): Remove unnecessary call to mimeTypeFromURL
+
 2017-11-02  Alex Christensen  <achristen...@webkit.org>
 
         Use CompletionHandlers for redirects

Modified: trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp (224386 => 224387)


--- trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp	2017-11-03 06:05:33 UTC (rev 224386)
+++ trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp	2017-11-03 06:08:11 UTC (rev 224387)
@@ -1054,9 +1054,6 @@
 {
     String mimeType = mimeTypeIn;
 
-    if (mimeType.isEmpty())
-        mimeType = mimeTypeFromURL(url);
-
     if (mimeType.isEmpty()) {
         String decodedPath = decodeURLEscapeSequences(url.path());
         mimeType = PluginDatabase::installedPlugins()->MIMETypeForExtension(decodedPath.substring(decodedPath.reverseFind('.') + 1));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to