Changeset 190859 in webkit


Ignore:
Timestamp:
Oct 12, 2015, 10:25:37 AM (10 years ago)
Author:
andersca@apple.com
Message:

Don't allow plug-ins to override image types for <embed> elements
https://bugs.webkit.org/show_bug.cgi?id=149979

Reviewed by Tim Horton.

Source/WebCore:

Stop allowing plug-ins to take over image types for <embed> elements. We already do this
for <object> elements, but had to make <embed> elements exempt because of webkit.org/b/49016.
The QuickTime plug-in hasn't supported image types since Lion, so there's no point in keeping this code around.

  • html/HTMLAppletElement.cpp:

(WebCore::HTMLAppletElement::HTMLAppletElement):

  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::HTMLEmbedElement):

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::HTMLObjectElement):
(WebCore::HTMLObjectElement::parametersForPlugin):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
(WebCore::HTMLPlugInImageElement::isImageType):
(WebCore::HTMLPlugInImageElement::wouldLoadAsNetscapePlugin):

  • html/HTMLPlugInImageElement.h:

(WebCore::HTMLPlugInImageElement::shouldPreferPlugInsForImages): Deleted.

  • loader/EmptyClients.h:
  • loader/FrameLoaderClient.h:
  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::resourceWillUsePlugin):
(WebCore::SubframeLoader::requestObject):
(WebCore::SubframeLoader::shouldUsePlugin):

  • loader/SubframeLoader.h:

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::objectContentType):

Source/WebKit/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::objectContentType):

  • WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::objectContentType):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

LayoutTests:

Remove test.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • plugins/embed-prefers-plugins-for-images-expected.txt: Removed.
  • plugins/embed-prefers-plugins-for-images.html: Removed.
