Changeset 116695 in webkit


Ignore:
Timestamp:
May 10, 2012 3:45:41 PM (12 years ago)
Author:
andersca@apple.com
Message:

WebKit1: Add a way to blacklist specific plug-ins/plug-in versions
https://bugs.webkit.org/show_bug.cgi?id=86150
<rdar://problem/9551196>

Reviewed by Sam Weinig.

Source/WebCore:

  • English.lproj/Localizable.strings:

Update.

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::loadPlugin):
It is possible that the client has already set the unavailability reason so don't try to set it twice.

  • platform/LocalizedStrings.cpp:

(WebCore::insecurePluginVersionText):

  • platform/LocalizedStrings.h:

Add insecure plug-in version text.

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::unavailablePluginReplacementText):

  • rendering/RenderEmbeddedObject.h:

Add InsecurePluginVersion unavailability reason.

Source/WebKit/mac:

  • Misc/WebKitErrors.h:

Add WebKitErrorInsecurePlugInVersion enum.

  • Plugins/WebBasePluginPackage.h:
  • Plugins/WebBasePluginPackage.mm:

(-[WebBasePluginPackage bundleIdentifier]):
(-[WebBasePluginPackage bundleVersion]):
Add bundleIdentifier and bundleVersion getters.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::createPlugin):
Check if the plug-in is blocked. If it is, set the unavailability reason and the error code.

WebKitLibraries:

Add WKShouldBlockPlugin.

  • WebKitSystemInterface.h:
  • libWebKitSystemInterfaceLion.a:
  • libWebKitSystemInterfaceSnowLeopard.a:
