2011-03-25 Andy Estes <aestes@apple.com>
authoraestes@apple.com <aestes@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Mar 2011 23:07:43 +0000 (23:07 +0000)
committeraestes@apple.com <aestes@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Mar 2011 23:07:43 +0000 (23:07 +0000)
        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        TestNetscapePlugIn needs to register support for an image MIME type so
        we can test that the embed tag prefers plug-ins to render image MIME
        types.

        * DumpRenderTree/TestNetscapePlugIn/mac/Info.plist: Register image/png.
        * DumpRenderTree/TestNetscapePlugIn/main.cpp:
        (NP_GetMIMEDescription): Ditto.
        * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc: Ditto.
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        * fast/images/embed-image.html: Disable plug-ins to continue testing
        native image rendering with embed.
        * plugins/embed-prefers-plugins-for-images-expected.txt: Added.
        * plugins/embed-prefers-plugins-for-images.html: Added.
        * plugins/plugin-javascript-access-expected.txt: Updated to include the
        new MIME type registered by TestNetscapePlugIn.
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::objectContentType):
        * src/FrameLoaderClientImpl.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebCoreSupport/FrameLoaderClientQt.cpp:
        (WebCore::FrameLoaderClientQt::objectContentType):
        * WebCoreSupport/FrameLoaderClientQt.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebCoreSupport/FrameLoaderClientGtk.cpp:
        (WebKit::FrameLoaderClient::objectContentType):
        * WebCoreSupport/FrameLoaderClientGtk.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebFrame.cpp:
        (WebFrame::objectContentType):
        * WebFrame.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebKitSupport/FrameLoaderClientWx.cpp:
        (WebCore::FrameLoaderClientWx::objectContentType):
        * WebKitSupport/FrameLoaderClientWx.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::objectContentType):
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebCoreSupport/FrameLoaderClientHaiku.cpp:
        (WebCore::FrameLoaderClientHaiku::objectContentType):
        * WebCoreSupport/FrameLoaderClientHaiku.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebCoreSupport/FrameLoaderClientWinCE.cpp:
        (WebKit::FrameLoaderClientWinCE::objectContentType):
        * WebCoreSupport/FrameLoaderClientWinCE.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::objectContentType):
        * WebCoreSupport/FrameLoaderClientEfl.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        AC_QuickTime.js uses the common <object>/<embed> paradigm to embed the
        QuickTime plug-in in web pages. r70748 removed our mapping of classids
        to MIME types, which causes WebKit to fall back from the object to the
        embed tag when QuickTime is embedded by this script. The script emits
        the following embed tag to embed a QuickTime movie with a poster frame:

        <embed src="poster-frame.png" target="quicktimeplayer" href="movie.mov">

        The expectation is that a QuickTime plug-in is instantiated to display the
        poster frame, since QuickTime registers for many common image MIME
        types. This is how Gecko behaves for embed. However, WebKit prefers to
        use its native image rendering for image embeds, in which case no movie
        is played when the poster frame is clicked.

        Fix this by changing embed to check for a plug-in that can handle the
        image type before rendering the image natively. This matches Gecko.

        Test: plugins/embed-prefers-plugins-for-images.html

        * 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):
        * loader/EmptyClients.h:
        (WebCore::EmptyFrameLoaderClient::objectContentType):
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::defaultObjectContentType):
        * loader/FrameLoader.h:
        * loader/FrameLoaderClient.h:
        * loader/SubframeLoader.cpp:
        (WebCore::SubframeLoader::resourceWillUsePlugin):
        (WebCore::SubframeLoader::requestPlugin):
        (WebCore::SubframeLoader::requestObject):
        (WebCore::SubframeLoader::shouldUsePlugin):
        * loader/SubframeLoader.h:
2011-03-25  Andy Estes  <aestes@apple.com>

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::objectContentType):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@82001 268f45cc-cd09-0410-ab3c-d52691b4dbfc

50 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/images/embed-image.html
LayoutTests/plugins/embed-prefers-plugins-for-images-expected.txt [new file with mode: 0644]
LayoutTests/plugins/embed-prefers-plugins-for-images.html [new file with mode: 0644]
LayoutTests/plugins/plugin-javascript-access-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/html/HTMLEmbedElement.cpp
Source/WebCore/html/HTMLObjectElement.cpp
Source/WebCore/html/HTMLPlugInImageElement.cpp
Source/WebCore/html/HTMLPlugInImageElement.h
Source/WebCore/loader/EmptyClients.h
Source/WebCore/loader/FrameLoader.cpp
Source/WebCore/loader/FrameLoader.h
Source/WebCore/loader/FrameLoaderClient.h
Source/WebCore/loader/SubframeLoader.cpp
Source/WebCore/loader/SubframeLoader.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp
Source/WebKit/chromium/src/FrameLoaderClientImpl.h
Source/WebKit/efl/ChangeLog
Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp
Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h
Source/WebKit/gtk/ChangeLog
Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
Source/WebKit/haiku/ChangeLog
Source/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp
Source/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h
Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm
Source/WebKit/qt/ChangeLog
Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
Source/WebKit/win/ChangeLog
Source/WebKit/win/WebFrame.cpp
Source/WebKit/win/WebFrame.h
Source/WebKit/wince/ChangeLog
Source/WebKit/wince/WebCoreSupport/FrameLoaderClientWinCE.cpp
Source/WebKit/wince/WebCoreSupport/FrameLoaderClientWinCE.h
Source/WebKit/wx/ChangeLog
Source/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp
Source/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
Tools/ChangeLog
Tools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist
Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp
Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc

index 6470803..2b4439e 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        * fast/images/embed-image.html: Disable plug-ins to continue testing
+        native image rendering with embed.
+        * plugins/embed-prefers-plugins-for-images-expected.txt: Added.
+        * plugins/embed-prefers-plugins-for-images.html: Added.
+        * plugins/plugin-javascript-access-expected.txt: Updated to include the
+        new MIME type registered by TestNetscapePlugIn.
+
 2011-03-25  Vincent Scheib  <scheib@chromium.org>
 
         fast/forms/input-file-directory-upload.html timing out.
index 8398f04..9d82e84 100644 (file)
@@ -1 +1,5 @@
+<script>
+    if (window.layoutTestController)
+        layoutTestController.setPluginsEnabled(false);
+</script>
 <embed src="../borders/resources/Balloon_8107502.tiff" width="38" height="24" type="image/tiff"></embed>
diff --git a/LayoutTests/plugins/embed-prefers-plugins-for-images-expected.txt b/LayoutTests/plugins/embed-prefers-plugins-for-images-expected.txt
new file mode 100644 (file)
index 0000000..c787daf
--- /dev/null
@@ -0,0 +1,3 @@
+CONSOLE MESSAGE: line 0: PLUGIN: src: image.png
+PASS
+
diff --git a/LayoutTests/plugins/embed-prefers-plugins-for-images.html b/LayoutTests/plugins/embed-prefers-plugins-for-images.html
new file mode 100644 (file)
index 0000000..6da1f3f
--- /dev/null
@@ -0,0 +1,20 @@
+<script>
+    if (window.layoutTestController) {
+        layoutTestController.dumpAsText();
+        layoutTestController.waitUntilDone();
+    }
+    
+    function logSuccess()
+    {
+        document.getElementById("console").innerHTML = "PASS";
+    }
+</script>
+<div id="console">FAIL</div>
+<embed name="plugin" src="image.png" logSrc="1">
+<script>
+    if (plugin.testCallback)
+        plugin.testCallback("logSuccess");
+    if (window.layoutTestController)
+        layoutTestController.notifyDone();
+</script>
+    
\ No newline at end of file
index 925c86b..64c122a 100644 (file)
@@ -17,6 +17,17 @@ Plugin.item() works.
 
 Plugin.namedItem() works.
 
+Type: image/png
+
+Description: PNG image
+
+Suffixes: png
+
+
+Plugin.item() works.
+
+Plugin.namedItem() works.
+
 PluginArray.item() works.
 
 PluginArray.namedItem() works.
index c7c3fe5..247efca 100644 (file)
@@ -1,3 +1,53 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        AC_QuickTime.js uses the common <object>/<embed> paradigm to embed the 
+        QuickTime plug-in in web pages. r70748 removed our mapping of classids 
+        to MIME types, which causes WebKit to fall back from the object to the 
+        embed tag when QuickTime is embedded by this script. The script emits 
+        the following embed tag to embed a QuickTime movie with a poster frame: 
+
+        <embed src="poster-frame.png" target="quicktimeplayer" href="movie.mov"> 
+
+        The expectation is that a QuickTime plug-in is instantiated to display the 
+        poster frame, since QuickTime registers for many common image MIME 
+        types. This is how Gecko behaves for embed. However, WebKit prefers to 
+        use its native image rendering for image embeds, in which case no movie 
+        is played when the poster frame is clicked. 
+
+        Fix this by changing embed to check for a plug-in that can handle the 
+        image type before rendering the image natively. This matches Gecko. 
+
+        Test: plugins/embed-prefers-plugins-for-images.html
+
+        * 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):
+        * loader/EmptyClients.h:
+        (WebCore::EmptyFrameLoaderClient::objectContentType):
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::defaultObjectContentType):
+        * loader/FrameLoader.h:
+        * loader/FrameLoaderClient.h:
+        * loader/SubframeLoader.cpp:
+        (WebCore::SubframeLoader::resourceWillUsePlugin):
+        (WebCore::SubframeLoader::requestPlugin):
+        (WebCore::SubframeLoader::requestObject):
+        (WebCore::SubframeLoader::shouldUsePlugin):
+        * loader/SubframeLoader.h:
+
 2011-03-23  Jer Noble  <jer.noble@apple.com>
 
         Reviewed by Eric Carlson.
index aef2e04..851deb8 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Stefan Schimanski (1Stein@gmx.de)
- * Copyright (C) 2004, 2005, 2006, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  *
  * This library is free software; you can redistribute it and/or
@@ -46,7 +46,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 inline HTMLEmbedElement::HTMLEmbedElement(const QualifiedName& tagName, Document* document, bool createdByParser)
-    : HTMLPlugInImageElement(tagName, document, createdByParser)
+    : HTMLPlugInImageElement(tagName, document, createdByParser, ShouldPreferPlugInsForImages)
 {
     ASSERT(hasTagName(embedTag));
 }
index c2670fa..4f4d0a1 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Stefan Schimanski (1Stein@gmx.de)
- * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  *
  * This library is free software; you can redistribute it and/or
@@ -48,7 +48,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 inline HTMLObjectElement::HTMLObjectElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form, bool createdByParser) 
-    : HTMLPlugInImageElement(tagName, document, createdByParser)
+    : HTMLPlugInImageElement(tagName, document, createdByParser, ShouldNotPreferPlugInsForImages)
     , FormAssociatedElement(form)
     , m_docNamedItem(true)
     , m_useFallbackContent(false)
