Title: [144586] branches/safari-534.59-branch
Revision
144586
Author
[email protected]
Date
2013-03-03 15:56:10 -0800 (Sun, 03 Mar 2013)

Log Message

Merge r143988

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

Source/WebKit2: 

    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.

Tools: 

    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):

Modified Paths

Diff

Modified: branches/safari-534.59-branch/Source/WebKit2/ChangeLog (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/ChangeLog	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/ChangeLog	2013-03-03 23:56:10 UTC (rev 144586)
@@ -1,5 +1,62 @@
 2013-03-03  Brady Eidson  <[email protected]>
 
+        Merge r143988
+
+    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-03  Brady Eidson  <[email protected]>
+
         Merge r143976
 
     2013-02-25  Anders Carlsson  <[email protected]>

Modified: branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.cpp (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2013-03-03 23:56:10 UTC (rev 144586)
@@ -623,3 +623,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-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.h (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.h	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/API/C/WKPage.h	2013-03-03 23:56:10 UTC (rev 144586)
@@ -208,11 +208,12 @@
 typedef void (*WKPageDidCompleteRubberBandForMainFrameCallback)(WKPageRef page, WKSize initialOverhang, const void* clientInfo);
 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 void (*WKPageUnavailablePluginButtonClickedCallback)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKDictionaryRef pluginInfoDictionary, const void* clientInfo);
 
 // Deprecated
 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;
     const void *                                                        clientInfo;
@@ -255,6 +256,9 @@
     WKPageDidCompleteRubberBandForMainFrameCallback                     didCompleteRubberBandForMainFrame;
     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
     WKPageShouldInterruptJavaScriptCallback                             shouldInterruptJavaScript;
+    WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
+
+    // Version 2
     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
 };
 typedef struct WKPageUIClient WKPageUIClient;
@@ -454,7 +458,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-534.59-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebLoaderClient.cpp	2013-03-03 23:56:10 UTC (rev 144586)
@@ -233,23 +233,6 @@
     return m_client.shouldGoToBackForwardListItem(toAPI(page), toAPI(item), 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.didFailToInitializePlugin_deprecatedForUseWithV0)
@@ -259,18 +242,18 @@
         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);
     }
 }
@@ -305,12 +288,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-534.59-branch/Source/WebKit2/UIProcess/WebLoaderClient.h (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebLoaderClient.h	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebLoaderClient.h	2013-03-03 23:56:10 UTC (rev 144586)
@@ -80,9 +80,9 @@
     void didChangeBackForwardList(WebPageProxy*, WebBackForwardListItem* addedItem, Vector<RefPtr<APIObject> >* removedItems);
     bool shouldGoToBackForwardListItem(WebPageProxy*, WebBackForwardListItem*);
 
-    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-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-03-03 23:56:10 UTC (rev 144586)
@@ -74,6 +74,7 @@
 #include <WebCore/FloatRect.h>
 #include <WebCore/FocusDirection.h>
 #include <WebCore/MIMETypeRegistry.h>
+#include <WebCore/RenderEmbeddedObject.h>
 #include <WebCore/WindowFeatures.h>
 #include <stdio.h>
 
@@ -934,7 +935,7 @@
     pluginLoadPolicy = PluginInfoStore::policyForPlugin(plugin);
 
     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);
 
     if (pluginLoadPolicy != PluginModuleLoadNormally)
         return;
@@ -2065,10 +2066,39 @@
     m_uiClient.mouseDidMoveOverElement(this, modifiers, userData.get());
 }
 
-void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& url, const String& pluginsPageURL)
+void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)
 {
-    WKPluginUnavailabilityReason pluginUnavailabilityReason = static_cast<WKPluginUnavailabilityReason>(opaquePluginUnavailabilityReason);
-    m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, mimeType, url, pluginsPageURL);
+    MESSAGE_CHECK(pluginURLString);
+    MESSAGE_CHECK(pluginspageAttributeURLString);
+    MESSAGE_CHECK(frameURLString);
+    MESSAGE_CHECK(pageURLString);
+
+    String pluginBundleIdentifier;
+    String pluginBundleVersion;
+    String newMimeType = mimeType;
+#if ENABLE(NETSCAPE_PLUGIN_API)
+    PluginInfoStore::Plugin 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:
+        pluginUnavailabilityReason = kWKPluginUnavailabilityReasonPluginMissing;
+        break;
+    case RenderEmbeddedObject::InsecurePluginVersion:
+        pluginUnavailabilityReason = kWKPluginUnavailabilityReasonInsecurePluginVersion;
+        break;
+    case RenderEmbeddedObject::PluginCrashed:
+        pluginUnavailabilityReason = kWKPluginUnavailabilityReasonPluginCrashed;
+        break;
+    }
+
+    m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, mimeType, pluginBundleIdentifier, pluginBundleVersion, plugin.info.name, pluginURLString, pluginspageAttributeURLString, frameURLString, pageURLString);
 }
 
 void WebPageProxy::setToolbarsAreVisible(bool toolbarsAreVisible)
