summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/PluginProcess/PluginProcess.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/PluginProcess/PluginProcess.cpp')
-rw-r--r--Source/WebKit2/PluginProcess/PluginProcess.cpp43
1 files changed, 39 insertions, 4 deletions
diff --git a/Source/WebKit2/PluginProcess/PluginProcess.cpp b/Source/WebKit2/PluginProcess/PluginProcess.cpp
index 58eedba..9a9f3bc 100644
--- a/Source/WebKit2/PluginProcess/PluginProcess.cpp
+++ b/Source/WebKit2/PluginProcess/PluginProcess.cpp
@@ -28,6 +28,7 @@
#if ENABLE(PLUGIN_PROCESS)
+#include "ArgumentCoders.h"
#include "MachPort.h"
#include "NetscapePluginModule.h"
#include "PluginProcessProxyMessages.h"
@@ -72,10 +73,7 @@ void PluginProcess::removeWebProcessConnection(WebProcessConnection* webProcessC
m_webProcessConnections.remove(vectorIndex);
- if (m_webProcessConnections.isEmpty()) {
- // Start the shutdown timer.
- m_shutdownTimer.startOneShot(shutdownTimeout);
- }
+ startShutdownTimerIfNecessary();
}
NetscapePluginModule* PluginProcess::netscapePluginModule()
@@ -146,6 +144,43 @@ void PluginProcess::createWebProcessConnection()
m_shutdownTimer.stop();
}
+void PluginProcess::getSitesWithData(uint64_t callbackID)
+{
+ Vector<String> sites;
+ if (NetscapePluginModule* module = netscapePluginModule())
+ sites = module->sitesWithData();
+
+ m_connection->send(Messages::PluginProcessProxy::DidGetSitesWithData(sites, callbackID), 0);
+
+ startShutdownTimerIfNecessary();
+}
+
+void PluginProcess::clearSiteData(const Vector<String>& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID)
+{
+ if (NetscapePluginModule* module = netscapePluginModule()) {
+ if (sites.isEmpty()) {
+ // Clear everything.
+ module->clearSiteData(String(), flags, maxAgeInSeconds);
+ } else {
+ for (size_t i = 0; i < sites.size(); ++i)
+ module->clearSiteData(sites[i], flags, maxAgeInSeconds);
+ }
+ }
+
+ m_connection->send(Messages::PluginProcessProxy::DidClearSiteData(callbackID), 0);
+
+ startShutdownTimerIfNecessary();
+}
+
+void PluginProcess::startShutdownTimerIfNecessary()
+{
+ if (!m_webProcessConnections.isEmpty())
+ return;
+
+ // Start the shutdown timer.
+ m_shutdownTimer.startOneShot(shutdownTimeout);
+}
+
void PluginProcess::shutdownTimerFired()
{
RunLoop::current()->stop();