@@ -217,7 +217,7 @@ void HTMLObjectElement::parametersForPlugin(Vector<String>& paramNames, Vector<S
     // if we know that resource points to a plug-in.
     if (url.isEmpty() && !urlParameter.isEmpty()) {
         SubframeLoader* loader = document()->frame()->loader()->subframeLoader();
-        if (loader->resourceWillUsePlugin(urlParameter, serviceType))
+        if (loader->resourceWillUsePlugin(urlParameter, serviceType, shouldPreferPlugInsForImages()))
             url = urlParameter;
     }
 }
index db07334..f3a99dd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2011 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -25,6 +25,7 @@
 #include "FrameLoader.h"
 #include "FrameLoaderClient.h"
 #include "HTMLImageLoader.h"
+#include "HTMLNames.h"
 #include "Image.h"
 #include "Page.h"
 #include "RenderEmbeddedObject.h"
 
 namespace WebCore {
 
-HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Document* document, bool createdByParser)
+HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Document* document, bool createdByParser, PreferPlugInsForImagesOption preferPlugInsForImagesOption)
     : HTMLPlugInElement(tagName, document)
     // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay
     // widget updates until after all children are parsed.  For HTMLEmbedElement
     // this delay is unnecessary, but it is simpler to make both classes share
     // the same codepath in this class.
     , m_needsWidgetUpdate(!createdByParser)
+    , m_shouldPreferPlugInsForImages(preferPlugInsForImagesOption == ShouldPreferPlugInsForImages)
 {
 }
 
@@ -58,7 +60,7 @@ bool HTMLPlugInImageElement::isImageType()
 
     if (Frame* frame = document()->frame()) {
         KURL completedURL = frame->loader()->completeURL(m_url);
-        return frame->loader()->client()->objectContentType(completedURL, m_serviceType) == ObjectContentImage;
+        return frame->loader()->client()->objectContentType(completedURL, m_serviceType, shouldPreferPlugInsForImages()) == ObjectContentImage;
     }
 
     return Image::supportsType(m_serviceType);
@@ -99,7 +101,7 @@ bool HTMLPlugInImageElement::wouldLoadAsNetscapePlugin(const String& url, const
     if (!url.isEmpty())
         completedURL = frameLoader->completeURL(url);
 
-    if (frameLoader->client()->objectContentType(completedURL, serviceType) == ObjectContentNetscapePlugin)
+    if (frameLoader->client()->objectContentType(completedURL, serviceType, shouldPreferPlugInsForImages()) == ObjectContentNetscapePlugin)
         return true;
     return false;
 }
index 364262b..c27c0f8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -33,6 +33,11 @@ enum PluginCreationOption {
     CreateAnyWidgetType,
     CreateOnlyNonNetscapePlugins,
 };
+    
+enum PreferPlugInsForImagesOption {
+    ShouldPreferPlugInsForImages,
+    ShouldNotPreferPlugInsForImages
+};
 
 // Base class for HTMLObjectElement and HTMLEmbedElement
 class HTMLPlugInImageElement : public HTMLPlugInElement {
@@ -43,9 +48,10 @@ public:
 
     const String& serviceType() const { return m_serviceType; }
     const String& url() const { return m_url; }
+    bool shouldPreferPlugInsForImages() const { return m_shouldPreferPlugInsForImages; }
 
 protected:
-    HTMLPlugInImageElement(const QualifiedName& tagName, Document*, bool createdByParser);
+    HTMLPlugInImageElement(const QualifiedName& tagName, Document*, bool createdByParser, PreferPlugInsForImagesOption);
 
     bool isImageType();
 
@@ -75,6 +81,7 @@ private:
     virtual bool useFallbackContent() const { return false; }
     
     bool m_needsWidgetUpdate;
+    bool m_shouldPreferPlugInsForImages;
 };
 
 } // namespace WebCore
index 2c1083c..59fd897 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
  *
  * Redistribution and use in source and binary forms, with or without
@@ -370,7 +370,7 @@ public:
     virtual void showMediaPlayerProxyPlugin(Widget*) { }
 #endif
 
-    virtual ObjectContentType objectContentType(const KURL&, const String&) { return ObjectContentType(); }
+    virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); }
     virtual String overrideMediaType() const { return String(); }
 
     virtual void redirectDataToPlugin(Widget*) { }
index 5cce5d8..e732176 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  * Copyright (C) 2008 Alp Toker <alp@atoker.com>
@@ -983,7 +983,7 @@ void FrameLoader::loadArchive(PassRefPtr<Archive> prpArchive)
 }
 #endif // ENABLE(WEB_ARCHIVE)
 