@@ -3406,4 +3436,37 @@
     return "PluginInformationPageURL";
 }
 
+String WebPageProxy::pluginInformationPluginspageAttributeURLKey()
+{
+    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);
+}
+
 } // namespace WebKit

Modified: branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.h (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.h	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.h	2013-03-03 23:56:10 UTC (rev 144586)
@@ -543,6 +543,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);
@@ -607,7 +610,7 @@
     void shouldInterruptJavaScript(bool& result);
     void setStatusText(const String&);
     void mouseDidMoveOverElement(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-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.messages.in (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.messages.in	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebPageProxy.messages.in	2013-03-03 23:56:10 UTC (rev 144586)
@@ -30,7 +30,7 @@
     RunJavaScriptPrompt(uint64_t frameID, WTF::String message, WTF::String defaultValue) -> (WTF::String result)
     ShouldInterruptJavaScript() -> (bool shouldInterupt)
     MouseDidMoveOverElement(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)
     DidChangeViewportData(WebCore::ViewportArguments arguments)
     DidReceiveEvent(uint32_t type, bool handled)
     StopResponsivenessTimer()

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


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.cpp	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.cpp	2013-03-03 23:56:10 UTC (rev 144586)
@@ -156,18 +156,20 @@
     m_client.mouseDidMoveOverElement(toAPI(page), 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-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.h (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.h	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/UIProcess/WebUIClient.h	2013-03-03 23:56:10 UTC (rev 144586)
@@ -67,7 +67,7 @@
 
     void setStatusText(WebPageProxy*, const String&);
     void mouseDidMoveOverElement(WebPageProxy*, 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-534.59-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (144585 => 144586)


--- branches/safari-534.59-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2013-03-03 23:56:10 UTC (rev 144586)
@@ -50,7 +50,9 @@
 #include <WebCore/Frame.h>
 #include <WebCore/FrameLoader.h>
 #include <WebCore/FrameView.h>
+#include <WebCore/DocumentLoader.h>
 #include <WebCore/HTMLNames.h>
+#include <WebCore/HTMLParserIdioms.h>
 #include <WebCore/HTMLPlugInImageElement.h>
 #include <WebCore/Icon.h>
 #include <WebCore/NotImplemented.h>
@@ -484,7 +486,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()->coreFrame()->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-534.59-branch/Tools/ChangeLog (144585 => 144586)


--- branches/safari-534.59-branch/Tools/ChangeLog	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Tools/ChangeLog	2013-03-03 23:56:10 UTC (rev 144586)
@@ -1,5 +1,28 @@
 2013-03-03  Brady Eidson  <[email protected]>
 
+        Merge r143988
+
+    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-03  Brady Eidson  <[email protected]>
+
         Merge r143976
 
     2013-02-25  Anders Carlsson  <[email protected]>

Modified: branches/safari-534.59-branch/Tools/MiniBrowser/mac/BrowserWindowController.m (144585 => 144586)


--- branches/safari-534.59-branch/Tools/MiniBrowser/mac/BrowserWindowController.m	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Tools/MiniBrowser/mac/BrowserWindowController.m	2013-03-03 23:56:10 UTC (rev 144586)
@@ -658,6 +658,7 @@
         0, // didCompleteRubberBandForMainFrame
         0, // saveDataToFileInDownloadsFolder
         0, // shouldInterruptJavaScript
+        0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
         0, // unavailablePluginButtonClicked
     };
     WKPageSetPageUIClient(_webView.pageRef, &uiClient);

Modified: branches/safari-534.59-branch/Tools/WebKitTestRunner/TestController.cpp (144585 => 144586)


--- branches/safari-534.59-branch/Tools/WebKitTestRunner/TestController.cpp	2013-03-03 23:54:12 UTC (rev 144585)
+++ branches/safari-534.59-branch/Tools/WebKitTestRunner/TestController.cpp	2013-03-03 23:56:10 UTC (rev 144586)
@@ -179,6 +179,7 @@
         0, // didCompleteRubberBandForMainFrame
         0, // saveDataToFileInDownloadsFolder
         0, // shouldInterruptJavaScript
+        0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
         0, // unavailablePluginButtonClicked
     };
     WKPageSetPageUIClient(newPage, &otherPageUIClient);
@@ -323,6 +324,7 @@
         0, // didCompleteRubberBandForMainFrame
         0, // saveDataToFileInDownloadsFolder
         0, // shouldInterruptJavaScript
+        0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
         0, // unavailablePluginButtonClicked
     };
     WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to