Location:
trunk
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r116694 r116695  
     12012-05-10  Anders Carlsson  <andersca@apple.com>
     2
     3        WebKit1: Add a way to blacklist specific plug-ins/plug-in versions
     4        https://bugs.webkit.org/show_bug.cgi?id=86150
     5        <rdar://problem/9551196>
     6
     7        Reviewed by Sam Weinig.
     8
     9        * English.lproj/Localizable.strings:
     10        Update.
     11
     12        * loader/SubframeLoader.cpp:
     13        (WebCore::SubframeLoader::loadPlugin):
     14        It is possible that the client has already set the unavailability reason so don't try to set it twice.
     15
     16        * platform/LocalizedStrings.cpp:
     17        (WebCore::insecurePluginVersionText):
     18        * platform/LocalizedStrings.h:
     19        Add insecure plug-in version text.
     20
     21        * rendering/RenderEmbeddedObject.cpp:
     22        (WebCore::RenderEmbeddedObject::unavailablePluginReplacementText):
     23        * rendering/RenderEmbeddedObject.h:
     24        Add InsecurePluginVersion unavailability reason.
     25
    1262012-05-10  Eric Seidel  <eric@webkit.org>
    227
  • trunk/Source/WebCore/English.lproj/Localizable.strings

    r112487 r116695  
    173173"Indent (Undo action name)" = "Indent";
    174174
     175/* Label text to be used when an insecure plug-in version was blocked from loading */
     176"Insecure Plug-In Version" = "Insecure Plug-In Version";
     177
    175178/* Undo action name */
    176179"Insert List (Undo action name)" = "Insert List";
  • trunk/Source/WebCore/loader/SubframeLoader.cpp

    r116687 r116695  
    377377
    378378    if (!widget) {
    379         renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
     379        if (!renderer->showsUnavailablePluginIndicator())
     380            renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
    380381        return false;
    381382    }
  • trunk/Source/WebCore/platform/LocalizedStrings.cpp

    r111041 r116695  
    674674}
    675675
     676String insecurePluginVersionText()
     677{
     678    return WEB_UI_STRING("Insecure Plug-In Version", "Label text to be used when an insecure plug-in version was blocked from loading");
     679}
     680
    676681String multipleFileUploadText(unsigned numberOfFiles)
    677682{
  • trunk/Source/WebCore/platform/LocalizedStrings.h

    r114999 r116695  
    168168    String missingPluginText();
    169169    String crashedPluginText();
     170    String insecurePluginVersionText();
    170171    String multipleFileUploadText(unsigned numberOfFiles);
    171172    String unknownFileSizeText();
  • trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp

    r116687 r116695  
    215215    case PluginCrashed:
    216216        return crashedPluginText();
     217    case InsecurePluginVersion:
     218        return insecurePluginVersionText();
    217219    }
    218220
  • trunk/Source/WebCore/rendering/RenderEmbeddedObject.h

    r116687 r116695  
    4040        PluginMissing,
    4141        PluginCrashed,
     42        InsecurePluginVersion
    4243    };
    4344    void setPluginUnavailabilityReason(PluginUnavailabilityReason);
  • trunk/Source/WebKit/mac/ChangeLog

    r116687 r116695  
     12012-05-10  Anders Carlsson  <andersca@apple.com>
     2
     3        WebKit1: Add a way to blacklist specific plug-ins/plug-in versions
     4        https://bugs.webkit.org/show_bug.cgi?id=86150
     5        <rdar://problem/9551196>
     6
     7        Reviewed by Sam Weinig.
     8
     9        * Misc/WebKitErrors.h:
     10        Add WebKitErrorInsecurePlugInVersion enum.
     11
     12        * Plugins/WebBasePluginPackage.h:
     13        * Plugins/WebBasePluginPackage.mm:
     14        (-[WebBasePluginPackage bundleIdentifier]):
     15        (-[WebBasePluginPackage bundleVersion]):
     16        Add bundleIdentifier and bundleVersion getters.
     17
     18        * WebCoreSupport/WebFrameLoaderClient.mm:
     19        (WebFrameLoaderClient::createPlugin):
     20        Check if the plug-in is blocked. If it is, set the unavailability reason and the error code.
     21
    1222012-05-10  Anders Carlsson  <andersca@apple.com>
    223
  • trunk/Source/WebKit/mac/Misc/WebKitErrors.h

    r12070 r116695  
    5757    WebKitErrorCannotLoadPlugIn =                               201,
    5858    WebKitErrorJavaUnavailable =                                202,
     59    WebKitErrorInsecurePlugInVersion =                          203,
    5960};
  • trunk/Source/WebKit/mac/Plugins/WebBasePluginPackage.h

    r65021 r116695  
    7878- (const WebCore::PluginInfo&)pluginInfo;
    7979
    80 - (WTF::String)bundleIdentifier;
     80- (String)bundleIdentifier;
     81- (String)bundleVersion;
    8182
    8283- (BOOL)supportsExtension:(const WTF::String&)extension;
  • trunk/Source/WebKit/mac/Plugins/WebBasePluginPackage.mm

    r105552 r116695  
    464464}
    465465
    466 - (WTF::String)bundleIdentifier
     466- (String)bundleIdentifier
    467467{
    468468    return CFBundleGetIdentifier(cfBundle.get());
     469}
     470
     471- (String)bundleVersion
     472{
     473    CFDictionaryRef infoDictionary = CFBundleGetInfoDictionary(cfBundle.get());
     474    if (!infoDictionary)
     475        return String();
     476
     477    CFTypeRef bundleVersionString = CFDictionaryGetValue(infoDictionary, kCFBundleVersionKey);
     478    if (!bundleVersionString || CFGetTypeID(bundleVersionString) != CFStringGetTypeID())
     479        return String();
     480
     481    return reinterpret_cast<CFStringRef>(bundleVersionString);
    469482}
    470483
  • trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r112474 r116695  
    16661666
    16671667    if (pluginPackage) {
    1668         if ([pluginPackage isKindOfClass:[WebPluginPackage class]])
    1669             view = pluginView(m_webFrame.get(), (WebPluginPackage *)pluginPackage, attributeKeys, kit(paramValues), baseURL, kit(element), loadManually);
    1670            
     1668        if (!WKShouldBlockPlugin([pluginPackage bundleIdentifier], [pluginPackage bundleVersion])) {
     1669            if ([pluginPackage isKindOfClass:[WebPluginPackage class]])
     1670                view = pluginView(m_webFrame.get(), (WebPluginPackage *)pluginPackage, attributeKeys, kit(paramValues), baseURL, kit(element), loadManually);
     1671
    16711672#if ENABLE(NETSCAPE_PLUGIN_API)
    1672         else if ([pluginPackage isKindOfClass:[WebNetscapePluginPackage class]]) {
    1673             WebBaseNetscapePluginView *pluginView = [[[NETSCAPE_PLUGIN_VIEW alloc]
    1674                 initWithFrame:NSMakeRect(0, 0, size.width(), size.height())
    1675                 pluginPackage:(WebNetscapePluginPackage *)pluginPackage
    1676                 URL:pluginURL
    1677                 baseURL:baseURL
    1678                 MIMEType:MIMEType
    1679                 attributeKeys:attributeKeys
    1680                 attributeValues:kit(paramValues)
    1681                 loadManually:loadManually
    1682                 element:element] autorelease];
    1683            
    1684             return adoptRef(new NetscapePluginWidget(pluginView));
    1685         }
     1673            else if ([pluginPackage isKindOfClass:[WebNetscapePluginPackage class]]) {
     1674                WebBaseNetscapePluginView *pluginView = [[[NETSCAPE_PLUGIN_VIEW alloc]
     1675                    initWithFrame:NSMakeRect(0, 0, size.width(), size.height())
     1676                    pluginPackage:(WebNetscapePluginPackage *)pluginPackage
     1677                    URL:pluginURL
     1678                    baseURL:baseURL
     1679                    MIMEType:MIMEType
     1680                    attributeKeys:attributeKeys
     1681                    attributeValues:kit(paramValues)
     1682                    loadManually:loadManually
     1683                    element:element] autorelease];
     1684
     1685                return adoptRef(new NetscapePluginWidget(pluginView));
     1686            }
    16861687#endif
     1688        } else {
     1689            errorCode = WebKitErrorInsecurePlugInVersion;
     1690            if (element->renderer()->isEmbeddedObject())
     1691                toRenderEmbeddedObject(element->renderer())->setPluginUnavailabilityReason(RenderEmbeddedObject::InsecurePluginVersion);
     1692        }
    16871693    } else
    16881694        errorCode = WebKitErrorCannotFindPlugIn;
  • trunk/WebKitLibraries/ChangeLog

    r116473 r116695  
     12012-05-10  Anders Carlsson  <andersca@apple.com>
     2
     3        WebKit1: Add a way to blacklist specific plug-ins/plug-in versions
     4        https://bugs.webkit.org/show_bug.cgi?id=86150
     5        <rdar://problem/9551196>
     6
     7        Reviewed by Sam Weinig.
     8
     9        Add WKShouldBlockPlugin.
     10
     11        * WebKitSystemInterface.h:
     12        * libWebKitSystemInterfaceLion.a:
     13        * libWebKitSystemInterfaceSnowLeopard.a:
     14
    1152012-05-08  Jon Lee  <jonlee@apple.com>
    216
  • trunk/WebKitLibraries/WebKitSystemInterface.h

    r116473 r116695  
    9393void WKUnregisterUniqueIdForElement(id element);
    9494
     95BOOL WKShouldBlockPlugin(NSString *bundleIdentifier, NSString *bundleVersionString);
    9596
    9697#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
Note: See TracChangeset for help on using the changeset viewer.