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)