2009-01-27 Darin Adler <darin@apple.com>
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Jan 2009 01:54:50 +0000 (01:54 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Jan 2009 01:54:50 +0000 (01:54 +0000)
        Reviewed by Sam Weinig.

        REGRESSION (r40234): Launching iTunes from a link displays a
        "Safari can't find the Internet plug-in" sheet in Safari
        rdar://problem/6533678

        * rendering/RenderPartObject.cpp:
        (WebCore::havePlugin): Put the check for empty string in here.
        (WebCore::serviceTypeForClassId): Only return activeXType() if
        we have a plug-in that can handle that type. While it might be logical
        to return an Active X type for any <object> with a classId in it,
        even if we don't have a plug-in that implements Active X, existing
        clients, such as Safari, don't expect that.

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

WebCore/ChangeLog
WebCore/rendering/RenderPartObject.cpp

index 2ecd224..c75fc53 100644 (file)
@@ -1,3 +1,19 @@
+2009-01-27  Darin Adler  <darin@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        REGRESSION (r40234): Launching iTunes from a link displays a
+        "Safari can't find the Internet plug-in" sheet in Safari
+        rdar://problem/6533678
+
+        * rendering/RenderPartObject.cpp:
+        (WebCore::havePlugin): Put the check for empty string in here.
+        (WebCore::serviceTypeForClassId): Only return activeXType() if
+        we have a plug-in that can handle that type. While it might be logical
+        to return an Active X type for any <object> with a classId in it,
+        even if we don't have a plug-in that implements Active X, existing
+        clients, such as Safari, don't expect that.
+
 2009-01-27  Dan Bernstein  <mitz@apple.com>
 
         Reviewed by Steve Falkenburg.
index 13f805b..95423f6 100644 (file)
@@ -104,7 +104,7 @@ static const String& activeXType()
 
 static inline bool havePlugin(const PluginData* pluginData, const String& type)
 {
-    return pluginData && pluginData->supportsMimeType(type);
+    return pluginData && !type.isEmpty() && pluginData->supportsMimeType(type);
 }
 
 static String serviceTypeForClassId(const String& classId, const PluginData* pluginData)
@@ -117,9 +117,6 @@ static String serviceTypeForClassId(const String& classId, const PluginData* plu
     static ClassIdToTypeMap* map = createClassIdToTypeMap();
     String type = map->get(classId);
 
-    if (type.isEmpty())
-        return activeXType();
-
     // If we do have a plug-in that supports generic ActiveX content and don't have a plug-in
     // for the MIME type we came up with, ignore the MIME type we came up with and just use
     // the ActiveX type.