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

andersca at apple.com andersca at apple.com
Wed Dec 22 18:06:05 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 699c7e5e2894232f617bc9ab7284fe37327b4446
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Dec 7 01:14:40 2010 +0000

    The plug-in process crashes if it can't load the plug-in module
    https://bugs.webkit.org/show_bug.cgi?id=50601
    <rdar://problem/8692654>
    
    Reviewed by Sam Weinig.
    
    * PluginProcess/PluginControllerProxy.cpp:
    (WebKit::PluginControllerProxy::initialize):
    Handle m_plugin being 0.
    
    * PluginProcess/PluginProcess.cpp:
    (WebKit::PluginProcess::netscapePluginModule):
    Create the plug-in module if it doesn't exist.
    
    (WebKit::PluginProcess::initialize):
    Store the plug-in path.
    
    * PluginProcess/PluginProcess.h:
    * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
    (WebKit::NetscapePlugin::create):
    Return null if the plug-in module doesn't exist.
    
    * WebProcess/Plugins/Netscape/NetscapePlugin.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::createPlugin):
    Simplify code.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73419 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 19a849b..41ea32b 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -2,6 +2,35 @@
 
         Reviewed by Sam Weinig.
 
+        The plug-in process crashes if it can't load the plug-in module
+        https://bugs.webkit.org/show_bug.cgi?id=50601
+        <rdar://problem/8692654>
+
+        * PluginProcess/PluginControllerProxy.cpp:
+        (WebKit::PluginControllerProxy::initialize):
+        Handle m_plugin being 0.
+
+        * PluginProcess/PluginProcess.cpp:
+        (WebKit::PluginProcess::netscapePluginModule):
+        Create the plug-in module if it doesn't exist.
+
+        (WebKit::PluginProcess::initialize):
+        Store the plug-in path.
+
+        * PluginProcess/PluginProcess.h:
+        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
+        (WebKit::NetscapePlugin::create):
+        Return null if the plug-in module doesn't exist.
+
+        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::createPlugin):
+        Simplify code.
+
+2010-12-06  Anders Carlsson  <andersca at apple.com>
+
+        Reviewed by Sam Weinig.
+
         WebProcess crash in NPRemoteObjectMap::invalidate when closing tab
         https://bugs.webkit.org/show_bug.cgi?id=50597
         <rdar://problem/8655584>
diff --git a/WebKit2/PluginProcess/PluginControllerProxy.cpp b/WebKit2/PluginProcess/PluginControllerProxy.cpp
index bb4844e..db8ca4f 100644
--- a/WebKit2/PluginProcess/PluginControllerProxy.cpp
+++ b/WebKit2/PluginProcess/PluginControllerProxy.cpp
@@ -70,6 +70,9 @@ bool PluginControllerProxy::initialize(const Plugin::Parameters& parameters)
     ASSERT(!m_plugin);
 
     m_plugin = NetscapePlugin::create(PluginProcess::shared().netscapePluginModule());
+    if (!m_plugin)
+        return false;
+
     if (!m_plugin->initialize(this, parameters)) {
         m_plugin = 0;
         return false;
diff --git a/WebKit2/PluginProcess/PluginProcess.cpp b/WebKit2/PluginProcess/PluginProcess.cpp
index b6817f5..506bb7d 100644
--- a/WebKit2/PluginProcess/PluginProcess.cpp
+++ b/WebKit2/PluginProcess/PluginProcess.cpp
@@ -76,6 +76,16 @@ void PluginProcess::removeWebProcessConnection(WebProcessConnection* webProcessC
     }
 }
 
+NetscapePluginModule* PluginProcess::netscapePluginModule()
+{
+    if (!m_pluginModule) {
+        ASSERT(!m_pluginPath.isNull());
+        m_pluginModule = NetscapePluginModule::getOrCreate(m_pluginPath);
+    }
+
+    return m_pluginModule.get();
+}
+
 void PluginProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments)
 {
     didReceivePluginProcessMessage(connection, messageID, arguments);
@@ -96,7 +106,7 @@ void PluginProcess::initialize(const PluginProcessCreationParameters& parameters
 {
     ASSERT(!m_pluginModule);
 
-    m_pluginModule = NetscapePluginModule::getOrCreate(parameters.pluginPath);
+    m_pluginPath = parameters.pluginPath;
 
 #if USE(ACCELERATED_COMPOSITING) && PLATFORM(MAC)
     m_compositingRenderServerPort = parameters.acceleratedCompositingPort.port();
diff --git a/WebKit2/PluginProcess/PluginProcess.h b/WebKit2/PluginProcess/PluginProcess.h
index a4f948b..e60d52d 100644
--- a/WebKit2/PluginProcess/PluginProcess.h
+++ b/WebKit2/PluginProcess/PluginProcess.h
@@ -31,6 +31,7 @@
 #include "ChildProcess.h"
 #include "RunLoop.h"
 #include <wtf/Forward.h>
+#include <wtf/text/WTFString.h>
 
 namespace WebKit {
 
@@ -45,7 +46,7 @@ public:
     void initializeConnection(CoreIPC::Connection::Identifier);
     void removeWebProcessConnection(WebProcessConnection* webProcessConnection);
 
-    NetscapePluginModule* netscapePluginModule() const { return m_pluginModule.get(); }
+    NetscapePluginModule* netscapePluginModule();
 
 #if PLATFORM(MAC)
     void initializeShim();
@@ -77,6 +78,9 @@ private:
     // Our web process connections.
     Vector<RefPtr<WebProcessConnection> > m_webProcessConnections;
 
+    // The plug-in path.
+    String m_pluginPath;
+
     // The plug-in module.
     RefPtr<NetscapePluginModule> m_pluginModule;
     
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
index aba4eac..7c2f4a0 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
@@ -43,6 +43,14 @@ namespace WebKit {
 // The plug-in that we're currently calling NPP_New for.
 static NetscapePlugin* currentNPPNewPlugin;
 
+PassRefPtr<NetscapePlugin> NetscapePlugin::create(PassRefPtr<NetscapePluginModule> pluginModule)
+{
+    if (!pluginModule)
+        return 0;
+
+    return adoptRef(new NetscapePlugin(pluginModule));
+}
+    
 NetscapePlugin::NetscapePlugin(PassRefPtr<NetscapePluginModule> pluginModule)
     : m_pluginController(0)
     , m_nextRequestID(0)
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
index e6d4972..9789b5b 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
@@ -45,10 +45,7 @@ class NetscapePluginStream;
     
 class NetscapePlugin : public Plugin {
 public:
-    static PassRefPtr<NetscapePlugin> create(PassRefPtr<NetscapePluginModule> pluginModule)
-    {
-        return adoptRef(new NetscapePlugin(pluginModule));
-    }
+    static PassRefPtr<NetscapePlugin> create(PassRefPtr<NetscapePluginModule> pluginModule);
     virtual ~NetscapePlugin();
 
     static PassRefPtr<NetscapePlugin> fromNPP(NPP);
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index b131187..7afebb9 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -227,11 +227,7 @@ PassRefPtr<Plugin> WebPage::createPlugin(const Plugin::Parameters& parameters)
 
     return PluginProxy::create(pluginProcessConnection);
 #else
-    RefPtr<NetscapePluginModule> pluginModule = NetscapePluginModule::getOrCreate(pluginPath);
-    if (!pluginModule)
-        return 0;
-
-    return NetscapePlugin::create(pluginModule.release());
+    return NetscapePlugin::create(NetscapePluginModule::getOrCreate(pluginPath));
 #endif
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list