Title: [144554] branches/safari-534.59-branch/Source/WebKit2
Revision
144554
Author
[email protected]
Date
2013-03-02 22:24:14 -0800 (Sat, 02 Mar 2013)

Log Message

Merge r141923

    2013-02-05  Anders Carlsson  <[email protected]>

    WebKit clients should be able to override loading of blocked plug-ins
    https://bugs.webkit.org/show_bug.cgi?id=108968
    <rdar://problem/13154516>

    Reviewed by Sam Weinig.

    Replace the shouldInstantiatePlugin callback with a new pluginLoadPolicy which is called regardless
    of whether the plug-in is blocked or not. This lets clients override the plug-in load policy and
    force loading of blacklisted plug-ins (and vice versa).

    * UIProcess/API/C/WKPage.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::getPluginPath):
    * UIProcess/WebUIClient.cpp:
    (WebKit::toWKPluginLoadPolicy):
    (WebKit):
    (WebKit::toPluginModuleLoadPolicy):
    (WebKit::WebUIClient::pluginLoadPolicy):
    * UIProcess/WebUIClient.h:
    (WebUIClient):

Modified Paths

Diff

Modified: branches/safari-534.59-branch/Source/WebKit2/ChangeLog (144553 => 144554)


--- branches/safari-534.59-branch/Source/WebKit2/ChangeLog	2013-03-03 05:55:53 UTC (rev 144553)
+++ branches/safari-534.59-branch/Source/WebKit2/ChangeLog	2013-03-03 06:24:14 UTC (rev 144554)
@@ -1,5 +1,32 @@
 2013-03-02  Brady Eidson  <[email protected]>
 
+        Merge r141923
+
+    2013-02-05  Anders Carlsson  <[email protected]>
+
+            WebKit clients should be able to override loading of blocked plug-ins
+            https://bugs.webkit.org/show_bug.cgi?id=108968
+            <rdar://problem/13154516>
+
+            Reviewed by Sam Weinig.
+
+            Replace the shouldInstantiatePlugin callback with a new pluginLoadPolicy which is called regardless
+            of whether the plug-in is blocked or not. This lets clients override the plug-in load policy and
+            force loading of blacklisted plug-ins (and vice versa).
+
+            * UIProcess/API/C/WKPage.h:
+            * UIProcess/WebPageProxy.cpp:
+            (WebKit::WebPageProxy::getPluginPath):
+            * UIProcess/WebUIClient.cpp:
+            (WebKit::toWKPluginLoadPolicy):
+            (WebKit):
+            (WebKit::toPluginModuleLoadPolicy):
+            (WebKit::WebUIClient::pluginLoadPolicy):
+            * UIProcess/WebUIClient.h:
+            (WebUIClient):
+
+2013-03-02  Brady Eidson  <[email protected]>
+
         Merge r141486
 
     2013-01-31  Brian Weinstein  <[email protected]>

Modified: branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.h (144553 => 144554)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.h	2013-03-03 05:55:53 UTC (rev 144553)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.h	2013-03-03 06:24:14 UTC (rev 144554)
@@ -163,6 +163,13 @@
 };
 typedef uint32_t WKPluginUnavailabilityReason;
 
+enum {
+    kWKPluginLoadPolicyLoadNormally = 0,
+    kWKPluginLoadPolicyBlocked,
+    kWKPluginLoadPolicyInactive,
+};
+typedef uint32_t WKPluginLoadPolicy;
+
 // UI Client
 typedef WKPageRef (*WKPageCreateNewPageCallback)(WKPageRef page, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo);
 typedef void (*WKPageRunJavaScriptAlertCallback)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void *clientInfo);
@@ -198,7 +205,7 @@
 typedef void (*WKPageSaveDataToFileInDownloadsFolderCallback)(WKPageRef page, WKStringRef suggestedFilename, WKStringRef mimeType, WKURLRef originatingURL, WKDataRef data, const void* clientInfo);
 typedef bool (*WKPageShouldInterruptJavaScriptCallback)(WKPageRef page, const void *clientInfo);
 typedef void (*WKPageUnavailablePluginButtonClickedCallback)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
-typedef bool (*WKPageShouldInstantiatePluginCallback)(WKPageRef page, WKStringRef identifier, WKStringRef displayName, const void* clientInfo);
+typedef WKPluginLoadPolicy (*WKPagePluginLoadPolicyCallback)(WKPageRef page, WKStringRef identifier, WKStringRef displayName, WKPluginLoadPolicy currentPluginLoadPolicy, const void* clientInfo);
 
 // Deprecated
 typedef void (*WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
@@ -246,7 +253,7 @@
     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
     WKPageShouldInterruptJavaScriptCallback                             shouldInterruptJavaScript;
     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
-    WKPageShouldInstantiatePluginCallback                               shouldInstantiatePlugin;
+    WKPagePluginLoadPolicyCallback                                      pluginLoadPolicy;
 };
 typedef struct WKPageUIClient WKPageUIClient;
 

