Changeset 187084 in webkit


Ignore:
Timestamp:
Jul 20, 2015 9:38:11 PM (9 years ago)
Author:
matthew_hanson@apple.com
Message:

Merge r187047. rdar://problem/20860410

Location:
branches/safari-601.1-branch/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-601.1-branch/Source/WebKit2/ChangeLog

    r187078 r187084  
     12015-07-20  Matthew Hanson  <matthew_hanson@apple.com>
     2
     3        Merge r187047. rdar://problem/20860410
     4
     5    2015-07-20  Gordon Sheridan  <gordon_sheridan@apple.com>
     6
     7            Support blocking a plug-in for non-security reasons
     8            https://bugs.webkit.org/show_bug.cgi?id=145009
     9
     10            Reviewed by Anders Carlsson.
     11
     12            * Shared/Plugins/PluginModuleInfo.h:
     13            Replace PluginModuleBlocked with separate enum values for blocking for security and compatibility.
     14
     15            * UIProcess/API/C/WKAPICast.h:
     16            (WebKit::toWKPluginLoadPolicy):
     17            Modify to handle change to PluginModuleBlocked enum.
     18
     19            (WebKit::toPluginModuleLoadPolicy):
     20            Ditto.
     21
     22            * UIProcess/API/C/WKPluginLoadPolicy.h:
     23            Added enum value for blocking a plugin for compatibility reasons.
     24
     25            * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
     26            (WebKit::shouldBlockPlugin):
     27            Check load policy for both reasons a plugin may be blocked.
     28
     29            (WebKit::WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy):
     30            Added function to convert between load policy enum types.
     31
     32            (WebKit::PluginInfoStore::defaultLoadPolicyForPlugin):
     33            Modified to call WKLoadPolicyForPluginVersion() which can distinguish between blocked for security or compatibility.
     34
     35            * UIProcess/WebPageProxy.cpp:
     36            (WebKit::WebPageProxy::findPlugin):
     37            Updated to recognize both PluginModuleBlocked enum values that indicate a plugin is blocked.
     38
     39            * WebProcess/WebPage/WebPage.cpp:
     40            (WebKit::WebPage::createPlugin):
     41            Ditto.
     42
     43            (WebKit::WebPage::canPluginHandleResponse):
     44            Ditto.
     45
    1462015-07-20  Matthew Hanson  <matthew_hanson@apple.com>
    247
  • branches/safari-601.1-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h

    r169457 r187084  
    4444    // The plug-in should be blocked from being instantiated.
    4545    // Note that the plug-in will still be seen by e.g. navigator.plugins
    46     PluginModuleBlocked,
     46    PluginModuleBlockedForSecurity,
     47    PluginModuleBlockedForCompatibility,
    4748};
    4849
  • branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h

    r186484 r187084  
    470470    case PluginModuleLoadUnsandboxed:
    471471        return kWKPluginLoadPolicyLoadUnsandboxed;
    472     case PluginModuleBlocked:
     472    case PluginModuleBlockedForSecurity:
    473473        return kWKPluginLoadPolicyBlocked;
     474    case PluginModuleBlockedForCompatibility:
     475        return kWKPluginLoadPolicyBlockedForCompatibility;
    474476    }
    475477   
     
    503505        return PluginModuleLoadNormally;
    504506    case kWKPluginLoadPolicyBlocked:
    505         return PluginModuleBlocked;
     507        return PluginModuleBlockedForSecurity;
     508    case kWKPluginLoadPolicyBlockedForCompatibility:
     509        return PluginModuleBlockedForCompatibility;
    506510    case kWKPluginLoadPolicyLoadUnsandboxed:
    507511        return PluginModuleLoadUnsandboxed;
     
    509513   
    510514    ASSERT_NOT_REACHED();
    511     return PluginModuleBlocked;
     515    return PluginModuleBlockedForSecurity;
    512516}
    513517
  • branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h

    r182097 r187084  
    3838    kWKPluginLoadPolicyInactive,
    3939    kWKPluginLoadPolicyLoadUnsandboxed,
     40    kWKPluginLoadPolicyBlockedForCompatibility,
    4041};
    4142typedef uint32_t WKPluginLoadPolicy;
  • branches/safari-601.1-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm

    r169457 r187084  
    7676static bool shouldBlockPlugin(const PluginModuleInfo& plugin)
    7777{
    78     return PluginInfoStore::defaultLoadPolicyForPlugin(plugin) == PluginModuleBlocked;
     78    PluginModuleLoadPolicy loadPolicy = PluginInfoStore::defaultLoadPolicyForPlugin(plugin);
     79    return (loadPolicy == PluginModuleBlockedForSecurity) || (loadPolicy == PluginModuleBlockedForCompatibility);
    7980}
    8081
     
    108109}
    109110
     111inline 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
    110129PluginModuleLoadPolicy PluginInfoStore::defaultLoadPolicyForPlugin(const PluginModuleInfo& plugin)
    111130{
    112     if (WKShouldBlockPlugin(plugin.bundleIdentifier, plugin.versionString))
    113         return PluginModuleBlocked;
    114 
    115     return PluginModuleLoadNormally;
     131    return WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy(WKLoadPolicyForPluginVersion(plugin.bundleIdentifier, plugin.versionString));
    116132}
    117133
  • branches/safari-601.1-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r187067 r187084  
    18881888        break;
    18891889
    1890     case PluginModuleBlocked:
     1890    case PluginModuleBlockedForSecurity:
     1891    case PluginModuleBlockedForCompatibility:
    18911892        pluginProcessToken = 0;
    18921893        return;
  • branches/safari-601.1-branch/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r187073 r187084  
    711711        return nullptr;
    712712
    713     bool isBlockedPlugin = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy) == PluginModuleBlocked;
     713    PluginModuleLoadPolicy loadPolicy = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy);
     714    bool isBlockedPlugin = (loadPolicy == PluginModuleBlockedForSecurity) || (loadPolicy == PluginModuleBlockedForCompatibility);
    714715
    715716    if (isBlockedPlugin || !pluginProcessToken) {
     
    42444245        return false;
    42454246
    4246     return pluginLoadPolicy != PluginModuleBlocked && pluginProcessToken;
     4247    bool isBlockedPlugin = (pluginLoadPolicy == PluginModuleBlockedForSecurity) || (pluginLoadPolicy == PluginModuleBlockedForCompatibility);
     4248    return !isBlockedPlugin && pluginProcessToken;
    42474249#else
    42484250    UNUSED_PARAM(response);
Note: See TracChangeset for help on using the changeset viewer.