-ObjectContentType FrameLoader::defaultObjectContentType(const KURL& url, const String& mimeTypeIn)
+ObjectContentType FrameLoader::defaultObjectContentType(const KURL& url, const String& mimeTypeIn, bool shouldPreferPlugInsForImages)
 {
     String mimeType = mimeTypeIn;
     String extension = url.path().substring(url.path().reverseFind('.') + 1);
@@ -1000,13 +1000,17 @@ ObjectContentType FrameLoader::defaultObjectContentType(const KURL& url, const S
     if (mimeType.isEmpty())
         return ObjectContentFrame; // Go ahead and hope that we can display the content.
 
+#if !PLATFORM(MAC) && !PLATFORM(CHROMIUM) && !PLATFORM(EFL) // Mac has no PluginDatabase, nor does Chromium or EFL
+    bool plugInSupportsMIMEType = PluginDatabase::installedPlugins()->isMIMETypeRegistered(mimeType);
+#else
+    bool plugInSupportsMIMEType = false;
+#endif
+
     if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
-        return WebCore::ObjectContentImage;
+        return shouldPreferPlugInsForImages && plugInSupportsMIMEType ? WebCore::ObjectContentNetscapePlugin : WebCore::ObjectContentImage;
 
-#if !PLATFORM(MAC) && !PLATFORM(CHROMIUM) && !PLATFORM(EFL) // Mac has no PluginDatabase, nor does Chromium or EFL
-    if (PluginDatabase::installedPlugins()->isMIMETypeRegistered(mimeType))
+    if (plugInSupportsMIMEType)
         return WebCore::ObjectContentNetscapePlugin;
-#endif
 
     if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType))
         return WebCore::ObjectContentFrame;
index 3781d8d..1fb9e3c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  * Copyright (C) Research In Motion Limited 2009. All rights reserved.
  *
@@ -323,7 +323,7 @@ public:
     
     bool suppressOpenerInNewFrame() const { return m_suppressOpenerInNewFrame; }
 
-    static ObjectContentType defaultObjectContentType(const KURL& url, const String& mimeType);
+    static ObjectContentType defaultObjectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
 
     void clear(bool clearWindowProperties = true, bool clearScriptObjects = true, bool clearFrameView = true);
 
index 8dba59c..7d64912 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -259,7 +259,7 @@ namespace WebCore {
         virtual void showMediaPlayerProxyPlugin(Widget*) = 0;
 #endif
 
-        virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType) = 0;
+        virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages) = 0;
         virtual String overrideMediaType() const = 0;
 
         virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) = 0;
index 8bfd474..e7f851f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  * Copyright (C) 2008 Alp Toker <alp@atoker.com>
@@ -88,17 +88,35 @@ bool SubframeLoader::requestFrame(HTMLFrameOwnerElement* ownerElement, const Str
     return true;
 }
     
-bool SubframeLoader::resourceWillUsePlugin(const String& url, const String& mimeType)
+bool SubframeLoader::resourceWillUsePlugin(const String& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
     KURL completedURL;
     if (!url.isEmpty())
         completedURL = completeURL(url);
+
     bool useFallback;
-    return shouldUsePlugin(completedURL, mimeType, false, useFallback);
+    return shouldUsePlugin(completedURL, mimeType, shouldPreferPlugInsForImages, false, useFallback);
 }
 
