[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

andersca at apple.com andersca at apple.com
Wed Dec 22 13:42:54 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 7682887784ed3f645acb195d0bae4b5ab95ec24d
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Sep 23 22:20:53 2010 +0000

    Implement handlers for the GetPluginProcessConnection message
    https://bugs.webkit.org/show_bug.cgi?id=46415
    
    Reviewed by Darin Adler.
    
    * Shared/CoreIPCSupport/WebProcessProxyMessageKinds.h:
    Add GetPluginProcessConnection message kind
    
    * UIProcess/Plugins/PluginProcessManager.cpp:
    (WebKit::PluginProcessManager::PluginProcessManager):
    Add missing constructor.
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::getPluginProcessConnection):
    Ask the plug-in process manager for a connection.
    
    (WebKit::WebProcessProxy::didReceiveSyncMessage):
    Call getPluginProcessConnection.
    
    * UIProcess/WebProcessProxy.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::createPlugin):
    Send the GetPluginProcessConnection message.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68205 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 101b638..a6cccb6 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,29 @@
+2010-09-23  Anders Carlsson  <andersca at apple.com>
+
+        Reviewed by Darin Adler.
+
+        Implement handlers for the GetPluginProcessConnection message
+        https://bugs.webkit.org/show_bug.cgi?id=46415
+
+        * Shared/CoreIPCSupport/WebProcessProxyMessageKinds.h:
+        Add GetPluginProcessConnection message kind
+
+        * UIProcess/Plugins/PluginProcessManager.cpp:
+        (WebKit::PluginProcessManager::PluginProcessManager):
+        Add missing constructor.
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::getPluginProcessConnection):
+        Ask the plug-in process manager for a connection.
+        
+        (WebKit::WebProcessProxy::didReceiveSyncMessage):
+        Call getPluginProcessConnection.
+
+        * UIProcess/WebProcessProxy.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::createPlugin):
+        Send the GetPluginProcessConnection message.
+
 2010-09-23  Matthew Delaney  <mdelaney at apple.com>
 
         Reviewed by Simon Fraser.
diff --git a/WebKit2/Shared/CoreIPCSupport/WebProcessProxyMessageKinds.h b/WebKit2/Shared/CoreIPCSupport/WebProcessProxyMessageKinds.h
index 5d04802..70e694c 100644
--- a/WebKit2/Shared/CoreIPCSupport/WebProcessProxyMessageKinds.h
+++ b/WebKit2/Shared/CoreIPCSupport/WebProcessProxyMessageKinds.h
@@ -41,6 +41,9 @@ enum Kind {
     DidUpdateHistoryTitle,
     DidDestroyFrame,
     GetPluginPath,
+#if ENABLE(PLUGIN_PROCESS)
+    GetPluginProcessConnection,
+#endif
     GetPlugins
 };
 
diff --git a/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp b/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
index 98aacf7..aef0da6 100644
--- a/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
+++ b/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
@@ -41,6 +41,10 @@ PluginProcessManager& PluginProcessManager::shared()
     return pluginProcessManager;
 }
 
+PluginProcessManager::PluginProcessManager()
+{
+}
+
 void PluginProcessManager::getPluginProcessConnection(const String& pluginPath, WebProcessProxy* webProcessProxy, CoreIPC::ArgumentEncoder* reply)
 {
     ASSERT(!pluginPath.isNull());
diff --git a/WebKit2/UIProcess/WebProcessProxy.cpp b/WebKit2/UIProcess/WebProcessProxy.cpp
index 8d8e5da..e12f102 100644
--- a/WebKit2/UIProcess/WebProcessProxy.cpp
+++ b/WebKit2/UIProcess/WebProcessProxy.cpp
@@ -26,6 +26,7 @@
 #include "WebProcessProxy.h"
 
 #include "PluginInfoStore.h"
+#include "PluginProcessManager.h"
 #include "WebBackForwardListItem.h"
 #include "WebContext.h"
 #include "WebNavigationDataStore.h"
@@ -212,6 +213,13 @@ void WebProcessProxy::getPlugins(bool refresh, Vector<PluginInfo>& plugins)
     m_context->pluginInfoStore()->getPlugins(plugins);
 }
 
