Title: [147512] branches/safari-536.29-branch/Source/WebKit2

Diff

Modified: branches/safari-536.29-branch/Source/WebKit2/ChangeLog (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/ChangeLog	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/ChangeLog	2013-04-03 00:35:37 UTC (rev 147512)
@@ -1,3 +1,41 @@
+2013-04-02  Lucas Forschler  <[email protected]>
+
+        Merge r147052
+
+    2013-03-27  Sam Weinig  <[email protected]>
+
+            [WebKit2] Need SPI to determine whether a plug-in is blocked
+            https://bugs.webkit.org/show_bug.cgi?id=113463
+
+            Reviewed by Anders Carlsson.
+
+            Add new SPI, WKContextCopyPlugInInfoForBundleIdetifier, to get data about a plug-in,
+            including whether it is blocked by x-protect.
+
+            * UIProcess/WebLoaderClient.cpp:
+            * UIProcess/API/C/WKAPICast.h:
+            (WebKit::toWKPluginLoadPolicy):
+            (WebKit::toPluginModuleLoadPolicy):
+            Move to a shared location.
+
+            * UIProcess/API/C/mac/WKContextPrivateMac.h:
+            * UIProcess/API/C/mac/WKContextPrivateMac.mm:
+            (WKContextIsPlugInUpdateAvailable):
+            (WKPlugInInfoPathKey):
+            (WKPlugInInfoBundleIdentifierKey):
+            (WKPlugInInfoVersionKey):
+            (WKPlugInInfoLoadPolicyKey):
+            (WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey):
+            (WKContextCopyPlugInInfoForBundleIdetifier):
+            Add new SPI and dictionary keys.
+
+            * UIProcess/Plugins/PluginInfoStore.cpp:
+            (WebKit::PluginInfoStore::findPluginWithBundleIdentifer):
+            * UIProcess/Plugins/PluginInfoStore.h:
+            * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
+            (WebKit::PluginInfoStore::findPluginWithBundleIdentifer):
+            Add function to lookup plug-ins by bundle identifier.
+
 2013-03-08  Lucas Forschler  <[email protected]>
 
         Windows build fix #2.

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2013-04-03 00:35:37 UTC (rev 147512)
@@ -30,8 +30,8 @@
 #include "CacheModel.h"
 #include "FontSmoothingLevel.h"
 #include "HTTPCookieAcceptPolicy.h"
+#include "PluginModuleInfo.h"
 #include "ResourceCachesToClear.h"
-#include "WebGrammarDetail.h"
 #include "WKContext.h"
 #include "WKCookieManager.h"
 #include "WKCredentialTypes.h"
@@ -40,8 +40,9 @@
 #include "WKProtectionSpaceTypes.h"
 #include "WKResourceCacheManager.h"
 #include "WKSharedAPICast.h"
+#include "WebGrammarDetail.h"
+#include <WebCore/Credential.h>
 #include <WebCore/CookieJar.h>
-#include <WebCore/Credential.h>
 #include <WebCore/FrameLoaderTypes.h>
 #include <WebCore/ProtectionSpace.h>
 #include <WebCore/Settings.h>
@@ -345,6 +346,36 @@
     return kWKHTTPCookieAcceptPolicyAlways;
 }
 