-bool SubframeLoader::requestObject(HTMLPlugInImageElement* ownerElement, const String& url, const AtomicString& frameName,
-    const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues)
+bool SubframeLoader::requestPlugin(HTMLPlugInImageElement* ownerElement, const KURL& url, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback)
+{
+    Settings* settings = m_frame->settings();
+    if ((!allowPlugins(AboutToInstantiatePlugin)
+         // Application plug-ins are plug-ins implemented by the user agent, for example Qt plug-ins,
+         // as opposed to third-party code such as Flash. The user agent decides whether or not they are
+         // permitted, rather than WebKit.
+         && !MIMETypeRegistry::isApplicationPluginMIMEType(mimeType))
+        || (!settings->isJavaEnabled() && MIMETypeRegistry::isJavaAppletMIMEType(mimeType)))
+        return false;
+
+    if (m_frame->document() && m_frame->document()->securityOrigin()->isSandboxed(SandboxPlugins))
+        return false;
+
+    ASSERT(ownerElement->hasTagName(objectTag) || ownerElement->hasTagName(embedTag));
+    return loadPlugin(ownerElement, url, mimeType, paramNames, paramValues, useFallback);
+}
+bool SubframeLoader::requestObject(HTMLPlugInImageElement* ownerElement, const String& url, const AtomicString& frameName, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues)
 {
     if (url.isEmpty() && mimeType.isEmpty())
         return false;
@@ -114,23 +132,8 @@ bool SubframeLoader::requestObject(HTMLPlugInImageElement* ownerElement, const S
         completedURL = completeURL(url);
 
     bool useFallback;
-    if (shouldUsePlugin(completedURL, mimeType, renderer->hasFallbackContent(), useFallback)) {
-        Settings* settings = m_frame->settings();
-        if ((!allowPlugins(AboutToInstantiatePlugin)
-             // Application plugins are plugins implemented by the user agent, for example Qt plugins,
-             // as opposed to third-party code such as flash. The user agent decides whether or not they are
-             // permitted, rather than WebKit.
-             && !MIMETypeRegistry::isApplicationPluginMIMEType(mimeType))
-            || (!settings->isJavaEnabled() && MIMETypeRegistry::isJavaAppletMIMEType(mimeType)))
-            return false;
-        if (m_frame->document() && m_frame->document()->securityOrigin()->isSandboxed(SandboxPlugins))
-            return false;
-
-        ASSERT(ownerElement->hasTagName(objectTag) || ownerElement->hasTagName(embedTag));
-        HTMLPlugInImageElement* pluginElement = static_cast<HTMLPlugInImageElement*>(ownerElement);
-
-        return loadPlugin(pluginElement, completedURL, mimeType, paramNames, paramValues, useFallback);
-    }
+    if (shouldUsePlugin(completedURL, mimeType, ownerElement->shouldPreferPlugInsForImages(), renderer->hasFallbackContent(), useFallback))
+        return requestPlugin(ownerElement, completedURL, mimeType, paramNames, paramValues, useFallback);
 
     // If the plug-in element already contains a subframe, loadOrRedirectSubframe will re-use it. Otherwise,
     // it will create a new frame and set it as the RenderPart's widget, causing what was previously 
@@ -289,7 +292,7 @@ bool SubframeLoader::allowPlugins(ReasonForCallingAllowPlugins reason)
     return allowed;
 }
 
-bool SubframeLoader::shouldUsePlugin(const KURL& url, const String& mimeType, bool hasFallback, bool& useFallback)
+bool SubframeLoader::shouldUsePlugin(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages, bool hasFallback, bool& useFallback)
 {
     if (m_frame->loader()->client()->shouldUsePluginDocument(mimeType)) {
         useFallback = false;
@@ -305,7 +308,7 @@ bool SubframeLoader::shouldUsePlugin(const KURL& url, const String& mimeType, bo
             return true;
     }
         
-    ObjectContentType objectType = m_frame->loader()->client()->objectContentType(url, mimeType);
+    ObjectContentType objectType = m_frame->loader()->client()->objectContentType(url, mimeType, shouldPreferPlugInsForImages);
     // If an object's content can't be handled and it has no fallback, let
     // it be handled as a plugin to show the broken plugin icon.
     useFallback = objectType == ObjectContentNone && hasFallback;
index ba63a5c..01c59e6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  * Copyright (C) Research In Motion Limited 2009. All rights reserved.
  *
@@ -77,15 +77,16 @@ public:
 
     bool containsPlugins() const { return m_containsPlugins; }
     
-    bool resourceWillUsePlugin(const String& url, const String& mimeType);
+    bool resourceWillUsePlugin(const String& url, const String& mimeType, bool shouldPreferPlugInsForImages);
 
 private:
+    bool requestPlugin(HTMLPlugInImageElement*, const KURL&, const String& serviceType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback);
     Frame* loadOrRedirectSubframe(HTMLFrameOwnerElement*, const KURL&, const AtomicString& frameName, bool lockHistory, bool lockBackForwardList);
     Frame* loadSubframe(HTMLFrameOwnerElement*, const KURL&, const String& name, const String& referrer);
     bool loadPlugin(HTMLPlugInImageElement*, const KURL&, const String& mimeType,
         const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback);
 
-    bool shouldUsePlugin(const KURL&, const String& mimeType, bool hasFallback, bool& useFallback);
+    bool shouldUsePlugin(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages, bool hasFallback, bool& useFallback);
 
     Document* document() const;
 
index dde674a..df10a9c 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * src/FrameLoaderClientImpl.cpp:
+        (WebKit::FrameLoaderClientImpl::objectContentType):
+        * src/FrameLoaderClientImpl.h:
+
 2011-03-25  Kinuko Yasuda  <kinuko@chromium.org>
 
         Reviewed by David Levin.
index dc47923..647a70c 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -1479,7 +1480,8 @@ PassRefPtr<Widget> FrameLoaderClientImpl::createJavaAppletWidget(
 
 ObjectContentType FrameLoaderClientImpl::objectContentType(
     const KURL& url,
-    const String& explicitMimeType)
+    const String& explicitMimeType,
+    bool shouldPreferPlugInsForImages)
 {
     // This code is based on Apple's implementation from
     // WebCoreSupport/WebFrameBridge.mm.
@@ -1503,12 +1505,14 @@ ObjectContentType FrameLoaderClientImpl::objectContentType(
             return ObjectContentFrame;
     }
 
-    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
-        return ObjectContentImage;
-
     // If Chrome is started with the --disable-plugins switch, pluginData is 0.
     PluginData* pluginData = m_webFrame->frame()->page()->pluginData();
-    if (pluginData && pluginData->supportsMimeType(mimeType))
+    bool plugInSupportsMIMEType = pluginData && pluginData->supportsMimeType(mimeType);
+
+    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
+        return shouldPreferPlugInsForImages && plugInSupportsMIMEType ? ObjectContentNetscapePlugin : ObjectContentImage;
+
+    if (plugInSupportsMIMEType)
         return ObjectContentNetscapePlugin;
 
     if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType))
index 7abf617..f19c26c 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -197,7 +198,7 @@ public:
         const Vector<WTF::String>& paramNames,
         const Vector<WTF::String>& paramValues);
     virtual WebCore::ObjectContentType objectContentType(
-        const WebCore::KURL& url, const WTF::String& mimeType);
+        const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
     virtual WTF::String overrideMediaType() const;
     virtual void didPerformFirstNavigation() const;
     virtual void registerForIconNotification(bool listen = true);
index 0487561..0d24b70 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebCoreSupport/FrameLoaderClientEfl.cpp:
+        (WebCore::FrameLoaderClientEfl::objectContentType):
+        * WebCoreSupport/FrameLoaderClientEfl.h:
+
 2011-03-24  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
 
         Reviewed by Antonio Gomes.
index 3ea8c2a..93d5d66 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
  * Copyright (C) 2008 Holger Hans Peter Freyther
@@ -399,8 +399,12 @@ PassRefPtr<Widget> FrameLoaderClientEfl::createJavaAppletWidget(const IntSize&,
     return 0;
 }
 
-ObjectContentType FrameLoaderClientEfl::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType FrameLoaderClientEfl::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
+    // FIXME: once plugin support is enabled, this method needs to correctly handle the 'shouldPreferPlugInsForImages' flag. See
+    // WebCore::FrameLoader::defaultObjectContentType() for an example.
+    UNUSED_PARAM(shouldPreferPlugInsForImages);
+
     if (url.isEmpty() && mimeType.isEmpty())
         return ObjectContentNone;
 
index 424c66b..5ea4e8c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
  * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia
  * Copyright (C) 2009-2010 ProFUSION embedded systems
@@ -149,7 +149,7 @@ class FrameLoaderClientEfl : public FrameLoaderClient {
 
     virtual void registerForIconNotification(bool);
 
-    virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
+    virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
 
     virtual void setMainFrameDocumentReady(bool);
 
index b0683fa..d7de61d 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebCoreSupport/FrameLoaderClientGtk.cpp:
+        (WebKit::FrameLoaderClient::objectContentType):
+        * WebCoreSupport/FrameLoaderClientGtk.h:
+
 2011-03-25  Priit Laes  <plaes@plaes.org>
 
         Reviewed by Martin Robinson.
index 79e3bc4..ca8bf9a 100644 (file)
@@ -6,6 +6,7 @@
  *  Copyright (C) 2009, 2010 Gustavo Noronha Silva <gns@gnome.org>
  *  Copyright (C) Research In Motion Limited 2009. All rights reserved.
  *  Copyright (C) 2010 Igalia S.L.
+ *  Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -711,9 +712,9 @@ PassRefPtr<Widget> FrameLoaderClient::createJavaAppletWidget(const IntSize& plug
     return FrameLoaderClient::createPlugin(pluginSize, element, baseURL, paramNames, paramValues, "application/x-java-applet", false);
 }
 
-ObjectContentType FrameLoaderClient::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType FrameLoaderClient::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
-    return FrameLoader::defaultObjectContentType(url, mimeType);
+    return FrameLoader::defaultObjectContentType(url, mimeType, shouldPreferPlugInsForImages);
 }
 
 String FrameLoaderClient::overrideMediaType() const
index 3340837..b7ead7a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
  *
  * All rights reserved.
@@ -126,7 +126,7 @@ namespace WebKit {
 
         virtual void registerForIconNotification(bool);
 
-        virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+        virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
 
         virtual void setMainFrameDocumentReady(bool);
 
index 21f573c..7757fe7 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebCoreSupport/FrameLoaderClientHaiku.cpp:
+        (WebCore::FrameLoaderClientHaiku::objectContentType):
+        * WebCoreSupport/FrameLoaderClientHaiku.h:
+
 2011-03-25  Chang Shu  <cshu@webkit.org>
 
         Reviewed by Ryosuke Niwa.
index 8c42132..24a98d5 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2006 Don Gibson <dgibson77@gmail.com>
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2007 Trolltech ASA
  * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> All rights reserved.
  * Copyright (C) 2009 Maxime Simon <simon.maxime@gmail.com> All rights reserved.
@@ -754,7 +754,7 @@ void FrameLoaderClientHaiku::transferLoadingResourceFromPage(unsigned long, Docu
 {
 }
 
-ObjectContentType FrameLoaderClientHaiku::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType FrameLoaderClientHaiku::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
     notImplemented();
     return ObjectContentType();
index 3e995a1..dbd3084 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> All rights reserved.
  *
  *
@@ -239,7 +239,7 @@ namespace WebCore {
                                                           const KURL& baseURL, const Vector<String>& paramNames,
                                                           const Vector<String>& paramValues);
 
-        virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
+        virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
         virtual String overrideMediaType() const;
 
         virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*);
index d14bc51..d28c7bc 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebCoreSupport/WebFrameLoaderClient.h:
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::objectContentType):
+
 2011-03-24  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r81939.
index c484729..4fe5664 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -216,7 +216,7 @@ private:
     virtual void showMediaPlayerProxyPlugin(WebCore::Widget*);
 #endif
     
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
     virtual WTF::String overrideMediaType() const;
     
     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
index a558d83..92c2b03 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -1454,7 +1454,7 @@ void WebFrameLoaderClient::transferLoadingResourceFromPage(unsigned long identif
     [kit(oldPage) _removeObjectForIdentifier:identifier];
 }
 
-ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
     BEGIN_BLOCK_OBJC_EXCEPTIONS;
 
@@ -1491,18 +1491,25 @@ ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const
     if (type.isEmpty())
         return ObjectContentFrame; // Go ahead and hope that we can display the content.
 
-    if (MIMETypeRegistry::isSupportedImageMIMEType(type))
-        return ObjectContentImage;
-
     WebBasePluginPackage *package = [getWebView(m_webFrame.get()) _pluginForMIMEType:type];
+    ObjectContentType plugInType = ObjectContentNone;
     if (package) {
 #if ENABLE(NETSCAPE_PLUGIN_API)
         if ([package isKindOfClass:[WebNetscapePluginPackage class]])
-            return ObjectContentNetscapePlugin;
+            plugInType = ObjectContentNetscapePlugin;
+        else
 #endif
-        ASSERT([package isKindOfClass:[WebPluginPackage class]]);
-        return ObjectContentOtherPlugin;
+        {
+            ASSERT([package isKindOfClass:[WebPluginPackage class]]);
+            plugInType = ObjectContentOtherPlugin;
+        }
     }
+    
+    if (MIMETypeRegistry::isSupportedImageMIMEType(type))
+        return shouldPreferPlugInsForImages && plugInType != ObjectContentNone ? plugInType : ObjectContentImage;
+
+    if (plugInType != ObjectContentNone)
+        return plugInType;
 
     if ([m_webFrame->_private->webFrameView _viewClassForMIMEType:type])
         return ObjectContentFrame;
index 63df50d..340b121 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebCoreSupport/FrameLoaderClientQt.cpp:
+        (WebCore::FrameLoaderClientQt::objectContentType):
+        * WebCoreSupport/FrameLoaderClientQt.h:
+
 2011-03-25  Chang Shu  <cshu@webkit.org>
 
         Reviewed by Ryosuke Niwa.
index b942390..48b097d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
  * Coypright (C) 2008 Holger Hans Peter Freyther
@@ -1312,18 +1312,18 @@ void FrameLoaderClientQt::transferLoadingResourceFromPage(unsigned long, Documen
 {
 }
 
-ObjectContentType FrameLoaderClientQt::objectContentType(const KURL& url, const String& _mimeType)
+ObjectContentType FrameLoaderClientQt::objectContentType(const KURL& url, const String& mimeTypeIn, bool shouldPreferPlugInsForImages)
 {
-//    qDebug()<<" ++++++++++++++++ url is "<<url.prettyURL()<<", mime = "<<_mimeType;
+//    qDebug()<<" ++++++++++++++++ url is "<<url.prettyURL()<<", mime = "<<mimeTypeIn;
     QFileInfo fi(url.path());
     String extension = fi.suffix();
-    if (_mimeType == "application/x-qt-plugin" || _mimeType == "application/x-qt-styled-widget")
+    if (mimeTypeIn == "application/x-qt-plugin" || mimeTypeIn == "application/x-qt-styled-widget")
         return ObjectContentOtherPlugin;
 
-    if (url.isEmpty() && !_mimeType.length())
+    if (url.isEmpty() && !mimeTypeIn.length())
         return ObjectContentNone;
 
-    String mimeType = _mimeType;
+    String mimeType = mimeTypeIn;
     if (!mimeType.length())
         mimeType = MIMETypeRegistry::getMIMETypeForExtension(extension);
 
@@ -1333,14 +1333,17 @@ ObjectContentType FrameLoaderClientQt::objectContentType(const KURL& url, const
     if (!mimeType.length())
         return ObjectContentFrame;
 
-    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
-        return ObjectContentImage;
-
+    ObjectContentType plugInType = ObjectContentNone;
     if (PluginDatabase::installedPlugins()->isMIMETypeRegistered(mimeType))
-        return ObjectContentNetscapePlugin;
-
-    if (m_frame->page() && m_frame->page()->pluginData() && m_frame->page()->pluginData()->supportsMimeType(mimeType))
-        return ObjectContentOtherPlugin;
+        plugInType = ObjectContentNetscapePlugin;
+    else if (m_frame->page() && m_frame->page()->pluginData() && m_frame->page()->pluginData()->supportsMimeType(mimeType))
+        plugInType = ObjectContentOtherPlugin;
+        
+    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
+        return shouldPreferPlugInsForImages && plugInType != ObjectContentNone ? plugInType : ObjectContentImage;
+    
+    if (plugInType != ObjectContentNone)
+        return plugInType;
 
     if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType))
         return ObjectContentFrame;
index 0333599..db964fa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
  *
@@ -211,7 +211,7 @@ public:
 
     virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
 
-    virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
+    virtual ObjectContentType objectContentType(const KURL&, const String& mimeTypeIn, bool shouldPreferPlugInsForImages);
     virtual String overrideMediaType() const;
 
     virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*);
index 824a0e7..212d8bc 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebFrame.cpp:
+        (WebFrame::objectContentType):
+        * WebFrame.h:
+
 2011-03-24  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r81916 and r81917.
index e412543..ab908e5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
  * Copyright (C) Research In Motion Limited 2009. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -1899,9 +1899,9 @@ PassRefPtr<Widget> WebFrame::createJavaAppletWidget(const IntSize& pluginSize, H
     return pluginView;
 }
 
-ObjectContentType WebFrame::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType WebFrame::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
-    return WebCore::FrameLoader::defaultObjectContentType(url, mimeType);
+    return WebCore::FrameLoader::defaultObjectContentType(url, mimeType, shouldPreferPlugInsForImages);
 }
 
 String WebFrame::overrideMediaType() const