Modified: branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp (144553 => 144554)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-03-03 05:55:53 UTC (rev 144553)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-03-03 06:24:14 UTC (rev 144554)
@@ -932,10 +932,10 @@
         return;
 
     pluginLoadPolicy = PluginInfoStore::policyForPlugin(plugin);
-    if (pluginLoadPolicy != PluginModuleLoadNormally)
-        return;
 
-    pluginLoadPolicy = m_uiClient.shouldInstantiatePlugin(this, plugin.bundleIdentifier, plugin.info.name) ? PluginModuleLoadNormally : PluginModuleBlocked;
+    PluginModuleLoadPolicy currentPluginLoadPolicy = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy);
+    pluginLoadPolicy = m_uiClient.pluginLoadPolicy(this, plugin.bundleIdentifier, plugin.info.name, currentPluginLoadPolicy);
+
     if (pluginLoadPolicy != PluginModuleLoadNormally)
         return;
 

Modified: branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.cpp (144553 => 144554)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.cpp	2013-03-03 05:55:53 UTC (rev 144553)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.cpp	2013-03-03 06:24:14 UTC (rev 144554)
@@ -399,12 +399,42 @@
     return m_client.shouldInterruptJavaScript(toAPI(page), m_client.clientInfo);
 }
 
-bool WebUIClient::shouldInstantiatePlugin(WebPageProxy* page, const String& identifier, const String& displayName)
+static inline WKPluginLoadPolicy toWKPluginLoadPolicy(PluginModuleLoadPolicy pluginModuleLoadPolicy)
 {
-    if (!m_client.shouldInstantiatePlugin)
-        return true;
+    switch (pluginModuleLoadPolicy) {
+    case PluginModuleLoadNormally:
+        return kWKPluginLoadPolicyLoadNormally;
+    case PluginModuleBlocked:
+        return kWKPluginLoadPolicyBlocked;
+    case PluginModuleInactive:
+        return kWKPluginLoadPolicyInactive;
+    }
 
-    return m_client.shouldInstantiatePlugin(toAPI(page), toAPI(identifier.impl()), toAPI(displayName.impl()), m_client.clientInfo);
+    ASSERT_NOT_REACHED();
+    return kWKPluginLoadPolicyBlocked;
 }
 
+static inline PluginModuleLoadPolicy toPluginModuleLoadPolicy(WKPluginLoadPolicy pluginLoadPolicy)
+{
+    switch (pluginLoadPolicy) {
+    case kWKPluginLoadPolicyLoadNormally:
+        return PluginModuleLoadNormally;
+    case kWKPluginLoadPolicyBlocked:
+        return PluginModuleBlocked;
+    case kWKPluginLoadPolicyInactive:
+        return PluginModuleInactive;
+    }
+
+    ASSERT_NOT_REACHED();
+    return PluginModuleBlocked;
+}
+
+PluginModuleLoadPolicy WebUIClient::pluginLoadPolicy(WebPageProxy* page, const String& identifier, const String& displayName, PluginModuleLoadPolicy currentPluginLoadPolicy)
+{
+    if (!m_client.pluginLoadPolicy)
+        return currentPluginLoadPolicy;
+
+    return toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(page), toAPI(identifier.impl()), toAPI(displayName.impl()), toWKPluginLoadPolicy(currentPluginLoadPolicy), m_client.clientInfo));
+}
+
 } // namespace WebKit

Modified: branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.h (144553 => 144554)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.h	2013-03-03 05:55:53 UTC (rev 144553)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.h	2013-03-03 06:24:14 UTC (rev 144554)
@@ -27,6 +27,7 @@
 #define WebUIClient_h
 
 #include "APIClient.h"
+#include "PluginModuleInfo.h"
 #include "WKPage.h"
 #include "WebEvent.h"
 #include "WebOpenPanelParameters.h"
@@ -114,7 +115,7 @@
 
     bool shouldInterruptJavaScript(WebPageProxy*);
 
-    bool shouldInstantiatePlugin(WebPageProxy*, const String& identifier, const String& displayName);
+    PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy*, const String& identifier, const String& displayName, PluginModuleLoadPolicy currentPluginLoadPolicy);
 };
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to