+inline WKPluginLoadPolicy toWKPluginLoadPolicy(PluginModuleLoadPolicy pluginModuleLoadPolicy)
+{
+    switch (pluginModuleLoadPolicy) {
+    case PluginModuleLoadNormally:
+        return kWKPluginLoadPolicyLoadNormally;
+    case PluginModuleBlocked:
+        return kWKPluginLoadPolicyBlocked;
+    case PluginModuleInactive:
+        return kWKPluginLoadPolicyInactive;
+    }
+    
+    ASSERT_NOT_REACHED();
+    return kWKPluginLoadPolicyBlocked;
+}
+
+inline PluginModuleLoadPolicy toPluginModuleLoadPolicy(WKPluginLoadPolicy pluginLoadPolicy)
+{
+    switch (pluginLoadPolicy) {
+    case kWKPluginLoadPolicyLoadNormally:
+        return PluginModuleLoadNormally;
+    case kWKPluginLoadPolicyBlocked:
+        return PluginModuleBlocked;
+    case kWKPluginLoadPolicyInactive:
+        return PluginModuleInactive;
+    }
+    
+    ASSERT_NOT_REACHED();
+    return PluginModuleBlocked;
+}
+
 inline ProxyingRefPtr<WebGrammarDetail> toAPI(const WebCore::GrammarDetail& grammarDetail)
 {
     return ProxyingRefPtr<WebGrammarDetail>(WebGrammarDetail::create(grammarDetail));

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h	2013-04-03 00:35:37 UTC (rev 147512)
@@ -34,6 +34,24 @@
 
 WK_EXPORT bool WKContextIsPlugInUpdateAvailable(WKContextRef context, WKStringRef plugInBundleIdentifier);
 
+
+/* Value type: WKStringRef */
+WK_EXPORT WKStringRef WKPlugInInfoPathKey();
+
+/* Value type: WKStringRef */
+WK_EXPORT WKStringRef WKPlugInInfoBundleIdentifierKey();
+
+/* Value type: WKStringRef */
+WK_EXPORT WKStringRef WKPlugInInfoVersionKey();
+
+/* Value type: WKUInt64Ref */
+WK_EXPORT WKStringRef WKPlugInInfoLoadPolicyKey();
+
+/* Value type: WKBooleanRef */
+WK_EXPORT WKStringRef WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey();
+
+WK_EXPORT WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef context, WKStringRef plugInBundleIdentifier);
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm	2013-04-03 00:35:37 UTC (rev 147512)
@@ -26,15 +26,68 @@
 #import "config.h"
 #import "WKContextPrivateMac.h"
 
+#import "ImmutableDictionary.h"
+#import "PluginInfoStore.h"
+#import "StringUtilities.h"
 #import "WKAPICast.h"
+#import "WKSharedAPICast.h"
 #import "WKStringCF.h"
 #import "WebContext.h"
+#import "WebNumber.h"
+#import "WebString.h"
 #import <WebKitSystemInterface.h>
 #import <wtf/RetainPtr.h>
 
 using namespace WebKit;
 
-bool WKContextIsPlugInUpdateAvailable(WKContextRef context, WKStringRef plugInBundleIdentifier)
+bool WKContextIsPlugInUpdateAvailable(WKContextRef contextRef, WKStringRef plugInBundleIdentifierRef)
 {
-    return WKIsPluginUpdateAvailable((NSString *)adoptCF(WKStringCopyCFString(kCFAllocatorDefault, plugInBundleIdentifier)).get());
+    return WKIsPluginUpdateAvailable((NSString *)adoptCF(WKStringCopyCFString(kCFAllocatorDefault, plugInBundleIdentifierRef)).get());
 }