+#if ENABLE(PLUGIN_PROCESS)
+void WebProcessProxy::getPluginProcessConnection(const String& pluginPath, CoreIPC::ArgumentEncoder* reply)
+{
+    PluginProcessManager::shared().getPluginProcessConnection(pluginPath, this, reply);
+}
+#endif
+
 void WebProcessProxy::getPluginPath(const String& mimeType, const KURL& url, String& pluginPath)
 {
     String newMimeType = mimeType.lower();
@@ -323,6 +331,9 @@ void WebProcessProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC
             // These are synchronous messages and should never be handled here.
             case WebProcessProxyMessage::GetPlugins:
             case WebProcessProxyMessage::GetPluginPath:
+#if ENABLE(PLUGIN_PROCESS)
+            case WebProcessProxyMessage::GetPluginProcessConnection:
+#endif
                 ASSERT_NOT_REACHED();
                 break;
         }
@@ -370,10 +381,23 @@ CoreIPC::SyncReplyMode WebProcessProxy::didReceiveSyncMessage(CoreIPC::Connectio
                 
                 String pluginPath;
                 getPluginPath(mimeType, KURL(ParsedURLString, urlString), pluginPath);
+
                 reply->encode(CoreIPC::In(pluginPath));
                 return CoreIPC::AutomaticReply;
             }
 
+#if ENABLE(PLUGIN_PROCESS)
+            case WebProcessProxyMessage::GetPluginProcessConnection: {
+                String pluginPath;
+                
+                if (!arguments->decode(CoreIPC::Out(pluginPath)))
+                    return CoreIPC::AutomaticReply;
+
+                getPluginProcessConnection(pluginPath, reply);
+                return CoreIPC::ManualReply;
+            }
+#endif
+
             // These are asynchronous messages and should never be handled here.
             case WebProcessProxyMessage::DidNavigateWithNavigationData:
             case WebProcessProxyMessage::DidPerformClientRedirect:
diff --git a/WebKit2/UIProcess/WebProcessProxy.h b/WebKit2/UIProcess/WebProcessProxy.h
index 81c52b0..41987be 100644
--- a/WebKit2/UIProcess/WebProcessProxy.h
+++ b/WebKit2/UIProcess/WebProcessProxy.h
@@ -107,8 +107,11 @@ private:
 
     bool sendMessage(CoreIPC::MessageID, PassOwnPtr<CoreIPC::ArgumentEncoder>);
 
-    void getPlugins(bool refresh, Vector<WebCore::PluginInfo>&);
+#if ENABLE(PLUGIN_PROCESS)
+    void getPluginProcessConnection(const String& pluginPath, CoreIPC::ArgumentEncoder* reply);
+#endif
     void getPluginPath(const String& mimeType, const WebCore::KURL& url, String& pluginPath);
+    void getPlugins(bool refresh, Vector<WebCore::PluginInfo>&);
 
     void addOrUpdateBackForwardListItem(uint64_t itemID, const String& originalURLString, const String& urlString, const String& title);
     void addVisitedLink(WebCore::LinkHash);
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index 6eb3610..988fb31 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -63,6 +63,11 @@
 #include <runtime/JSLock.h>
 #include <runtime/JSValue.h>
 
+#if ENABLE(PLUGIN_PROCESS)
+// FIXME: This is currently mac specific!
+#include "MachPort.h"
+#endif
+
 #ifndef NDEBUG
 #include <wtf/RefCountedLeakCounter.h>
 #endif
@@ -182,11 +187,24 @@ PassRefPtr<Plugin> WebPage::createPlugin(const Plugin::Parameters& parameters)
     if (pluginPath.isNull())
         return 0;
 
+#if ENABLE(PLUGIN_PROCESS)
+    // FIXME: This is currently Mac specific.
+    CoreIPC::MachPort connectionMachPort;
+
+    if (!WebProcess::shared().connection()->sendSync(WebProcessProxyMessage::GetPluginProcessConnection, 0,
+                                                     CoreIPC::In(pluginPath),
+                                                     CoreIPC::Out(connectionMachPort),
+                                                     CoreIPC::Connection::NoTimeout))
+        return 0;
+
+    return 0;
+#else
     RefPtr<NetscapePluginModule> pluginModule = NetscapePluginModule::getOrCreate(pluginPath);
     if (!pluginModule)
         return 0;
 
     return NetscapePlugin::create(pluginModule.release());
+#endif
 }
 
 String WebPage::renderTreeExternalRepresentation() const

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list