Changeset 204462 in webkit


Ignore:
Timestamp:
Aug 15, 2016, 9:43:13 AM (9 years ago)
Author:
andersca@apple.com
Message:

Move the plug-in and WebGL blacklist code to WebCore
https://bugs.webkit.org/show_bug.cgi?id=160831

Reviewed by Sam Weinig.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mac/BlacklistUpdater.h: Added.

(WebCore::BlacklistUpdater::queue):
(WebCore::BlacklistUpdater::pluginBlacklist):
(WebCore::BlacklistUpdater::webGLBlacklist):

  • platform/mac/BlacklistUpdater.mm: Added.

(WebCore::BlacklistUpdater::readBlacklistData):
(WebCore::BlacklistUpdater::reloadIfNecessary):
(WebCore::BlacklistUpdater::initializeQueue):

  • platform/mac/PluginBlacklist.h: Added.
  • platform/mac/PluginBlacklist.mm: Added.

(WebCore::PluginBlacklist::loadPolicyForPluginVersion):
(WebCore::PluginBlacklist::isPluginUpdateAvailable):
(WebCore::PluginBlacklist::create):
(WebCore::PluginBlacklist::~PluginBlacklist):
(WebCore::PluginBlacklist::splitOSVersion):
(WebCore::PluginBlacklist::loadPolicyForPlugin):
(WebCore::PluginBlacklist::isUpdateAvailable):
(WebCore::PluginBlacklist::PluginBlacklist):

  • platform/mac/WebGLBlacklist.h: Added.
  • platform/mac/WebGLBlacklist.mm: Added.

(WebCore::OSBuildInfo::OSBuildInfo):
(WebCore::OSBuildInfo::operator==):
(WebCore::OSBuildInfo::operator>):
(WebCore::OSBuildInfo::operator<=):
(WebCore::OSBuildInfo::operator<):
(WebCore::buildInfoFromOSBuildString):
(WebCore::WebGLBlacklist::shouldBlockWebGL):
(WebCore::WebGLBlacklist::shouldSuggestBlockingWebGL):
(WebCore::matchesGPU):
(WebCore::gpuMaskFromString):
(WebCore::matchesBuildInfo):
(WebCore::WebGLBlacklist::create):
(WebCore::WebGLBlacklist::shouldBlock):
(WebCore::WebGLBlacklist::shouldSuggestBlocking):
(WebCore::WebGLBlacklist::WebGLBlacklist):
(WebCore::WebGLBlacklist::~WebGLBlacklist):

  • platform/spi/cf/CFUtilitiesSPI.h: Added.

Source/WebKit/mac:

Adopt the plug-in and WebGL blacklist code from WebCore instead of using the code from WebKitSystemInterface.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(shouldBlockPlugin):
(WebFrameLoaderClient::createPlugin):
(WebFrameLoaderClient::createJavaAppletWidget):
(shouldBlockWebGL):
(WebFrameLoaderClient::webGLPolicyForURL):
(WebFrameLoaderClient::resolveWebGLPolicyForURL):

Source/WebKit2:

Adopt the plug-in and WebGL blacklist code from WebCore instead of using the code from WebKitSystemInterface.

  • Shared/Plugins/Netscape/mac/PluginInformationMac.mm:

(WebKit::getPlatformPluginModuleInformation):

  • Shared/Plugins/PluginModuleInfo.h:
  • UIProcess/API/C/mac/WKContextPrivateMac.mm:

(WKContextIsPlugInUpdateAvailable):
(WKContextShouldBlockWebGL):
(WKContextShouldSuggestBlockWebGL):

  • UIProcess/Plugins/PluginInfoStore.h:
  • UIProcess/Plugins/mac/PluginInfoStoreMac.mm:

(WebKit::shouldBlockPlugin):
(WebKit::PluginInfoStore::defaultLoadPolicyForPlugin):
(WebKit::WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::findPlugin):