Location:
trunk
Files:
2 deleted
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r190858 r190859  
     12015-10-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Don't allow plug-ins to override image types for <embed> elements
     4        https://bugs.webkit.org/show_bug.cgi?id=149979
     5
     6        Reviewed by Tim Horton.
     7
     8        Remove test.
     9
     10        * platform/efl/TestExpectations:
     11        * platform/gtk/TestExpectations:
     12        * plugins/embed-prefers-plugins-for-images-expected.txt: Removed.
     13        * plugins/embed-prefers-plugins-for-images.html: Removed.
     14
    1152015-10-12  Ryan Haddad  <ryanhaddad@apple.com>
    216
  • trunk/LayoutTests/platform/efl/TestExpectations

    r190848 r190859  
    19541954
    19551955webkit.org/b/127725 media/video-restricted-no-preload-auto.html [ Failure ]
    1956 
    1957 webkit.org/b/127731 plugins/embed-prefers-plugins-for-images.html [ Failure ]
    19581956
    19591957# Subpixel rendering: borders are reporting float values.
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r190717 r190859  
    683683
    684684webkit.org/b/131217 [ Debug ] plugins/no-mime-with-valid-extension.html [ Crash ]
    685 webkit.org/b/131217 [ Debug ] plugins/embed-prefers-plugins-for-images.html [ Crash ]
    686685
    687686webkit.org/b/105870 [ Debug ] webaudio/audiobuffersource-loop-points.html [ Crash ]
  • trunk/Source/WebCore/ChangeLog

    r190853 r190859  
     12015-10-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Don't allow plug-ins to override image types for <embed> elements
     4        https://bugs.webkit.org/show_bug.cgi?id=149979
     5
     6        Reviewed by Tim Horton.
     7
     8        Stop allowing plug-ins to take over image types for <embed> elements. We already do this
     9        for <object> elements, but had to make <embed> elements exempt because of webkit.org/b/49016.
     10        The QuickTime plug-in hasn't supported image types since Lion, so there's no point in keeping this code around.
     11
     12        * html/HTMLAppletElement.cpp:
     13        (WebCore::HTMLAppletElement::HTMLAppletElement):
     14        * html/HTMLEmbedElement.cpp:
     15        (WebCore::HTMLEmbedElement::HTMLEmbedElement):
     16        * html/HTMLObjectElement.cpp:
     17        (WebCore::HTMLObjectElement::HTMLObjectElement):
     18        (WebCore::HTMLObjectElement::parametersForPlugin):
     19        * html/HTMLPlugInImageElement.cpp:
     20        (WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
     21        (WebCore::HTMLPlugInImageElement::isImageType):
     22        (WebCore::HTMLPlugInImageElement::wouldLoadAsNetscapePlugin):
     23        * html/HTMLPlugInImageElement.h:
     24        (WebCore::HTMLPlugInImageElement::shouldPreferPlugInsForImages): Deleted.
     25        * loader/EmptyClients.h:
     26        * loader/FrameLoaderClient.h:
     27        * loader/SubframeLoader.cpp:
     28        (WebCore::SubframeLoader::resourceWillUsePlugin):
     29        (WebCore::SubframeLoader::requestObject):
     30        (WebCore::SubframeLoader::shouldUsePlugin):
     31        * loader/SubframeLoader.h:
     32
    1332015-10-12  Zan Dobersek  <zdobersek@igalia.com>
    234
  • trunk/Source/WebCore/html/HTMLAppletElement.cpp

    r183160 r190859  
    4242
    4343HTMLAppletElement::HTMLAppletElement(const QualifiedName& tagName, Document& document, bool createdByParser)
    44     : HTMLPlugInImageElement(tagName, document, createdByParser, ShouldNotPreferPlugInsForImages)
     44    : HTMLPlugInImageElement(tagName, document, createdByParser)
    4545{
    4646    ASSERT(hasTagName(appletTag));
  • trunk/Source/WebCore/html/HTMLEmbedElement.cpp

    r182120 r190859  
    4545
    4646inline HTMLEmbedElement::HTMLEmbedElement(const QualifiedName& tagName, Document& document, bool createdByParser)
    47     : HTMLPlugInImageElement(tagName, document, createdByParser, ShouldPreferPlugInsForImages)
     47    : HTMLPlugInImageElement(tagName, document, createdByParser)
    4848{
    4949    ASSERT(hasTagName(embedTag));
  • trunk/Source/WebCore/html/HTMLObjectElement.cpp

    r189469 r190859  
    6565
    6666inline HTMLObjectElement::HTMLObjectElement(const QualifiedName& tagName, Document& document, HTMLFormElement* form, bool createdByParser)
    67     : HTMLPlugInImageElement(tagName, document, createdByParser, ShouldNotPreferPlugInsForImages)
     67    : HTMLPlugInImageElement(tagName, document, createdByParser)
    6868    , m_docNamedItem(true)
    6969    , m_useFallbackContent(false)
     
    229229    if (url.isEmpty() && !urlParameter.isEmpty()) {
    230230        SubframeLoader& loader = document().frame()->loader().subframeLoader();
    231         if (loader.resourceWillUsePlugin(urlParameter, serviceType, shouldPreferPlugInsForImages()))
     231        if (loader.resourceWillUsePlugin(urlParameter, serviceType))
    232232            url = urlParameter;
    233233    }
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp

    r188809 r190859  
    100100};
    101101
    102 HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Document& document, bool createdByParser, PreferPlugInsForImagesOption preferPlugInsForImagesOption)
     102HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Document& document, bool createdByParser)
    103103    : HTMLPlugInElement(tagName, document)
    104104    // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay
     
    107107    // the same codepath in this class.
    108108    , m_needsWidgetUpdate(!createdByParser)
    109     , m_shouldPreferPlugInsForImages(preferPlugInsForImagesOption == ShouldPreferPlugInsForImages)
    110109    , m_needsDocumentActivationCallbacks(false)
    111110    , m_simulatedMouseClickTimer(*this, &HTMLPlugInImageElement::simulatedMouseClickTimerFired, simulatedMouseClickTimerDelay)
     
    157156    if (Frame* frame = document().frame()) {
    158157        URL completedURL = document().completeURL(m_url);
    159         return frame->loader().client().objectContentType(completedURL, m_serviceType, shouldPreferPlugInsForImages()) == ObjectContentImage;
     158        return frame->loader().client().objectContentType(completedURL, m_serviceType) == ObjectContentImage;
    160159    }
    161160
     
    186185
    187186    FrameLoader& frameLoader = document().frame()->loader();
    188     if (frameLoader.client().objectContentType(completedURL, serviceType, shouldPreferPlugInsForImages()) == ObjectContentNetscapePlugin)
     187    if (frameLoader.client().objectContentType(completedURL, serviceType) == ObjectContentNetscapePlugin)
    189188        return true;
    190189    return false;
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.h

    r183160 r190859  
    6262    }
    6363
    64     bool shouldPreferPlugInsForImages() const { return m_shouldPreferPlugInsForImages; }
    65 
    6664    // Public for FrameView::addWidgetToUpdate()
    6765    bool needsWidgetUpdate() const { return m_needsWidgetUpdate; }
     
    9492
    9593protected:
    96     enum PreferPlugInsForImagesOption { ShouldPreferPlugInsForImages, ShouldNotPreferPlugInsForImages };
    97     HTMLPlugInImageElement(const QualifiedName& tagName, Document&, bool createdByParser, PreferPlugInsForImagesOption);
     94    HTMLPlugInImageElement(const QualifiedName& tagName, Document&, bool createdByParser);
    9895
    9996    virtual void didMoveToNewDocument(Document* oldDocument) override;
     
    143140    URL m_loadedUrl;
    144141    bool m_needsWidgetUpdate;
    145     bool m_shouldPreferPlugInsForImages;
    146142    bool m_needsDocumentActivationCallbacks;
    147143    RefPtr<MouseEvent> m_pendingClickEventFromSnapshot;
  • trunk/Source/WebCore/loader/EmptyClients.h

    r190611 r190859  
    377377    virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const URL&, const Vector<String>&, const Vector<String>&) override;
    378378
    379     virtual ObjectContentType objectContentType(const URL&, const String&, bool) override { return ObjectContentType(); }
     379    virtual ObjectContentType objectContentType(const URL&, const String&) override { return ObjectContentType(); }
    380380    virtual String overrideMediaType() const override { return String(); }
    381381
  • trunk/Source/WebCore/loader/FrameLoaderClient.h

    r190611 r190859  
    282282        virtual void dispatchDidFailToStartPlugin(const PluginViewBase*) const { }
    283283
    284         virtual ObjectContentType objectContentType(const URL&, const String& mimeType, bool shouldPreferPlugInsForImages) = 0;
     284        virtual ObjectContentType objectContentType(const URL&, const String& mimeType) = 0;
    285285        virtual String overrideMediaType() const = 0;
    286286
  • trunk/Source/WebCore/loader/SubframeLoader.cpp

    r190826 r190859  
    9595}
    9696   
    97 bool SubframeLoader::resourceWillUsePlugin(const String& url, const String& mimeType, bool shouldPreferPlugInsForImages)
     97bool SubframeLoader::resourceWillUsePlugin(const String& url, const String& mimeType)
    9898{
    9999    URL completedURL;
     
    102102
    103103    bool useFallback;
    104     return shouldUsePlugin(completedURL, mimeType, shouldPreferPlugInsForImages, false, useFallback);
     104    return shouldUsePlugin(completedURL, mimeType, false, useFallback);
    105105}
    106106
     
    222222
    223223    bool useFallback;
    224     if (shouldUsePlugin(completedURL, mimeType, ownerElement.shouldPreferPlugInsForImages(), hasFallbackContent, useFallback)) {
     224    if (shouldUsePlugin(completedURL, mimeType, hasFallbackContent, useFallback)) {
    225225        bool success = requestPlugin(ownerElement, completedURL, mimeType, paramNames, paramValues, useFallback);
    226226        logPluginRequest(document()->page(), mimeType, completedURL, success);
     
    368368}
    369369
    370 bool SubframeLoader::shouldUsePlugin(const URL& url, const String& mimeType, bool shouldPreferPlugInsForImages, bool hasFallback, bool& useFallback)
     370bool SubframeLoader::shouldUsePlugin(const URL& url, const String& mimeType, bool hasFallback, bool& useFallback)
    371371{
    372372    if (m_frame.loader().client().shouldAlwaysUsePluginDocument(mimeType)) {
     
    375375    }
    376376
    377     ObjectContentType objectType = m_frame.loader().client().objectContentType(url, mimeType, shouldPreferPlugInsForImages);
     377    ObjectContentType objectType = m_frame.loader().client().objectContentType(url, mimeType);
    378378    // If an object's content can't be handled and it has no fallback, let
    379379    // it be handled as a plugin to show the broken plugin icon.
    380380    useFallback = objectType == ObjectContentNone && hasFallback;
     381
    381382    return objectType == ObjectContentNone || objectType == ObjectContentNetscapePlugin || objectType == ObjectContentOtherPlugin;
    382383}
  • trunk/Source/WebCore/loader/SubframeLoader.h

    r187891 r190859  
    7070    bool containsPlugins() const { return m_containsPlugins; }
    7171   
    72     bool resourceWillUsePlugin(const String& url, const String& mimeType, bool shouldPreferPlugInsForImages);
     72    bool resourceWillUsePlugin(const String& url, const String& mimeType);
    7373
    7474private:
     
    7878    bool loadPlugin(HTMLPlugInImageElement&, const URL&, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback);
    7979
    80     bool shouldUsePlugin(const URL&, const String& mimeType, bool shouldPreferPlugInsForImages, bool hasFallback, bool& useFallback);
     80    bool shouldUsePlugin(const URL&, const String& mimeType, bool hasFallback, bool& useFallback);
    8181    bool pluginIsLoadable(HTMLPlugInImageElement&, const URL&, const String& mimeType);
    8282
  • trunk/Source/WebKit/mac/ChangeLog

    r190841 r190859  
     12015-10-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Don't allow plug-ins to override image types for <embed> elements
     4        https://bugs.webkit.org/show_bug.cgi?id=149979
     5
     6        Reviewed by Tim Horton.
     7
     8        * WebCoreSupport/WebFrameLoaderClient.h:
     9        * WebCoreSupport/WebFrameLoaderClient.mm:
     10        (WebFrameLoaderClient::objectContentType):
     11
    1122015-10-10  Dan Bernstein  <mitz@apple.com>
    213
  • trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h

    r190611 r190859  
    214214        const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues) override;
    215215   
    216     virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) override;
     216    virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const WTF::String& mimeType) override;
    217217    virtual WTF::String overrideMediaType() const override;
    218218   
  • trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r190841 r190859  
    16521652}
    16531653
    1654 ObjectContentType WebFrameLoaderClient::objectContentType(const URL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
     1654ObjectContentType WebFrameLoaderClient::objectContentType(const URL& url, const String& mimeType)
    16551655{
    16561656    BEGIN_BLOCK_OBJC_EXCEPTIONS;
     
    16981698   
    16991699    if (MIMETypeRegistry::isSupportedImageMIMEType(type))
    1700         return shouldPreferPlugInsForImages && plugInType != ObjectContentNone ? plugInType : ObjectContentImage;
     1700        return ObjectContentImage;
    17011701
    17021702    if (plugInType != ObjectContentNone)
  • trunk/Source/WebKit/win/ChangeLog

    r190611 r190859  
     12015-10-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Don't allow plug-ins to override image types for <embed> elements
     4        https://bugs.webkit.org/show_bug.cgi?id=149979
     5
     6        Reviewed by Tim Horton.
     7
     8        * WebCoreSupport/WebFrameLoaderClient.cpp:
     9        (WebFrameLoaderClient::objectContentType):
     10        * WebCoreSupport/WebFrameLoaderClient.h:
     11
    1122015-10-06  Alex Christensen  <achristensen@webkit.org>
    213
  • trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp

    r190611 r190859  
    10851085}
    10861086
    1087 ObjectContentType WebFrameLoaderClient::objectContentType(const URL& url, const String& mimeTypeIn, bool shouldPreferPlugInsForImages)
     1087ObjectContentType WebFrameLoaderClient::objectContentType(const URL& url, const String& mimeTypeIn)
    10881088{
    10891089    String mimeType = mimeTypeIn;
     
    11031103
    11041104    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
    1105         return shouldPreferPlugInsForImages && plugInSupportsMIMEType ? WebCore::ObjectContentNetscapePlugin : WebCore::ObjectContentImage;
     1105        return WebCore::ObjectContentImage;
    11061106
    11071107    if (plugInSupportsMIMEType)
  • trunk/Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h

    r190611 r190859  
    190190    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::URL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues) override;
    191191
    192     virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) override;
     192    virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const WTF::String& mimeType) override;
    193193    virtual WTF::String overrideMediaType() const override;
    194194
  • trunk/Source/WebKit2/ChangeLog

    r190851 r190859  
     12015-10-09  Anders Carlsson  <andersca@apple.com>
     2
     3        Don't allow plug-ins to override image types for <embed> elements
     4        https://bugs.webkit.org/show_bug.cgi?id=149979
     5
     6        Reviewed by Tim Horton.
     7
     8        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     9        (WebKit::WebFrameLoaderClient::objectContentType):
     10        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
     11
    1122015-10-12  Gyuyoung Kim  <gyuyoung.kim@webkit.org>
    213
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r190611 r190859  
    15131513}
    15141514
    1515 ObjectContentType WebFrameLoaderClient::objectContentType(const URL& url, const String& mimeTypeIn, bool shouldPreferPlugInsForImages)
     1515ObjectContentType WebFrameLoaderClient::objectContentType(const URL& url, const String& mimeTypeIn)
    15161516{
    15171517    // FIXME: This should be merged with WebCore::FrameLoader::defaultObjectContentType when the plugin code
     
    15471547   
    15481548    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
    1549         return shouldPreferPlugInsForImages && plugInSupportsMIMEType ? ObjectContentNetscapePlugin : ObjectContentImage;
     1549        return ObjectContentImage;
    15501550
    15511551    if (plugInSupportsMIMEType)
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h

    r190611 r190859  
    201201    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::URL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) override;
    202202   
    203     virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const String& mimeType, bool shouldPreferPlugInsForImages) override;
     203    virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const String& mimeType) override;
    204204    virtual String overrideMediaType() const override;
    205205
Note: See TracChangeset for help on using the changeset viewer.