Title: [187084] branches/safari-601.1-branch/Source/WebKit2

Diff

Modified: branches/safari-601.1-branch/Source/WebKit2/ChangeLog (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/ChangeLog	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/ChangeLog	2015-07-21 04:38:11 UTC (rev 187084)
@@ -1,5 +1,50 @@
 2015-07-20  Matthew Hanson  <matthew_han...@apple.com>
 
+        Merge r187047. rdar://problem/20860410
+
+    2015-07-20  Gordon Sheridan  <gordon_sheri...@apple.com>
+
+            Support blocking a plug-in for non-security reasons
+            https://bugs.webkit.org/show_bug.cgi?id=145009
+
+            Reviewed by Anders Carlsson.
+
+            * Shared/Plugins/PluginModuleInfo.h:
+            Replace PluginModuleBlocked with separate enum values for blocking for security and compatibility.
+
+            * UIProcess/API/C/WKAPICast.h:
+            (WebKit::toWKPluginLoadPolicy):
+            Modify to handle change to PluginModuleBlocked enum.
+
+            (WebKit::toPluginModuleLoadPolicy):
+            Ditto.
+
+            * UIProcess/API/C/WKPluginLoadPolicy.h:
+            Added enum value for blocking a plugin for compatibility reasons.
+
+            * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
+            (WebKit::shouldBlockPlugin):
+            Check load policy for both reasons a plugin may be blocked.
+
+            (WebKit::WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy):
+            Added function to convert between load policy enum types.
+
+            (WebKit::PluginInfoStore::defaultLoadPolicyForPlugin):
+            Modified to call WKLoadPolicyForPluginVersion() which can distinguish between blocked for security or compatibility.
+
+            * UIProcess/WebPageProxy.cpp:
+            (WebKit::WebPageProxy::findPlugin):
+            Updated to recognize both PluginModuleBlocked enum values that indicate a plugin is blocked.
+
+            * WebProcess/WebPage/WebPage.cpp:
+            (WebKit::WebPage::createPlugin):
+            Ditto.
+
+            (WebKit::WebPage::canPluginHandleResponse):
+            Ditto.
+
+2015-07-20  Matthew Hanson  <matthew_han...@apple.com>
+
         Merge r187023. rdar://problem/21799011
 
     2015-07-16  Anders Carlsson  <ander...@apple.com>

Modified: branches/safari-601.1-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/Shared/Plugins/PluginModuleInfo.h	2015-07-21 04:38:11 UTC (rev 187084)
@@ -43,7 +43,8 @@
 
     // The plug-in should be blocked from being instantiated.
     // Note that the plug-in will still be seen by e.g. navigator.plugins
-    PluginModuleBlocked,
+    PluginModuleBlockedForSecurity,
+    PluginModuleBlockedForCompatibility,
 };
 
 struct PluginModuleInfo {

Modified: branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2015-07-21 04:38:11 UTC (rev 187084)
@@ -469,8 +469,10 @@
         return kWKPluginLoadPolicyLoadNormally;
     case PluginModuleLoadUnsandboxed:
         return kWKPluginLoadPolicyLoadUnsandboxed;
-    case PluginModuleBlocked:
+    case PluginModuleBlockedForSecurity:
         return kWKPluginLoadPolicyBlocked;
+    case PluginModuleBlockedForCompatibility:
+        return kWKPluginLoadPolicyBlockedForCompatibility;
     }
     
     ASSERT_NOT_REACHED();
@@ -502,13 +504,15 @@
     case kWKPluginLoadPolicyLoadNormally:
         return PluginModuleLoadNormally;
     case kWKPluginLoadPolicyBlocked:
-        return PluginModuleBlocked;
+        return PluginModuleBlockedForSecurity;
+    case kWKPluginLoadPolicyBlockedForCompatibility:
+        return PluginModuleBlockedForCompatibility;
     case kWKPluginLoadPolicyLoadUnsandboxed:
         return PluginModuleLoadUnsandboxed;
     }
     
     ASSERT_NOT_REACHED();
-    return PluginModuleBlocked;
+    return PluginModuleBlockedForSecurity;
 }
 
 inline WebCore::PluginLoadClientPolicy toPluginLoadClientPolicy(WKPluginLoadClientPolicy pluginLoadClientPolicy)

Modified: branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h	2015-07-21 04:38:11 UTC (rev 187084)
@@ -37,6 +37,7 @@
     kWKPluginLoadPolicyBlocked,
     kWKPluginLoadPolicyInactive,
     kWKPluginLoadPolicyLoadUnsandboxed,
+    kWKPluginLoadPolicyBlockedForCompatibility,
 };
 typedef uint32_t WKPluginLoadPolicy;
 

