Diff
Modified: branches/safari-536.29-branch/Source/WebKit2/ChangeLog (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/ChangeLog 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/ChangeLog 2013-03-01 23:05:27 UTC (rev 144511)
@@ -1,5 +1,62 @@
2013-03-01 Brady Eidson <[email protected]>
+ Merge 143988
+
+ 2013-02-25 Anders Carlsson <[email protected]>
+
+ Add a new unavailablePluginButtonClicked callback that takes a WKDictionary of plug-in information
+ https://bugs.webkit.org/show_bug.cgi?id=110821
+
+ Reviewed by Beth Dakin.
+
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageGetPluginInformationPluginspageAttributeURLKey):
+ (WKPageGetPluginInformationPluginURLKey):
+ Add two new API key getters.
+
+ * UIProcess/API/C/WKPage.h:
+ Add a new callback and deprecate the old callback.
+
+ * UIProcess/WebLoaderClient.cpp:
+ (WebKit::WebLoaderClient::didFailToInitializePlugin):
+ (WebKit::WebLoaderClient::didBlockInsecurePluginVersion):
+ (WebKit::WebLoaderClient::pluginLoadPolicy):
+ Make the pluginInformationDictionary a static member function of WebPageProxy so it
+ can be called from WebUIClient as well.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::getPluginPath):
+ Pass the bundle version as well.
+
+ (WebKit::WebPageProxy::pluginInformationPluginspageAttributeURLKey):
+ (WebKit::WebPageProxy::pluginInformationPluginURLKey):
+ Add two new keys.
+
+ (WebKit::WebPageProxy::pluginInformationDictionary):
+ Handle more keys.
+
+ (WebKit::WebPageProxy::unavailablePluginButtonClicked):
+ Get the plug-in bundle identifier and version.
+
+ * UIProcess/WebPageProxy.messages.in:
+ Pass along more information; the frame and page URLs.
+
+ * UIProcess/WebUIClient.cpp:
+ (WebKit::WebUIClient::unavailablePluginButtonClicked):
+ Call the new callback if it's supported.
+
+ * UIProcess/WebUIClient.h:
+ (WebUIClient):
+ * UIProcess/mac/WebInspectorProxyMac.mm:
+ (WebKit::WebInspectorProxy::platformCreateInspectorPage):
+ Update for API changes.
+
+ * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+ (WebKit::WebChromeClient::unavailablePluginButtonClicked):
+ Ensure that the pluginspage attribute is a valid URL.
+
+2013-03-01 Brady Eidson <[email protected]>
+
Merge 143976
2013-02-25 Anders Carlsson <[email protected]>
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKPage.cpp (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2013-03-01 23:05:27 UTC (rev 144511)
@@ -729,3 +729,15 @@
static WebString* key = WebString::create(WebPageProxy::pluginInformationPageURLKey()).leakRef();
return toAPI(key);
}
+
+WKStringRef WKPageGetPluginInformationPluginspageAttributeURLKey()
+{
+ static WebString* key = WebString::create(WebPageProxy::pluginInformationPluginspageAttributeURLKey()).leakRef();
+ return toAPI(key);
+}
+
+WKStringRef WKPageGetPluginInformationPluginURLKey()
+{
+ static WebString* key = WebString::create(WebPageProxy::pluginInformationPluginURLKey()).leakRef();
+ return toAPI(key);
+}
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKPage.h (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKPage.h 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/API/C/WKPage.h 2013-03-01 23:05:27 UTC (rev 144511)
@@ -231,12 +231,13 @@
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 (*WKPageDecidePolicyForNotificationPermissionRequestCallback)(WKPageRef page, WKSecurityOriginRef origin, WKNotificationPermissionRequestRef permissionRequest, const void *clientInfo);
-typedef void (*WKPageUnavailablePluginButtonClickedCallback)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
+typedef void (*WKPageUnavailablePluginButtonClickedCallback)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKDictionaryRef pluginInfoDictionary, const void* clientInfo);
// Deprecated
typedef WKPageRef (*WKPageCreateNewPageCallback_deprecatedForUseWithV0)(WKPageRef page, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo);
typedef void (*WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0)(WKPageRef page, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo);
typedef void (*WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
+typedef void (*WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
struct WKPageUIClient {
int version;
@@ -287,7 +288,9 @@
WKPageCreateNewPageCallback createNewPage;
WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement;
WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest;
+ WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
WKPageUnavailablePluginButtonClickedCallback unavailablePluginButtonClicked;
+
};
typedef struct WKPageUIClient WKPageUIClient;
@@ -509,7 +512,13 @@
/* Value type: WKURLRef */
WK_EXPORT WKStringRef WKPageGetPluginInformationPageURLKey();
+/* Value type: WKURLRef */
+WK_EXPORT WKStringRef WKPageGetPluginInformationPluginspageAttributeURLKey();
+/* Value type: WKURLRef */
+WK_EXPORT WKStringRef WKPageGetPluginInformationPluginURLKey();
+
+
#ifdef __cplusplus
}
#endif
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp 2013-03-01 23:05:27 UTC (rev 144511)
@@ -266,41 +266,24 @@
m_client.willGoToBackForwardListItem(toAPI(page), toAPI(item), toAPI(userData), m_client.clientInfo);
}
-static PassRefPtr<ImmutableDictionary> pluginInformationDictionary(const String& mimeType, const String& bundleIdentifier, const String& bundleVersion, const String& displayName, const String& frameURLString, const String& pageURLString)
-{
- HashMap<String, RefPtr<APIObject> > pluginInfoMap;
- if (!mimeType.isEmpty())
- pluginInfoMap.set(WebPageProxy::pluginInformationMIMETypeKey(), WebString::create(mimeType));
- if (!bundleIdentifier.isEmpty())
- pluginInfoMap.set(WebPageProxy::pluginInformationBundleIdentifierKey(), WebString::create(bundleIdentifier));
- if (!displayName.isEmpty())
- pluginInfoMap.set(WebPageProxy::pluginInformationDisplayNameKey(), WebString::create(displayName));
- if (!frameURLString.isEmpty())
- pluginInfoMap.set(WebPageProxy::pluginInformationFrameURLKey(), WebURL::create(frameURLString));
- if (!pageURLString.isEmpty())
- pluginInfoMap.set(WebPageProxy::pluginInformationPageURLKey(), WebURL::create(pageURLString));
-
- return ImmutableDictionary::adopt(pluginInfoMap);
-}
-
void WebLoaderClient::didFailToInitializePlugin(WebPageProxy* page, const String& mimeType, const String& frameURLString, const String& pageURLString)
{
if (m_client.pluginDidFail_deprecatedForUseWithV1)
m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(mimeType.impl()), 0, 0, m_client.clientInfo);
if (m_client.pluginDidFail) {
- RefPtr<ImmutableDictionary> pluginInformation = pluginInformationDictionary(mimeType, String(), String(), String(), frameURLString, pageURLString);
+ RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(String(), String(), String(), frameURLString, mimeType, pageURLString, String(), String());
m_client.pluginDidFail(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation.get()), m_client.clientInfo);
}
}
-void WebLoaderClient::didBlockInsecurePluginVersion(WebPageProxy* page, const String& mimeType, const String& bundleIdentifier, const String& bundleVersion, const String& frameURLString, const String& pageURLString)
+void WebLoaderClient::didBlockInsecurePluginVersion(WebPageProxy* page, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& frameURLString, const String& pageURLString)
{
if (m_client.pluginDidFail_deprecatedForUseWithV1)
- m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeInsecurePlugInVersion, toAPI(mimeType.impl()), toAPI(bundleIdentifier.impl()), toAPI(bundleVersion.impl()), m_client.clientInfo);
+ m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeInsecurePlugInVersion, toAPI(mimeType.impl()), toAPI(pluginBundleIdentifier.impl()), toAPI(pluginBundleVersion.impl()), m_client.clientInfo);
if (m_client.pluginDidFail) {
- RefPtr<ImmutableDictionary> pluginInformation = pluginInformationDictionary(mimeType, bundleIdentifier, bundleVersion, String(), frameURLString, pageURLString);
+ RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(pluginBundleIdentifier, pluginBundleVersion, String(), frameURLString, mimeType, pageURLString, String(), String());
m_client.pluginDidFail(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation.get()), m_client.clientInfo);
}
}
@@ -335,12 +318,12 @@
return PluginModuleBlocked;
}
-PluginModuleLoadPolicy WebLoaderClient::pluginLoadPolicy(WebPageProxy* page, const String& identifier, const String& displayName, const String& frameURLString, const String& pageURLString, PluginModuleLoadPolicy currentPluginLoadPolicy)
+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)
return currentPluginLoadPolicy;
- RefPtr<ImmutableDictionary> pluginInformation = pluginInformationDictionary(String(), identifier, String(), displayName, frameURLString, pageURLString);
+ RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(pluginBundleIdentifier, pluginBundleVersion, displayName, frameURLString, String(), pageURLString, String(), String());
return toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation.get()), m_client.clientInfo));
}
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.h (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.h 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebLoaderClient.h 2013-03-01 23:05:27 UTC (rev 144511)
@@ -87,9 +87,9 @@
bool shouldGoToBackForwardListItem(WebPageProxy*, WebBackForwardListItem*);
void willGoToBackForwardListItem(WebPageProxy*, WebBackForwardListItem*, APIObject*);
- PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy*, const String& bundleIdentifier, const String& displayName, const String& frameURLString, const String& pageURLString, PluginModuleLoadPolicy currentPluginLoadPolicy);
+ PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy*, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& frameURLString, const String& pageURLString, PluginModuleLoadPolicy currentPluginLoadPolicy);
void didFailToInitializePlugin(WebPageProxy*, const String& mimeType, const String& frameURLString, const String& pageURLString);
- void didBlockInsecurePluginVersion(WebPageProxy*, const String& mimeType, const String& bundleIdentifier, const String& bundleVersion, const String& frameURLString, const String& pageURLString);
+ void didBlockInsecurePluginVersion(WebPageProxy*, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& frameURLString, const String& pageURLString);
};
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-03-01 23:05:27 UTC (rev 144511)
@@ -1137,7 +1137,7 @@
#if PLATFORM(MAC)
PluginModuleLoadPolicy currentPluginLoadPolicy = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy);
- pluginLoadPolicy = m_loaderClient.pluginLoadPolicy(this, plugin.bundleIdentifier, plugin.info.name, frameURLString, pageURLString, currentPluginLoadPolicy);
+ pluginLoadPolicy = m_loaderClient.pluginLoadPolicy(this, plugin.bundleIdentifier, plugin.versionString, plugin.info.name, frameURLString, pageURLString, currentPluginLoadPolicy);
#else
UNUSED_PARAM(frameURLString);
UNUSED_PARAM(pageURLString);
@@ -2464,11 +2464,57 @@
return "PluginInformationPageURL";
}
-void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& url, const String& pluginsPageURL)
+String WebPageProxy::pluginInformationPluginspageAttributeURLKey()
{
- MESSAGE_CHECK_URL(url);
- MESSAGE_CHECK_URL(pluginsPageURL);
+ return "PluginInformationPluginspageAttributeURL";
+}
+String WebPageProxy::pluginInformationPluginURLKey()
+{
+ return "PluginInformationPluginURL";
+}
+
+PassRefPtr<ImmutableDictionary> WebPageProxy::pluginInformationDictionary(const String& bundleIdentifier, const String& bundleVersion, const String& displayName, const String& frameURLString, const String& mimeType, const String& pageURLString, const String& pluginspageAttributeURLString, const String& pluginURLString)
+{
+ HashMap<String, RefPtr<APIObject> > pluginInfoMap;
+ if (!bundleIdentifier.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationBundleIdentifierKey(), WebString::create(bundleIdentifier));
+ if (!bundleVersion.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationBundleVersionKey(), WebString::create(bundleVersion));
+ if (!displayName.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationDisplayNameKey(), WebString::create(displayName));
+ if (!frameURLString.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationFrameURLKey(), WebURL::create(frameURLString));
+ if (!mimeType.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationMIMETypeKey(), WebString::create(mimeType));
+ if (!pageURLString.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationPageURLKey(), WebURL::create(pageURLString));
+ if (!pluginspageAttributeURLString.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationPluginspageAttributeURLKey(), WebURL::create(pluginspageAttributeURLString));
+ if (!pluginURLString.isEmpty())
+ pluginInfoMap.set(WebPageProxy::pluginInformationPluginURLKey(), WebURL::create(pluginURLString));
+
+ return ImmutableDictionary::adopt(pluginInfoMap);
+}
+
+void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)
+{
+ MESSAGE_CHECK_URL(pluginURLString);
+ MESSAGE_CHECK_URL(pluginspageAttributeURLString);
+ MESSAGE_CHECK_URL(frameURLString);
+ MESSAGE_CHECK_URL(pageURLString);
+
+ String pluginBundleIdentifier;
+ String pluginBundleVersion;
+ String newMimeType = mimeType;
+#if ENABLE(NETSCAPE_PLUGIN_API)
+ PluginModuleInfo plugin = m_process->context()->pluginInfoStore().findPlugin(newMimeType, KURL(KURL(), pluginURLString));
+#if PLATFORM(MAC)
+ pluginBundleIdentifier = plugin.bundleIdentifier;
+ pluginBundleVersion = plugin.versionString;
+#endif
+#endif
+
WKPluginUnavailabilityReason pluginUnavailabilityReason = kWKPluginUnavailabilityReasonPluginMissing;
switch (static_cast<RenderEmbeddedObject::PluginUnavailabilityReason>(opaquePluginUnavailabilityReason)) {
case RenderEmbeddedObject::PluginMissing:
@@ -2483,9 +2529,6 @@
case RenderEmbeddedObject::PluginInactive: {
#if ENABLE(NETSCAPE_PLUGIN_API)
- String newMimeType = mimeType;
- PluginModuleInfo plugin = m_process->context()->pluginInfoStore().findPlugin(newMimeType, KURL(KURL(), url));
-
if (!plugin.path.isEmpty() && PluginInfoStore::reactivateInactivePlugin(plugin)) {
// The plug-in has been reactivated now; reload the page so it'll be instantiated.
reload(false);
@@ -2496,7 +2539,7 @@
}
- m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, mimeType, url, pluginsPageURL);
+ m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, mimeType, pluginBundleIdentifier, pluginBundleVersion, plugin.info.name, pluginURLString, pluginspageAttributeURLString, frameURLString, pageURLString);
}
void WebPageProxy::setToolbarsAreVisible(bool toolbarsAreVisible)
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.h (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.h 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.h 2013-03-01 23:05:27 UTC (rev 144511)
@@ -663,6 +663,9 @@
static String pluginInformationFrameURLKey();
static String pluginInformationMIMETypeKey();
static String pluginInformationPageURLKey();
+ static String pluginInformationPluginspageAttributeURLKey();
+ static String pluginInformationPluginURLKey();
+ static PassRefPtr<ImmutableDictionary> pluginInformationDictionary(const String& bundleIdentifier, const String& bundleVersion, const String& displayName, const String& frameURLString, const String& mimeType, const String& pageURLString, const String& pluginspageAttributeURLString, const String& pluginURLString);
private:
WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup*, uint64_t pageID);
@@ -731,7 +734,7 @@
void shouldInterruptJavaScript(bool& result);
void setStatusText(const String&);
void mouseDidMoveOverElement(const WebHitTestResult::Data& hitTestResultData, uint32_t modifiers, CoreIPC::ArgumentDecoder*);
- void unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& url, const String& pluginsPageURL);
+ void unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginsPageURLString, const String& frameURLString, const String& pageURLString);
void setToolbarsAreVisible(bool toolbarsAreVisible);
void getToolbarsAreVisible(bool& toolbarsAreVisible);
void setMenuBarIsVisible(bool menuBarIsVisible);
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.messages.in (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2013-03-01 23:05:27 UTC (rev 144511)
@@ -30,7 +30,7 @@
RunJavaScriptPrompt(uint64_t frameID, WTF::String message, WTF::String defaultValue) -> (WTF::String result)
ShouldInterruptJavaScript() -> (bool shouldInterupt)
MouseDidMoveOverElement(WebKit::WebHitTestResult::Data hitTestResultData, uint32_t modifiers, WebKit::InjectedBundleUserMessageEncoder userData);
- UnavailablePluginButtonClicked(uint32_t pluginUnavailabilityReason, WTF::String mimeType, WTF::String url, WTF::String pluginsPageURL)
+ UnavailablePluginButtonClicked(uint32_t pluginUnavailabilityReason, WTF::String mimeType, WTF::String pluginURLString, WTF::String pluginspageAttributeURLString, WTF::String frameURLString, WTF::String pageURLString)
DidChangeViewportProperties(WebCore::ViewportAttributes attributes)
DidReceiveEvent(uint32_t type, bool handled)
StopResponsivenessTimer()
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebUIClient.cpp (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebUIClient.cpp 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebUIClient.cpp 2013-03-01 23:05:27 UTC (rev 144511)
@@ -174,18 +174,20 @@
m_client.mouseDidMoveOverElement(toAPI(page), toAPI(webHitTestResult.get()), toAPI(modifiers), toAPI(userData), m_client.clientInfo);
}
-void WebUIClient::unavailablePluginButtonClicked(WebPageProxy* page, WKPluginUnavailabilityReason pluginUnavailabilityReason, const String& mimeType, const String& url, const String& pluginsPageURL)
+void WebUIClient::unavailablePluginButtonClicked(WebPageProxy* page, WKPluginUnavailabilityReason pluginUnavailabilityReason, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)
{
if (pluginUnavailabilityReason == kWKPluginUnavailabilityReasonPluginMissing) {
if (m_client.missingPluginButtonClicked_deprecatedForUseWithV0)
- m_client.missingPluginButtonClicked_deprecatedForUseWithV0(toAPI(page), toAPI(mimeType.impl()), toAPI(url.impl()), toAPI(pluginsPageURL.impl()), m_client.clientInfo);
+ m_client.missingPluginButtonClicked_deprecatedForUseWithV0(toAPI(page), toAPI(mimeType.impl()), toAPI(pluginURLString.impl()), toAPI(pluginspageAttributeURLString.impl()), m_client.clientInfo);
}
- if (!m_client.unavailablePluginButtonClicked)
- return;
+ if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1)
+ m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1(toAPI(page), pluginUnavailabilityReason, toAPI(mimeType.impl()), toAPI(pluginURLString.impl()), toAPI(pluginspageAttributeURLString.impl()), m_client.clientInfo);
- m_client.unavailablePluginButtonClicked(toAPI(page), pluginUnavailabilityReason, toAPI(mimeType.impl()), toAPI(url.impl()), toAPI(pluginsPageURL.impl()), m_client.clientInfo);
-
+ if (m_client.unavailablePluginButtonClicked) {
+ RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(pluginBundleIdentifier, pluginBundleVersion, displayName, frameURLString, mimeType, pageURLString, pluginspageAttributeURLString, pluginURLString);
+ m_client.unavailablePluginButtonClicked(toAPI(page), pluginUnavailabilityReason, toAPI(pluginInformation.get()), m_client.clientInfo);
+ }
}
bool WebUIClient::implementsDidNotHandleKeyEvent() const
Modified: branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebUIClient.h (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebUIClient.h 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/UIProcess/WebUIClient.h 2013-03-01 23:05:27 UTC (rev 144511)
@@ -70,7 +70,7 @@
void setStatusText(WebPageProxy*, const String&);
void mouseDidMoveOverElement(WebPageProxy*, const WebHitTestResult::Data&, WebEvent::Modifiers, APIObject*);
- void unavailablePluginButtonClicked(WebPageProxy*, WKPluginUnavailabilityReason, const String& mimeType, const String& url, const String& pluginsPageURL);
+ void unavailablePluginButtonClicked(WebPageProxy*, WKPluginUnavailabilityReason, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString);
bool implementsDidNotHandleKeyEvent() const;
void didNotHandleKeyEvent(WebPageProxy*, const NativeWebKeyboardEvent&);
Modified: branches/safari-536.29-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (144510 => 144511)
--- branches/safari-536.29-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2013-03-01 23:05:27 UTC (rev 144511)
@@ -50,9 +50,11 @@
#include <WebCore/FileIconLoader.h>
#include <WebCore/Frame.h>
#include <WebCore/FrameLoadRequest.h>
+#include <WebCore/DocumentLoader.h>
#include <WebCore/FrameLoader.h>
#include <WebCore/FrameView.h>
#include <WebCore/HTMLNames.h>
+#include <WebCore/HTMLParserIdioms.h>
#include <WebCore/HTMLPlugInImageElement.h>
#include <WebCore/Icon.h>
#include <WebCore/NotImplemented.h>
@@ -494,7 +496,12 @@
HTMLPlugInImageElement* pluginElement = static_cast<HTMLPlugInImageElement*>(element);
- m_page->send(Messages::WebPageProxy::UnavailablePluginButtonClicked(pluginUnavailabilityReason, pluginElement->serviceType(), pluginElement->url(), pluginElement->getAttribute(pluginspageAttr)));
+ String frameURLString = pluginElement->document()->frame()->loader()->documentLoader()->responseURL().string();
+ String pageURLString = m_page->mainFrame()->loader()->documentLoader()->responseURL().string();
+ KURL pluginspageAttributeURL = element->document()->completeURL(stripLeadingAndTrailingHTMLSpaces(pluginElement->getAttribute(pluginspageAttr)));
+ if (!pluginspageAttributeURL.protocolIsInHTTPFamily())
+ pluginspageAttributeURL = KURL();
+ m_page->send(Messages::WebPageProxy::UnavailablePluginButtonClicked(pluginUnavailabilityReason, pluginElement->serviceType(), pluginElement->url(), pluginspageAttributeURL.string(), frameURLString, pageURLString));
}
void WebChromeClient::scrollbarsModeDidChange() const
Modified: branches/safari-536.29-branch/Tools/ChangeLog (144510 => 144511)
--- branches/safari-536.29-branch/Tools/ChangeLog 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Tools/ChangeLog 2013-03-01 23:05:27 UTC (rev 144511)
@@ -1,5 +1,28 @@
2013-03-01 Brady Eidson <[email protected]>
+ Merge 143988
+
+ 2013-02-25 Anders Carlsson <[email protected]>
+
+ Add a new unavailablePluginButtonClicked callback that takes a WKDictionary of plug-in information
+ https://bugs.webkit.org/show_bug.cgi?id=110821
+ <rdar://problem/13265303>
+
+ Reviewed by Beth Dakin.
+
+ Update for WebKit2 changes.
+
+ * MiniBrowser/mac/WK2BrowserWindowController.m:
+ (-[WK2BrowserWindowController awakeFromNib]):
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::createOtherPage):
+ (WTR::TestController::createWebViewWithOptions):
+ (WTR::TestController::unavailablePluginButtonClicked):
+ * WebKitTestRunner/TestController.h:
+ (TestController):
+
+2013-03-01 Brady Eidson <[email protected]>
+
Merge 143976
2013-02-25 Anders Carlsson <[email protected]>
Modified: branches/safari-536.29-branch/Tools/MiniBrowser/mac/BrowserWindowController.m (144510 => 144511)
--- branches/safari-536.29-branch/Tools/MiniBrowser/mac/BrowserWindowController.m 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Tools/MiniBrowser/mac/BrowserWindowController.m 2013-03-01 23:05:27 UTC (rev 144511)
@@ -672,6 +672,7 @@
createNewPage,
mouseDidMoveOverElement,
0, // decidePolicyForNotificationPermissionRequest
+ 0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
0, // unavailablePluginButtonClicked
};
WKPageSetPageUIClient(_webView.pageRef, &uiClient);
Modified: branches/safari-536.29-branch/Tools/WebKitTestRunner/TestController.cpp (144510 => 144511)
--- branches/safari-536.29-branch/Tools/WebKitTestRunner/TestController.cpp 2013-03-01 22:55:03 UTC (rev 144510)
+++ branches/safari-536.29-branch/Tools/WebKitTestRunner/TestController.cpp 2013-03-01 23:05:27 UTC (rev 144511)
@@ -212,6 +212,7 @@
createOtherPage,
0, // mouseDidMoveOverElement
0, // decidePolicyForNotificationPermissionRequest
+ 0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
0, // unavailablePluginButtonClicked
};
WKPageSetPageUIClient(newPage, &otherPageUIClient);
@@ -372,6 +373,7 @@
createOtherPage,
0, // mouseDidMoveOverElement
0, // decidePolicyForNotificationPermissionRequest
+ 0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
0, // unavailablePluginButtonClicked
};
WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient);