[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