index 59c0aec..5112f69 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
+ * Copyright (C) 2006, 2007, 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -341,7 +341,7 @@ public:
         
     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues);
 
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
     virtual WTF::String overrideMediaType() const;
 
     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
index ad0d46d..47b795b 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebCoreSupport/FrameLoaderClientWinCE.cpp:
+        (WebKit::FrameLoaderClientWinCE::objectContentType):
+        * WebCoreSupport/FrameLoaderClientWinCE.h:
+
 2011-03-24  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r81916 and r81917.
index 3fbed2b..1f8bdd9 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -182,9 +183,9 @@ PassRefPtr<Widget> FrameLoaderClientWinCE::createJavaAppletWidget(const IntSize&
     return 0;
 }
 
-ObjectContentType FrameLoaderClientWinCE::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType FrameLoaderClientWinCE::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
-    return FrameLoader::defaultObjectContentType(url, mimeType);
+    return FrameLoader::defaultObjectContentType(url, mimeType, shouldPreferPlugInsForImages);
 }
 
 String FrameLoaderClientWinCE::overrideMediaType() const
index ce3a620..401225d 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -120,7 +121,7 @@ public:
 
     virtual void registerForIconNotification(bool);
 
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
 
     virtual void setMainFrameDocumentReady(bool);
 
