summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/Plugins
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-30 16:58:06 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-30 17:03:09 +0100
commit32ea33253afbbdefd2680aa95ab5f57455272ae7 (patch)
tree2389569585b666c310fbb36d3fb8e6ab94462967 /Source/WebKit2/UIProcess/Plugins
parent41c25f231cbca1babc445187283524cc6c751c71 (diff)
downloadqtwebkit-32ea33253afbbdefd2680aa95ab5f57455272ae7.tar.gz
Imported WebKit commit 6a4a1d32e1d779548c726c4826cba9d69eb87601 (http://svn.webkit.org/repository/webkit/trunk@136242)
Final import for the Qt 5.x series that implements the QtWebKit / QtWebKitWidgets split Extra fixes will be cherry-picked. Change-Id: I844f1ebb99c6d6b75db31d6538c2acd628e79681 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/Plugins')
-rw-r--r--Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp21
-rw-r--r--Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h7
-rw-r--r--Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp10
-rw-r--r--Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h9
4 files changed, 28 insertions, 19 deletions
diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
index f497895db..834c87fc4 100644
--- a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
+++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
@@ -45,12 +45,12 @@ PluginProcessManager::PluginProcessManager()
{
}
-void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore& pluginInfoStore, const String& pluginPath, PassRefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> reply)
+void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore& pluginInfoStore, const String& pluginPath, PluginProcess::Type processType, PassRefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> reply)
{
ASSERT(!pluginPath.isNull());
PluginModuleInfo plugin = pluginInfoStore.infoForPluginWithPath(pluginPath);
- PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin);
+ PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, processType);
pluginProcess->getPluginProcessConnection(reply);
}
@@ -64,32 +64,33 @@ void PluginProcessManager::removePluginProcessProxy(PluginProcessProxy* pluginPr
void PluginProcessManager::getSitesWithData(const PluginModuleInfo& plugin, WebPluginSiteDataManager* webPluginSiteDataManager, uint64_t callbackID)
{
- PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin);
+ PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, PluginProcess::TypeRegularProcess);
pluginProcess->getSitesWithData(webPluginSiteDataManager, callbackID);
}
void PluginProcessManager::clearSiteData(const PluginModuleInfo& plugin, WebPluginSiteDataManager* webPluginSiteDataManager, const Vector<String>& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID)
{
- PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin);
+ PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, PluginProcess::TypeRegularProcess);
pluginProcess->clearSiteData(webPluginSiteDataManager, sites, flags, maxAgeInSeconds, callbackID);
}
-PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String& pluginPath)
+PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String& pluginPath, PluginProcess::Type processType)
{
for (size_t i = 0; i < m_pluginProcesses.size(); ++i) {
- if (m_pluginProcesses[i]->pluginInfo().path == pluginPath)
- return m_pluginProcesses[i].get();
+ RefPtr<PluginProcessProxy>& pluginProcessProxy = m_pluginProcesses[i];
+ if (pluginProcessProxy->pluginInfo().path == pluginPath && pluginProcessProxy->processType() == processType)
+ return pluginProcessProxy.get();
}
return 0;
}
-PluginProcessProxy* PluginProcessManager::getOrCreatePluginProcess(const PluginModuleInfo& plugin)
+PluginProcessProxy* PluginProcessManager::getOrCreatePluginProcess(const PluginModuleInfo& plugin, PluginProcess::Type processType)
{
- if (PluginProcessProxy* pluginProcess = pluginProcessWithPath(plugin.path))
+ if (PluginProcessProxy* pluginProcess = pluginProcessWithPath(plugin.path, processType))
return pluginProcess;
- RefPtr<PluginProcessProxy> pluginProcess = PluginProcessProxy::create(this, plugin);
+ RefPtr<PluginProcessProxy> pluginProcess = PluginProcessProxy::create(this, plugin, processType);
PluginProcessProxy* pluginProcessPtr = pluginProcess.get();
m_pluginProcesses.append(pluginProcess.release());
diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h
index 5e519427b..f84521a49 100644
--- a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h
+++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h
@@ -29,6 +29,7 @@
#if ENABLE(PLUGIN_PROCESS)
#include "PluginModuleInfo.h"
+#include "PluginProcess.h"
#include "WebProcessProxyMessages.h"
#include <wtf/Forward.h>
#include <wtf/Noncopyable.h>
@@ -50,7 +51,7 @@ class PluginProcessManager {
public:
static PluginProcessManager& shared();
- void getPluginProcessConnection(const PluginInfoStore&, const String& pluginPath, PassRefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>);
+ void getPluginProcessConnection(const PluginInfoStore&, const String& pluginPath, PluginProcess::Type, PassRefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>);
void removePluginProcessProxy(PluginProcessProxy*);
void getSitesWithData(const PluginModuleInfo&, WebPluginSiteDataManager*, uint64_t callbackID);
@@ -63,8 +64,8 @@ public:
private:
PluginProcessManager();
- PluginProcessProxy* getOrCreatePluginProcess(const PluginModuleInfo&);
- PluginProcessProxy* pluginProcessWithPath(const String& pluginPath);
+ PluginProcessProxy* getOrCreatePluginProcess(const PluginModuleInfo&, PluginProcess::Type);
+ PluginProcessProxy* pluginProcessWithPath(const String& pluginPath, PluginProcess::Type);
Vector<RefPtr<PluginProcessProxy> > m_pluginProcesses;
};
diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp
index 0c2e8689e..5a49f9598 100644
--- a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp
+++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp
@@ -50,12 +50,12 @@ namespace WebKit {
static const double minimumLifetime = 30 * 60;
static const double shutdownTimeout = 10 * 60;
-PassRefPtr<PluginProcessProxy> PluginProcessProxy::create(PluginProcessManager* PluginProcessManager, const PluginModuleInfo& pluginInfo)
+PassRefPtr<PluginProcessProxy> PluginProcessProxy::create(PluginProcessManager* PluginProcessManager, const PluginModuleInfo& pluginInfo, PluginProcess::Type processType)
{
- return adoptRef(new PluginProcessProxy(PluginProcessManager, pluginInfo));
+ return adoptRef(new PluginProcessProxy(PluginProcessManager, pluginInfo, processType));
}
-PluginProcessProxy::PluginProcessProxy(PluginProcessManager* PluginProcessManager, const PluginModuleInfo& pluginInfo)
+PluginProcessProxy::PluginProcessProxy(PluginProcessManager* PluginProcessManager, const PluginModuleInfo& pluginInfo, PluginProcess::Type processType)
: m_pluginProcessManager(PluginProcessManager)
, m_pluginInfo(pluginInfo)
, m_numPendingConnectionRequests(0)
@@ -64,6 +64,7 @@ PluginProcessProxy::PluginProcessProxy(PluginProcessManager* PluginProcessManage
, m_fullscreenWindowIsShowing(false)
, m_preFullscreenAppPresentationOptions(0)
#endif
+ , m_processType(processType)
{
ProcessLauncher::LaunchOptions launchOptions;
launchOptions.processType = ProcessLauncher::PluginProcess;
@@ -173,7 +174,7 @@ void PluginProcessProxy::didClose(CoreIPC::Connection*)
const Vector<WebContext*>& contexts = WebContext::allContexts();
for (size_t i = 0; i < contexts.size(); ++i)
- contexts[i]->sendToAllProcesses(Messages::WebProcess::PluginProcessCrashed(m_pluginInfo.path));
+ contexts[i]->sendToAllProcesses(Messages::WebProcess::PluginProcessCrashed(m_pluginInfo.path, m_processType));
// This will cause us to be deleted.
pluginProcessCrashedOrFailedToLaunch();
@@ -204,6 +205,7 @@ void PluginProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connectio
PluginProcessCreationParameters parameters;
parameters.pluginPath = m_pluginInfo.path;
+ parameters.processType = m_processType;
parameters.minimumLifetime = minimumLifetime;
parameters.terminationTimeout = shutdownTimeout;
diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h
index 1357e6c7f..194d7a373 100644
--- a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h
+++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h
@@ -30,6 +30,7 @@
#include "Connection.h"
#include "PluginModuleInfo.h"
+#include "PluginProcess.h"
#include "ProcessLauncher.h"
#include "WebProcessProxyMessages.h"
#include <wtf/Deque.h>
@@ -62,7 +63,7 @@ struct RawPluginMetaData {
class PluginProcessProxy : public RefCounted<PluginProcessProxy>, CoreIPC::Connection::Client, ProcessLauncher::Client {
public:
- static PassRefPtr<PluginProcessProxy> create(PluginProcessManager*, const PluginModuleInfo&);
+ static PassRefPtr<PluginProcessProxy> create(PluginProcessManager*, const PluginModuleInfo&, PluginProcess::Type);
~PluginProcessProxy();
const PluginModuleInfo& pluginInfo() const { return m_pluginInfo; }
@@ -82,6 +83,8 @@ public:
bool isValid() const { return m_connection; }
+ PluginProcess::Type processType() const { return m_processType; }
+
#if PLATFORM(MAC)
void setApplicationIsOccluded(bool);
@@ -97,7 +100,7 @@ public:
#endif
private:
- PluginProcessProxy(PluginProcessManager*, const PluginModuleInfo&);
+ PluginProcessProxy(PluginProcessManager*, const PluginModuleInfo&, PluginProcess::Type);
void pluginProcessCrashedOrFailedToLaunch();
@@ -171,6 +174,8 @@ private:
bool m_fullscreenWindowIsShowing;
unsigned m_preFullscreenAppPresentationOptions;
#endif
+
+ PluginProcess::Type m_processType;
};
} // namespace WebKit