Title: [144511] branches/safari-536.29-branch
Revision
144511
Author
[email protected]
Date
2013-03-01 15:05:27 -0800 (Fri, 01 Mar 2013)

Log Message

Merge 143988

    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-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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to