index 7d8d6ad..980fa8a 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebKitSupport/FrameLoaderClientWx.cpp:
+        (WebCore::FrameLoaderClientWx::objectContentType):
+        * WebKitSupport/FrameLoaderClientWx.h:
+
 2011-03-24  Kevin Ollivier  <kevino@theolliviers.com>
 
         [wx] Build fix, remove old call and replace it with correct one.
index 68e1e70..afc255c 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * All rights reserved.
  *
@@ -870,7 +871,7 @@ void FrameLoaderClientWx::transferLoadingResourceFromPage(unsigned long, Documen
 {
 }
 
-ObjectContentType FrameLoaderClientWx::objectContentType(const KURL& url, const String& mimeType)
+ObjectContentType FrameLoaderClientWx::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages)
 {
     notImplemented();
     return ObjectContentType();
index 8f1e69e..254f95c 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * All rights reserved.
  *
@@ -217,7 +218,7 @@ namespace WebCore {
         
         virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
 
-        virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
+        virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
         virtual String overrideMediaType() const;
 
         virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*);
index 4eff277..36b52e3 100644 (file)
@@ -1,3 +1,17 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        Update objectContentType() implementation to handle the
+        shouldPreferPlugInsForImages flag.
+
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::objectContentType):
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
+
 2011-03-25  Brent Fulgham  <bfulgham@webkit.org>
 
         Unreviewed build correction.