+
+
+WKStringRef WKPlugInInfoPathKey()
+{
+    static WebString* key = WebString::createFromUTF8String("WKPlugInInfoPath").leakRef();
+    return toAPI(key);
+}
+
+WKStringRef WKPlugInInfoBundleIdentifierKey()
+{
+    static WebString* key = WebString::createFromUTF8String("WKPlugInInfoBundleIdentifier").leakRef();
+    return toAPI(key);
+}
+
+WKStringRef WKPlugInInfoVersionKey()
+{
+    static WebString* key = WebString::createFromUTF8String("WKPlugInInfoVersion").leakRef();
+    return toAPI(key);
+}
+
+WKStringRef WKPlugInInfoLoadPolicyKey()
+{
+    static WebString* key = WebString::createFromUTF8String("WKPlugInInfoLoadPolicy").leakRef();
+    return toAPI(key);
+}
+
+WKStringRef WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey()
+{
+    static WebString* key = WebString::createFromUTF8String("WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailable").leakRef();
+    return toAPI(key);
+}
+
+WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef contextRef, WKStringRef plugInBundleIdentifierRef)
+{
+    PluginModuleInfo info = toImpl(contextRef)->pluginInfoStore().findPluginWithBundleIdentifier(toWTFString(plugInBundleIdentifierRef));
+    if (info.path.isNull())
+        return 0;
+
+    ImmutableDictionary::MapType map;
+    map.set(toWTFString(WKPlugInInfoPathKey()), WebString::create(info.path));
+    map.set(toWTFString(WKPlugInInfoBundleIdentifierKey()), WebString::create(info.bundleIdentifier));
+    map.set(toWTFString(WKPlugInInfoVersionKey()), WebString::create(info.versionString));
+    map.set(toWTFString(WKPlugInInfoLoadPolicyKey()), WebUInt64::create(toWKPluginLoadPolicy(PluginInfoStore::policyForPlugin(info))));
+    map.set(toWTFString(WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey()), WebBoolean::create(WKIsPluginUpdateAvailable(nsStringFromWebCoreString(info.bundleIdentifier))));
+
+    return toAPI(ImmutableDictionary::adopt(map).leakRef());
+}

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp	2013-04-03 00:35:37 UTC (rev 147512)
@@ -205,6 +205,13 @@
 {
     return MIMETypeRegistry::getMIMETypeForExtension(extension);
 }
+    
+PluginModuleInfo PluginInfoStore::findPluginWithBundleIdentifier(const String&)
+{
+    ASSERT_NOT_REACHED();
+    return PluginModuleInfo();
+}
+
 #endif
 
 PluginModuleInfo PluginInfoStore::findPlugin(String& mimeType, const KURL& url)

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.h (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.h	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/PluginInfoStore.h	2013-04-03 00:35:37 UTC (rev 147512)
@@ -61,7 +61,10 @@
     // If the MIME type is null, the file extension of the given url will be used to infer the
     // plug-in type. In that case, mimeType will be filled in with the right MIME type.
     PluginModuleInfo findPlugin(String& mimeType, const WebCore::KURL&);
-    
+
+    // Returns the info for the plug-in with the given bundle identifier.
+    PluginModuleInfo findPluginWithBundleIdentifier(const String& bundleIdentifier);
+
     // Returns the info for the plug-in with the given path.
     PluginModuleInfo infoForPluginWithPath(const String& pluginPath) const;
 

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm	2013-04-03 00:35:37 UTC (rev 147512)
@@ -173,4 +173,16 @@
     return WKGetMIMETypeForExtension((NSString *)extensionCFString.get());
 }
 
+PluginModuleInfo PluginInfoStore::findPluginWithBundleIdentifier(const String& bundleIdentifier)
+{
+    loadPluginsIfNecessary();
+
+    for (size_t i = 0; i < m_plugins.size(); ++i) {
+        if (m_plugins[i].bundleIdentifier == bundleIdentifier)
+            return m_plugins[i];
+    }
+    
+    return PluginModuleInfo();
+}
+
 } // namespace WebKit

Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp (147511 => 147512)


--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp	2013-04-03 00:34:31 UTC (rev 147511)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp	2013-04-03 00:35:37 UTC (rev 147512)
@@ -288,36 +288,6 @@
     }
 }
 
-static inline WKPluginLoadPolicy toWKPluginLoadPolicy(PluginModuleLoadPolicy pluginModuleLoadPolicy)
-{
-    switch (pluginModuleLoadPolicy) {
-    case PluginModuleLoadNormally:
-        return kWKPluginLoadPolicyLoadNormally;
-    case PluginModuleBlocked:
-        return kWKPluginLoadPolicyBlocked;
-    case PluginModuleInactive:
-        return kWKPluginLoadPolicyInactive;
-    }
-
-    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 WebLoaderClient::pluginLoadPolicy(WebPageProxy* page, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& frameURLString, const String& pageURLString, PluginModuleLoadPolicy currentPluginLoadPolicy)
 {
     if (!m_client.pluginLoadPolicy)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to