Location:
trunk/Source
Files:
4 added
9 edited
3 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r204459 r204462  
     12016-08-12  Anders Carlsson  <andersca@apple.com>
     2
     3        Move the plug-in and WebGL blacklist code to WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=160831
     5
     6        Reviewed by Sam Weinig.
     7
     8        * WebCore.xcodeproj/project.pbxproj:
     9        * platform/mac/BlacklistUpdater.h: Added.
     10        (WebCore::BlacklistUpdater::queue):
     11        (WebCore::BlacklistUpdater::pluginBlacklist):
     12        (WebCore::BlacklistUpdater::webGLBlacklist):
     13        * platform/mac/BlacklistUpdater.mm: Added.
     14        (WebCore::BlacklistUpdater::readBlacklistData):
     15        (WebCore::BlacklistUpdater::reloadIfNecessary):
     16        (WebCore::BlacklistUpdater::initializeQueue):
     17        * platform/mac/PluginBlacklist.h: Added.
     18        * platform/mac/PluginBlacklist.mm: Added.
     19        (WebCore::PluginBlacklist::loadPolicyForPluginVersion):
     20        (WebCore::PluginBlacklist::isPluginUpdateAvailable):
     21        (WebCore::PluginBlacklist::create):
     22        (WebCore::PluginBlacklist::~PluginBlacklist):
     23        (WebCore::PluginBlacklist::splitOSVersion):
     24        (WebCore::PluginBlacklist::loadPolicyForPlugin):
     25        (WebCore::PluginBlacklist::isUpdateAvailable):
     26        (WebCore::PluginBlacklist::PluginBlacklist):
     27        * platform/mac/WebGLBlacklist.h: Added.
     28        * platform/mac/WebGLBlacklist.mm: Added.
     29        (WebCore::OSBuildInfo::OSBuildInfo):
     30        (WebCore::OSBuildInfo::operator==):
     31        (WebCore::OSBuildInfo::operator>):
     32        (WebCore::OSBuildInfo::operator<=):
     33        (WebCore::OSBuildInfo::operator<):
     34        (WebCore::buildInfoFromOSBuildString):
     35        (WebCore::WebGLBlacklist::shouldBlockWebGL):
     36        (WebCore::WebGLBlacklist::shouldSuggestBlockingWebGL):
     37        (WebCore::matchesGPU):
     38        (WebCore::gpuMaskFromString):
     39        (WebCore::matchesBuildInfo):
     40        (WebCore::WebGLBlacklist::create):
     41        (WebCore::WebGLBlacklist::shouldBlock):
     42        (WebCore::WebGLBlacklist::shouldSuggestBlocking):
     43        (WebCore::WebGLBlacklist::WebGLBlacklist):
     44        (WebCore::WebGLBlacklist::~WebGLBlacklist):
     45        * platform/spi/cf/CFUtilitiesSPI.h: Added.
     46
    1472016-08-14  Chris Dumez  <cdumez@apple.com>
    248
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r204459 r204462  
    10211021                1AFE11990CBFFCC4003017FA /* JSSQLResultSetRowList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFE11970CBFFCC4003017FA /* JSSQLResultSetRowList.cpp */; };
    10221022                1AFE119A0CBFFCC4003017FA /* JSSQLResultSetRowList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFE11980CBFFCC4003017FA /* JSSQLResultSetRowList.h */; };
     1023                1AFFC4531D5E81C400267A66 /* WebGLBlacklist.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AFFC4521D5E7EC700267A66 /* WebGLBlacklist.mm */; };
     1024                1AFFC4541D5E81CB00267A66 /* BlacklistUpdater.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AFFC44E1D5E7EC700267A66 /* BlacklistUpdater.mm */; };
     1025                1AFFC4551D5E81D000267A66 /* PluginBlacklist.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AFFC4501D5E7EC700267A66 /* PluginBlacklist.mm */; };
     1026                1AFFC4571D5E83A700267A66 /* CFUtilitiesSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFFC4561D5E83A700267A66 /* CFUtilitiesSPI.h */; };
     1027                1AFFC4581D5E865500267A66 /* WebGLBlacklist.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFFC4511D5E7EC700267A66 /* WebGLBlacklist.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1028                1AFFC4591D5E866100267A66 /* PluginBlacklist.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFFC44F1D5E7EC700267A66 /* PluginBlacklist.h */; settings = {ATTRIBUTES = (Private, ); }; };
    10231029                1B124D8D1D380B7000ECDFB0 /* MediaSampleAVFObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B124D8C1D380B7000ECDFB0 /* MediaSampleAVFObjC.h */; };
    10241030                1B124D8F1D380BB600ECDFB0 /* MediaSampleAVFObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B124D8E1D380BB600ECDFB0 /* MediaSampleAVFObjC.mm */; };
     
    82488254                1AFE11970CBFFCC4003017FA /* JSSQLResultSetRowList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSetRowList.cpp; sourceTree = "<group>"; };
    82498255                1AFE11980CBFFCC4003017FA /* JSSQLResultSetRowList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLResultSetRowList.h; sourceTree = "<group>"; };
     8256                1AFFC44D1D5E7EC700267A66 /* BlacklistUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlacklistUpdater.h; sourceTree = "<group>"; };
     8257                1AFFC44E1D5E7EC700267A66 /* BlacklistUpdater.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BlacklistUpdater.mm; sourceTree = "<group>"; };
     8258                1AFFC44F1D5E7EC700267A66 /* PluginBlacklist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginBlacklist.h; sourceTree = "<group>"; };
     8259                1AFFC4501D5E7EC700267A66 /* PluginBlacklist.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PluginBlacklist.mm; sourceTree = "<group>"; };
     8260                1AFFC4511D5E7EC700267A66 /* WebGLBlacklist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGLBlacklist.h; sourceTree = "<group>"; };
     8261                1AFFC4521D5E7EC700267A66 /* WebGLBlacklist.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebGLBlacklist.mm; sourceTree = "<group>"; };
     8262                1AFFC4561D5E83A700267A66 /* CFUtilitiesSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFUtilitiesSPI.h; sourceTree = "<group>"; };
    82508263                1B124D8C1D380B7000ECDFB0 /* MediaSampleAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaSampleAVFObjC.h; path = ../MediaSampleAVFObjC.h; sourceTree = "<group>"; };
    82518264                1B124D8E1D380BB600ECDFB0 /* MediaSampleAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaSampleAVFObjC.mm; sourceTree = "<group>"; };
     
    1771517728                                A10D7FEB1C2676D100C6C115 /* CFNetworkConnectionCacheSPI.h */,
    1771617729                                CE12525A1A1C018200864480 /* CFNetworkSPI.h */,
     17730                                1AFFC4561D5E83A700267A66 /* CFUtilitiesSPI.h */,
    1771717731                                4449A4041A964B0000B64AD5 /* CoreMediaSPI.h */,
    1771817732                        );
     
    1800118015                        isa = PBXGroup;
    1800218016                        children = (
     18017                                1AFFC44D1D5E7EC700267A66 /* BlacklistUpdater.h */,
     18018                                1AFFC44E1D5E7EC700267A66 /* BlacklistUpdater.mm */,
    1800318019                                F58784F002DE375901EA4122 /* CursorMac.mm */,
    1800418020                                A795463D0B5C4C80007B438F /* DragDataMac.mm */,
     
    1802618042                                BC94D1070C274F88006BC617 /* PlatformScreenMac.mm */,
    1802718043                                29E4D8E016B0959800C84704 /* PlatformSpeechSynthesizerMac.mm */,
     18044                                1AFFC44F1D5E7EC700267A66 /* PluginBlacklist.h */,
     18045                                1AFFC4501D5E7EC700267A66 /* PluginBlacklist.mm */,
    1802818046                                4634592B1AC2271000ECB71C /* PowerObserverMac.cpp */,
    1802918047                                46DBB64E1AB8C96F00D9A813 /* PowerObserverMac.h */,
     
    1806518083                                BE855F7F0701E83500239769 /* WebCoreView.h */,
    1806618084                                BE8560510701F91100239769 /* WebCoreView.m */,
     18085                                1AFFC4511D5E7EC700267A66 /* WebGLBlacklist.h */,
     18086                                1AFFC4521D5E7EC700267A66 /* WebGLBlacklist.mm */,
    1806718087                                E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */,
    1806818088                                E1A3162C134BC32D007C9A4F /* WebNSAttributedStringExtras.mm */,
     
    2253122551                        isa = PBXGroup;
    2253222552                        children = (
    22533                                 5C6E653F1D5CEDC900F7862E /* URLParser.cpp */,
    22534                                 5C6E65401D5CEDC900F7862E /* URLParser.h */,
    2253522553                                49E912A40EFAC8E6009D0CAF /* animation */,
    2253622554                                FD31604012B026A300C1A359 /* audio */,
     
    2270622724                                6593923609AE4346002C531F /* URL.h */,
    2270722725                                BCBD21AA0E417AD400A070F2 /* URLHash.h */,
     22726                                5C6E653F1D5CEDC900F7862E /* URLParser.cpp */,
     22727                                5C6E65401D5CEDC900F7862E /* URLParser.h */,
    2270822728                                868160D1187669C40021E79D /* UserActivity.cpp */,
    2270922729                                868160D2187669C40021E79D /* UserActivity.h */,
     
    2486024880                                F45C231E1995B73B00A6E2E3 /* AxisScrollSnapOffsets.h in Headers */,
    2486124881                                29A812380FBB9C1D00510293 /* AXObjectCache.h in Headers */,
     24882                                1AFFC4591D5E866100267A66 /* PluginBlacklist.h in Headers */,
    2486224883                                91C9F2F91AE3BEB00095B61C /* AXTextStateChangeIntent.h in Headers */,
    2486324884                                51741D0F0B07259A00ED442C /* BackForwardClient.h in Headers */,
     
    2531025331                                973889A1116EA9DC00ADF313 /* DocumentWriter.h in Headers */,
    2531125332                                BC1A37AD097C715F0019F3D8 /* DOM.h in Headers */,
     25333                                1AFFC4571D5E83A700267A66 /* CFUtilitiesSPI.h in Headers */,
    2531225334                                8538F0190AD718D8006A81D1 /* DOMAbstractView.h in Headers */,
    2531325335                                BC99812E0DBE807A008CE9EF /* DOMAbstractViewFrame.h in Headers */,
     
    2747827500                                0FEA3E88191B3BD7000F1B55 /* ScrollingTreeFrameScrollingNode.h in Headers */,
    2747927501                                0FC4E411187F82E10045882C /* ScrollingTreeFrameScrollingNodeIOS.h in Headers */,
     27502                                1AFFC4581D5E865500267A66 /* WebGLBlacklist.h in Headers */,
    2748027503                                93C4A4151629DF5A00C3EB6E /* ScrollingTreeFrameScrollingNodeMac.h in Headers */,
    2748127504                                0FC4E410187F82E10045882C /* ScrollingTreeIOS.h in Headers */,
     
    2960929632                                D66817FA166FE6D700FA07B4 /* HTMLTemplateElement.cpp in Sources */,
    2961029633                                A81369D7097374F600D74463 /* HTMLTextAreaElement.cpp in Sources */,
     29634                                1AFFC4551D5E81D000267A66 /* PluginBlacklist.mm in Sources */,
    2961129635                                9BC6C21C13CCC97B008E0337 /* HTMLTextFormControlElement.cpp in Sources */,
    2961229636                                830519951BB0F11000F3772E /* HTMLTimeElement.cpp in Sources */,
     
    3071830742                                4FFC022B1643B710004E1638 /* NodeRareData.cpp in Sources */,
    3071930743                                E43105B816750F0C00DB2FB8 /* NodeTraversal.cpp in Sources */,
     30744                                1AFFC4531D5E81C400267A66 /* WebGLBlacklist.mm in Sources */,
    3072030745                                33503CC71017A1B1003B47E1 /* Notification.cpp in Sources */,
    3072130746                                3390CA550FFC157B00921962 /* NotificationCenter.cpp in Sources */,
     
    3140831433                                B2227A460D00BF220071B782 /* SVGMaskElement.cpp in Sources */,
    3140931434                                B2227A4A0D00BF220071B782 /* SVGMetadataElement.cpp in Sources */,
     31435                                1AFFC4541D5E81CB00267A66 /* BlacklistUpdater.mm in Sources */,
    3141031436                                B2A1F2B00CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp in Sources */,
    3141131437                                B2227A4D0D00BF220071B782 /* SVGMPathElement.cpp in Sources */,
  • trunk/Source/WebCore/platform/mac/BlacklistUpdater.h

    r204461 r204462  
    11/*
    2  * Copyright (C) 2011 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef PluginModuleInfo_h
    27 #define PluginModuleInfo_h
     26#pragma once
    2827
    29 #include <WebCore/PluginData.h>
     28#if PLATFORM(MAC)
    3029
    31 #if PLATFORM(COCOA)
    32 #include <mach/machine.h>
    33 #endif
     30#import <dispatch/dispatch.h>
    3431
    35 namespace WebKit {
     32namespace WebCore {
    3633
    37 enum PluginModuleLoadPolicy {
    38     // The plug-in module should be loaded normally.
    39     PluginModuleLoadNormally,
     34class PluginBlacklist;
     35class WebGLBlacklist;
    4036
    41     // The plug-in module should be loaded normally. If the plug-in has a sandbox, it will be disabled.
    42     PluginModuleLoadUnsandboxed,
     37class BlacklistUpdater {
     38public:
     39    static void initializeQueue();
     40    static void reloadIfNecessary();
    4341
    44     // The plug-in should be blocked from being instantiated.
    45     // Note that the plug-in will still be seen by e.g. navigator.plugins
    46     PluginModuleBlockedForSecurity,
    47     PluginModuleBlockedForCompatibility,
     42    static dispatch_queue_t queue() { return s_queue; }
     43    static PluginBlacklist* pluginBlacklist() { return s_pluginBlacklist; }
     44    static WebGLBlacklist* webGLBlacklist() { return s_webGLBlacklist; };
     45
     46private:
     47
     48    static NSDictionary *readBlacklistData();
     49
     50    static dispatch_queue_t s_queue;
     51    static PluginBlacklist* s_pluginBlacklist;
     52    static WebGLBlacklist* s_webGLBlacklist;
    4853};
    4954
    50 struct PluginModuleInfo {
    51     String path;
    52     WebCore::PluginInfo info;
     55}
    5356
    54 #if PLATFORM(COCOA)
    55     cpu_type_t pluginArchitecture;
    56     String bundleIdentifier;
    57     String versionString;
    58     String shortVersionString;
    59     bool hasSandboxProfile;
    60 #elif PLATFORM(GTK)
    61     bool requiresGtk2;
    6257#endif
    63 };
    64 
    65 } // namespace WebKit
    66 
    67 #endif // PluginModuleInfo_h
  • trunk/Source/WebCore/platform/mac/WebGLBlacklist.h

    r204461 r204462  
    11/*
    2  * Copyright (C) 2011 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef PluginModuleInfo_h
    27 #define PluginModuleInfo_h
     26#pragma once
    2827
    29 #include <WebCore/PluginData.h>
     28#if PLATFORM(MAC)
    3029
    31 #if PLATFORM(COCOA)
    32 #include <mach/machine.h>
    33 #endif
     30#include <memory>
     31#include <string>
     32#include <vector>
    3433
    35 namespace WebKit {
     34OBJC_CLASS NSDictionary;
    3635
    37 enum PluginModuleLoadPolicy {
    38     // The plug-in module should be loaded normally.
    39     PluginModuleLoadNormally,
     36namespace WebCore {
    4037
    41     // The plug-in module should be loaded normally. If the plug-in has a sandbox, it will be disabled.
    42     PluginModuleLoadUnsandboxed,
     38class WebGLBlacklist {
     39public:
     40    enum BlockComparison {
     41        Equals,
     42        LessThan,
     43        LessThanEquals
     44    };
    4345
    44     // The plug-in should be blocked from being instantiated.
    45     // Note that the plug-in will still be seen by e.g. navigator.plugins
    46     PluginModuleBlockedForSecurity,
    47     PluginModuleBlockedForCompatibility,
     46    WEBCORE_EXPORT static bool shouldBlockWebGL();
     47    WEBCORE_EXPORT static bool shouldSuggestBlockingWebGL();
     48
     49    static std::unique_ptr<WebGLBlacklist> create(NSDictionary *propertyList);
     50    ~WebGLBlacklist();
     51
     52    bool shouldBlock() const;
     53    bool shouldSuggestBlocking() const;
     54
     55private:
     56    enum class BlockCommand {
     57        Allow,
     58        Block,
     59        SuggestBlocking
     60    };
     61
     62    WebGLBlacklist(BlockCommand);
     63
     64    BlockCommand m_command;
    4865};
    4966
    50 struct PluginModuleInfo {
    51     String path;
    52     WebCore::PluginInfo info;
     67}
    5368
    54 #if PLATFORM(COCOA)
    55     cpu_type_t pluginArchitecture;
    56     String bundleIdentifier;
    57     String versionString;
    58     String shortVersionString;
    59     bool hasSandboxProfile;
    60 #elif PLATFORM(GTK)
    61     bool requiresGtk2;
    6269#endif
    63 };
    64 
    65 } // namespace WebKit
    66 
    67 #endif // PluginModuleInfo_h
  • trunk/Source/WebCore/platform/spi/cf/CFUtilitiesSPI.h

    r204461 r204462  
    11/*
    2  * Copyright (C) 2011 Apple Inc. All rights reserved.
     2 * Copyright (C) 2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef PluginModuleInfo_h
    27 #define PluginModuleInfo_h
     26#pragma once
    2827
    29 #include <WebCore/PluginData.h>
     28#include <CoreFoundation/CoreFoundation.h>
    3029
    31 #if PLATFORM(COCOA)
    32 #include <mach/machine.h>
     30#if USE(APPLE_INTERNAL_SDK)
     31#import <CoreFoundation/CFPriv.h>
    3332#endif
    3433
    35 namespace WebKit {
    36 
    37 enum PluginModuleLoadPolicy {
    38     // The plug-in module should be loaded normally.
    39     PluginModuleLoadNormally,
    40 
    41     // The plug-in module should be loaded normally. If the plug-in has a sandbox, it will be disabled.
    42     PluginModuleLoadUnsandboxed,
    43 
    44     // The plug-in should be blocked from being instantiated.
    45     // Note that the plug-in will still be seen by e.g. navigator.plugins
    46     PluginModuleBlockedForSecurity,
    47     PluginModuleBlockedForCompatibility,
    48 };
    49 
    50 struct PluginModuleInfo {
    51     String path;
    52     WebCore::PluginInfo info;
    53 
    54 #if PLATFORM(COCOA)
    55     cpu_type_t pluginArchitecture;
    56     String bundleIdentifier;
    57     String versionString;
    58     String shortVersionString;
    59     bool hasSandboxProfile;
    60 #elif PLATFORM(GTK)
    61     bool requiresGtk2;
    62 #endif
    63 };
    64 
    65 } // namespace WebKit
    66 
    67 #endif // PluginModuleInfo_h
     34extern "C" {
     35CFDictionaryRef _CFCopySystemVersionDictionary(void);
     36extern const CFStringRef _kCFSystemVersionProductVersionKey;
     37extern const CFStringRef _kCFSystemVersionBuildVersionKey;
     38}
  • trunk/Source/WebKit/mac/ChangeLog

    r204456 r204462  
     12016-08-12  Anders Carlsson  <andersca@apple.com>
     2
     3        Move the plug-in and WebGL blacklist code to WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=160831
     5
     6        Reviewed by Sam Weinig.
     7
     8        Adopt the plug-in and WebGL blacklist code from WebCore instead of using the code from WebKitSystemInterface.
     9
     10        * WebCoreSupport/WebFrameLoaderClient.mm:
     11        (shouldBlockPlugin):
     12        (WebFrameLoaderClient::createPlugin):
     13        (WebFrameLoaderClient::createJavaAppletWidget):
     14        (shouldBlockWebGL):
     15        (WebFrameLoaderClient::webGLPolicyForURL):
     16        (WebFrameLoaderClient::resolveWebGLPolicyForURL):
     17
    1182016-08-14  Daniel Bates  <dabates@apple.com>
    219
  • trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r204320 r204462  
    109109#import <WebCore/NSURLFileTypeMappingsSPI.h>
    110110#import <WebCore/Page.h>
     111#import <WebCore/PluginBlacklist.h>
    111112#import <WebCore/PluginViewBase.h>
    112113#import <WebCore/ProtectionSpace.h>
     
    119120#import <WebCore/SubresourceLoader.h>
    120121#import <WebCore/WebCoreObjCExtras.h>
     122#import <WebCore/WebGLBlacklist.h>
    121123#import <WebCore/WebScriptObjectPrivate.h>
    122124#import <WebCore/Widget.h>
     
    18911893#endif // ENABLE(NETSCAPE_PLUGIN_API)
    18921894
     1895static bool shouldBlockPlugin(WebBasePluginPackage *pluginPackage)
     1896{
     1897#if PLATFORM(MAC)
     1898    auto loadPolicy = PluginBlacklist::loadPolicyForPluginVersion(pluginPackage.bundleIdentifier, pluginPackage.bundleVersion);
     1899    return loadPolicy == PluginBlacklist::LoadPolicy::BlockedForSecurity || loadPolicy == PluginBlacklist::LoadPolicy::BlockedForCompatibility;
     1900#else
     1901    UNUSED_PARAM(pluginPackage);
     1902    return false;
     1903#endif
     1904}
     1905
    18931906RefPtr<Widget> WebFrameLoaderClient::createPlugin(const IntSize& size, HTMLPlugInElement* element, const URL& url,
    18941907    const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually)
     
    19741987
    19751988    if (pluginPackage) {
    1976         if (WKShouldBlockPlugin([pluginPackage bundleIdentifier], [pluginPackage bundleVersion])) {
     1989        if (shouldBlockPlugin(pluginPackage)) {
    19771990            errorCode = WebKitErrorBlockedPlugInVersion;
    19781991            if (is<RenderEmbeddedObject>(element->renderer()))
     
    20792092
    20802093    if (pluginPackage) {
    2081         if (WKShouldBlockPlugin([pluginPackage bundleIdentifier], [pluginPackage bundleVersion])) {
     2094        if (shouldBlockPlugin(pluginPackage)) {
    20822095            errorCode = WebKitErrorBlockedPlugInVersion;
    20832096            if (is<RenderEmbeddedObject>(element->renderer()))
     
    21272140
    21282141#if ENABLE(WEBGL)
     2142static bool shouldBlockWebGL()
     2143{
     2144#if PLATFORM(MAC)
     2145    return WebGLBlacklist::shouldBlockWebGL();
     2146#else
     2147    return false;
     2148#endif
     2149}
     2150
    21292151WebCore::WebGLLoadPolicy WebFrameLoaderClient::webGLPolicyForURL(const String&) const
    21302152{
    2131     return WKShouldBlockWebGL() ? WebGLBlockCreation : WebGLAllowCreation;
     2153    return shouldBlockWebGL() ? WebGLBlockCreation : WebGLAllowCreation;
    21322154}
    21332155
    21342156WebCore::WebGLLoadPolicy WebFrameLoaderClient::resolveWebGLPolicyForURL(const String&) const
    21352157{
    2136     return WKShouldBlockWebGL() ? WebGLBlockCreation : WebGLAllowCreation;
     2158    return shouldBlockWebGL() ? WebGLBlockCreation : WebGLAllowCreation;
    21372159}
    21382160#endif // ENABLE(WEBGL)
  • trunk/Source/WebKit2/ChangeLog

    r204461 r204462  
     12016-08-12  Anders Carlsson  <andersca@apple.com>
     2
     3        Move the plug-in and WebGL blacklist code to WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=160831
     5
     6        Reviewed by Sam Weinig.
     7
     8        Adopt the plug-in and WebGL blacklist code from WebCore instead of using the code from WebKitSystemInterface.
     9
     10        * Shared/Plugins/Netscape/mac/PluginInformationMac.mm:
     11        (WebKit::getPlatformPluginModuleInformation):
     12        * Shared/Plugins/PluginModuleInfo.h:
     13        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
     14        (WKContextIsPlugInUpdateAvailable):
     15        (WKContextShouldBlockWebGL):
     16        (WKContextShouldSuggestBlockWebGL):
     17        * UIProcess/Plugins/PluginInfoStore.h:
     18        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
     19        (WebKit::shouldBlockPlugin):
     20        (WebKit::PluginInfoStore::defaultLoadPolicyForPlugin):
     21        (WebKit::WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy): Deleted.
     22        * UIProcess/WebPageProxy.cpp:
     23        (WebKit::WebPageProxy::findPlugin):
     24
    1252016-08-10  Brent Fulgham  <bfulgham@apple.com>
    226
  • trunk/Source/WebKit2/Shared/Plugins/Netscape/mac/PluginInformationMac.mm

    r177699 r204462  
    3333#import "PluginModuleInfo.h"
    3434#import "StringUtilities.h"
    35 #import <WebKitSystemInterface.h>
     35#import <WebCore/PluginBlacklist.h>
     36
     37using namespace WebCore;
    3638
    3739namespace WebKit {
     
    4244    map.set(pluginInformationBundleVersionKey(), API::String::create(plugin.versionString));
    4345    map.set(pluginInformationBundleShortVersionKey(), API::String::create(plugin.shortVersionString));
    44     map.set(pluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey(), API::Boolean::create(WKIsPluginUpdateAvailable(nsStringFromWebCoreString(plugin.bundleIdentifier))));
     46    map.set(pluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey(), API::Boolean::create(WebCore::PluginBlacklist::isPluginUpdateAvailable(nsStringFromWebCoreString(plugin.bundleIdentifier))));
    4547    map.set(pluginInformationHasSandboxProfileKey(), API::Boolean::create(plugin.hasSandboxProfile));
    4648}
  • trunk/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h

    r196505 r204462  
    2424 */
    2525
    26 #ifndef PluginModuleInfo_h
    27 #define PluginModuleInfo_h
     26#pragma once
    2827
    2928#include <WebCore/PluginData.h>
     
    6463
    6564} // namespace WebKit
    66 
    67 #endif // PluginModuleInfo_h
  • trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm

    r203674 r204462  
    3939#import "WKStringCF.h"
    4040#import "WebProcessPool.h"
    41 #import <WebKitSystemInterface.h>
     41#import <WebCore/PluginBlacklist.h>
     42#import <WebCore/WebGLBlacklist.h>
    4243#import <wtf/RetainPtr.h>
    4344
     
    4950    return false;
    5051#else
    51     return WKIsPluginUpdateAvailable((NSString *)adoptCF(WKStringCopyCFString(kCFAllocatorDefault, plugInBundleIdentifierRef)).get());
     52    return WebCore::PluginBlacklist::isPluginUpdateAvailable((NSString *)adoptCF(WKStringCopyCFString(kCFAllocatorDefault, plugInBundleIdentifierRef)).get());
    5253#endif
    5354}
     
    157158bool WKContextShouldBlockWebGL()
    158159{
    159     return WKShouldBlockWebGL();
     160#if PLATFORM(MAC)
     161    return WebCore::WebGLBlacklist::shouldBlockWebGL();
     162#else
     163    return false;
     164#endif
    160165}
    161166
    162167bool WKContextShouldSuggestBlockWebGL()
    163168{
    164     return WKShouldSuggestBlockingWebGL();
     169#if PLATFORM(MAC)
     170    return WebCore::WebGLBlacklist::shouldSuggestBlockingWebGL();
     171#else
     172    return false;
     173#endif
    165174}
  • trunk/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm

    r187047 r204462  
    3232#import "NetscapePluginModule.h"
    3333#import "SandboxUtilities.h"
    34 #import "WebKitSystemInterface.h"
     34#import <WebCore/PluginBlacklist.h>
    3535#import <WebCore/WebCoreNSStringExtras.h>
    3636#import <wtf/HashSet.h>
     
    7777{
    7878    PluginModuleLoadPolicy loadPolicy = PluginInfoStore::defaultLoadPolicyForPlugin(plugin);
    79     return (loadPolicy == PluginModuleBlockedForSecurity) || (loadPolicy == PluginModuleBlockedForCompatibility);
     79    return loadPolicy == PluginModuleBlockedForSecurity || loadPolicy == PluginModuleBlockedForCompatibility;
    8080}
    8181
     
    109109}
    110110
    111 inline PluginModuleLoadPolicy WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy(WKPlugInModuleLoadPolicy wksiPolicy)
    112 {
    113 
    114     switch (wksiPolicy) {
    115         case WKPlugInModuleLoadPolicyLoadNormally:
    116             return PluginModuleLoadNormally;
    117         case WKPlugInModuleLoadPolicyLoadUnsandboxed:
    118             return PluginModuleLoadUnsandboxed;
    119         case WKPlugInModuleLoadPolicyBlockedForSecurity:
    120             return PluginModuleBlockedForSecurity;
    121         case WKPlugInModuleLoadPolicyBlockedForCompatibility:
    122             return PluginModuleBlockedForCompatibility;
    123     }
    124 
    125     ASSERT_NOT_REACHED();
    126     return PluginModuleBlockedForSecurity;
    127 }
    128 
    129111PluginModuleLoadPolicy PluginInfoStore::defaultLoadPolicyForPlugin(const PluginModuleInfo& plugin)
    130112{
    131     return WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy(WKLoadPolicyForPluginVersion(plugin.bundleIdentifier, plugin.versionString));
     113    switch (PluginBlacklist::loadPolicyForPluginVersion(plugin.bundleIdentifier, plugin.versionString)) {
     114    case PluginBlacklist::LoadPolicy::LoadNormally:
     115        return PluginModuleLoadNormally;
     116    case PluginBlacklist::LoadPolicy::BlockedForSecurity:
     117        return PluginModuleBlockedForSecurity;
     118    case PluginBlacklist::LoadPolicy::BlockedForCompatibility:
     119        return PluginModuleBlockedForCompatibility;
     120    }
    132121}
    133122
Note: See TracChangeset for help on using the changeset viewer.