index 8ae1369..cb4f813 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -1268,7 +1268,7 @@ static bool pluginSupportsExtension(PluginData* pluginData, const String& extens
     return false;
 }
 
-ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const String& mimeTypeIn)
+ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const String& mimeTypeIn, bool shouldPreferPlugInsForImages)
 {
     // FIXME: This should be merged with WebCore::FrameLoader::defaultObjectContentType when the plugin code
     // is consolidated.
@@ -1294,15 +1294,19 @@ ObjectContentType WebFrameLoaderClient::objectContentType(const KURL& url, const
     if (mimeType.isEmpty())
         return ObjectContentFrame;
 
-    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
-        return WebCore::ObjectContentImage;
-
+    bool plugInSupportsMIMEType = false;
     if (WebPage* webPage = m_frame->page()) {
         if (PluginData* pluginData = webPage->corePage()->pluginData()) {
             if (pluginData->supportsMimeType(mimeType))
-                return ObjectContentNetscapePlugin;
+                plugInSupportsMIMEType = true;
         }
     }
+    
+    if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType))
+        return shouldPreferPlugInsForImages && plugInSupportsMIMEType ? ObjectContentNetscapePlugin : ObjectContentImage;
+
+    if (plugInSupportsMIMEType)
+        return ObjectContentNetscapePlugin;
 
     if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType))
         return ObjectContentFrame;
index 9ca9a75..1948541 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -191,7 +191,7 @@ private:
     
     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
     
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const String& mimeType);
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
     virtual String overrideMediaType() const;
 
     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
index de3c037..8494f87 100644 (file)
@@ -1,3 +1,19 @@
+2011-03-25  Andy Estes  <aestes@apple.com>
+
+        Reviewed by Adele Peterson.
+
+        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
+        https://bugs.webkit.org/show_bug.cgi?id=49016
+
+        TestNetscapePlugIn needs to register support for an image MIME type so
+        we can test that the embed tag prefers plug-ins to render image MIME
+        types.
+
+        * DumpRenderTree/TestNetscapePlugIn/mac/Info.plist: Register image/png.
+        * DumpRenderTree/TestNetscapePlugIn/main.cpp:
+        (NP_GetMIMEDescription): Ditto.
+        * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc: Ditto.
+
 2011-03-25  Jessie Berlin  <jberlin@apple.com>
 
         Reviewed by Sam Weinig.
index 7444b84..ef45e66 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>Simple Netscape plug-in that handles test content for WebKit</string>
        <key>WebPluginMIMETypes</key>
        <dict>
+               <key>image/png</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>png</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>PNG image</string>
+               </dict>
                <key>application/x-webkit-test-netscape</key>
                <dict>
                        <key>WebPluginExtensions</key>
index 7121344..a090fef 100644 (file)
@@ -787,7 +787,7 @@ NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
 extern "C"
 const char* NP_GetMIMEDescription(void)
 {
-    return "application/x-webkit-test-netscape:testnetscape:test netscape content";
+    return "application/x-webkit-test-netscape:testnetscape:test netscape content;image/png:png:PNG image";
 }
 
 extern "C"
index 5a02f9d..c0b38ee 100644 (file)
@@ -71,10 +71,10 @@ BEGIN
         BEGIN\r
             VALUE "CompanyName", "Apple Inc."\r
             VALUE "FileDescription", "Simple Netscape plug-in that handles test content for WebKit"\r
-            VALUE "FileExtents", "testnetscape"\r
-            VALUE "FileOpenName", "test netscape content"\r
+            VALUE "FileExtents", "testnetscape|png"\r
+            VALUE "FileOpenName", "test netscape content|PNG image"\r
             VALUE "LegalCopyright", "Copyright Apple Inc. 2007-2009"\r
-            VALUE "MIMEType", "application/x-webkit-test-netscape"\r
+            VALUE "MIMEType", "application/x-webkit-test-netscape|image/png"\r
             VALUE "OriginalFilename", "npTestNetscapePlugin.dll"\r
             VALUE "ProductName", "WebKit Test PlugIn"\r
         END\r