Modified: branches/safari-601.1-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm	2015-07-21 04:38:11 UTC (rev 187084)
@@ -75,7 +75,8 @@
 
 static bool shouldBlockPlugin(const PluginModuleInfo& plugin)
 {
-    return PluginInfoStore::defaultLoadPolicyForPlugin(plugin) == PluginModuleBlocked;
+    PluginModuleLoadPolicy loadPolicy = PluginInfoStore::defaultLoadPolicyForPlugin(plugin);
+    return (loadPolicy == PluginModuleBlockedForSecurity) || (loadPolicy == PluginModuleBlockedForCompatibility);
 }
 
 bool PluginInfoStore::shouldUsePlugin(Vector<PluginModuleInfo>& alreadyLoadedPlugins, const PluginModuleInfo& plugin)
@@ -107,14 +108,29 @@
     return true;
 }
 
-PluginModuleLoadPolicy PluginInfoStore::defaultLoadPolicyForPlugin(const PluginModuleInfo& plugin)
+inline PluginModuleLoadPolicy WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy(WKPlugInModuleLoadPolicy wksiPolicy)
 {
-    if (WKShouldBlockPlugin(plugin.bundleIdentifier, plugin.versionString))
-        return PluginModuleBlocked;
 
-    return PluginModuleLoadNormally;
+    switch (wksiPolicy) {
+        case WKPlugInModuleLoadPolicyLoadNormally:
+            return PluginModuleLoadNormally;
+        case WKPlugInModuleLoadPolicyLoadUnsandboxed:
+            return PluginModuleLoadUnsandboxed;
+        case WKPlugInModuleLoadPolicyBlockedForSecurity:
+            return PluginModuleBlockedForSecurity;
+        case WKPlugInModuleLoadPolicyBlockedForCompatibility:
+            return PluginModuleBlockedForCompatibility;
+    }
+
+    ASSERT_NOT_REACHED();
+    return PluginModuleBlockedForSecurity;
 }
 
+PluginModuleLoadPolicy PluginInfoStore::defaultLoadPolicyForPlugin(const PluginModuleInfo& plugin)
+{
+    return WKPlugInModuleLoadPolicyToPluginModuleLoadPolicy(WKLoadPolicyForPluginVersion(plugin.bundleIdentifier, plugin.versionString));
+}
+
 PluginModuleInfo PluginInfoStore::findPluginWithBundleIdentifier(const String& bundleIdentifier)
 {
     loadPluginsIfNecessary();

Modified: branches/safari-601.1-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-07-21 04:38:11 UTC (rev 187084)
@@ -1887,7 +1887,8 @@
         pluginProcessSandboxPolicy = PluginProcessSandboxPolicyUnsandboxed;
         break;
 
-    case PluginModuleBlocked:
+    case PluginModuleBlockedForSecurity:
+    case PluginModuleBlockedForCompatibility:
         pluginProcessToken = 0;
         return;
     }

Modified: branches/safari-601.1-branch/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (187083 => 187084)


--- branches/safari-601.1-branch/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-07-21 04:38:07 UTC (rev 187083)
+++ branches/safari-601.1-branch/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-07-21 04:38:11 UTC (rev 187084)
@@ -710,7 +710,8 @@
     if (!sendSync(Messages::WebPageProxy::FindPlugin(parameters.mimeType, static_cast<uint32_t>(processType), parameters.url.string(), frameURLString, pageURLString, allowOnlyApplicationPlugins), Messages::WebPageProxy::FindPlugin::Reply(pluginProcessToken, newMIMEType, pluginLoadPolicy, unavailabilityDescription)))
         return nullptr;
 
-    bool isBlockedPlugin = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy) == PluginModuleBlocked;
+    PluginModuleLoadPolicy loadPolicy = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy);
+    bool isBlockedPlugin = (loadPolicy == PluginModuleBlockedForSecurity) || (loadPolicy == PluginModuleBlockedForCompatibility);
 
     if (isBlockedPlugin || !pluginProcessToken) {
 #if ENABLE(PDFKIT_PLUGIN)
@@ -4243,7 +4244,8 @@
     if (!sendSync(Messages::WebPageProxy::FindPlugin(response.mimeType(), PluginProcessTypeNormal, response.url().string(), response.url().string(), response.url().string(), allowOnlyApplicationPlugins), Messages::WebPageProxy::FindPlugin::Reply(pluginProcessToken, newMIMEType, pluginLoadPolicy, unavailabilityDescription)))
         return false;
 
-    return pluginLoadPolicy != PluginModuleBlocked && pluginProcessToken;
+    bool isBlockedPlugin = (pluginLoadPolicy == PluginModuleBlockedForSecurity) || (pluginLoadPolicy == PluginModuleBlockedForCompatibility);
+    return !isBlockedPlugin && pluginProcessToken;
 #else
     UNUSED_PARAM(response);
     return false;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to