summaryrefslogtreecommitdiff
path: root/Source/WebKit2/PluginProcess/PluginProcess.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/PluginProcess/PluginProcess.h')
-rw-r--r--Source/WebKit2/PluginProcess/PluginProcess.h80
1 files changed, 53 insertions, 27 deletions
diff --git a/Source/WebKit2/PluginProcess/PluginProcess.h b/Source/WebKit2/PluginProcess/PluginProcess.h
index b8163bd1f..1cc4bf71a 100644
--- a/Source/WebKit2/PluginProcess/PluginProcess.h
+++ b/Source/WebKit2/PluginProcess/PluginProcess.h
@@ -26,22 +26,31 @@
#ifndef PluginProcess_h
#define PluginProcess_h
-#if ENABLE(PLUGIN_PROCESS)
+#if ENABLE(NETSCAPE_PLUGIN_API)
#include "ChildProcess.h"
+#include <WebCore/CountedUserActivity.h>
+#include <WebCore/AudioHardwareListener.h>
#include <wtf/Forward.h>
+#include <wtf/NeverDestroyed.h>
#include <wtf/text/WTFString.h>
+#if PLATFORM(COCOA)
+#include <WebCore/MachSendRight.h>
+#endif
+
namespace WebKit {
class NetscapePluginModule;
class WebProcessConnection;
struct PluginProcessCreationParameters;
-class PluginProcess : public ChildProcess {
+class PluginProcess : public ChildProcess, private WebCore::AudioHardwareListener::Client
+{
WTF_MAKE_NONCOPYABLE(PluginProcess);
+ friend class NeverDestroyed<PluginProcess>;
public:
- static PluginProcess& shared();
+ static PluginProcess& singleton();
void removeWebProcessConnection(WebProcessConnection*);
@@ -49,54 +58,67 @@ public:
const String& pluginPath() const { return m_pluginPath; }
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
void setModalWindowIsShowing(bool);
void setFullscreenWindowIsShowing(bool);
-#if USE(ACCELERATED_COMPOSITING)
- mach_port_t compositingRenderServerPort() const { return m_compositingRenderServerPort; }
-#endif
+ const WebCore::MachSendRight& compositingRenderServerPort() const { return m_compositingRenderServerPort; }
bool launchProcess(const String& launchPath, const Vector<String>& arguments);
bool launchApplicationAtURL(const String& urlString, const Vector<String>& arguments);
bool openURL(const String& urlString, int32_t& status, String& launchedURLString);
-
+ bool openFile(const String& urlString);
#endif
+ CountedUserActivity& connectionActivity() { return m_connectionActivity; }
+
private:
PluginProcess();
~PluginProcess();
// ChildProcess
- virtual void initializeProcess(const ChildProcessInitializationParameters&) OVERRIDE;
- virtual void initializeProcessName(const ChildProcessInitializationParameters&) OVERRIDE;
- virtual void initializeSandbox(const ChildProcessInitializationParameters&, SandboxInitializationParameters&) OVERRIDE;
- virtual bool shouldTerminate() OVERRIDE;
+ virtual void initializeProcess(const ChildProcessInitializationParameters&) override;
+ virtual void initializeProcessName(const ChildProcessInitializationParameters&) override;
+ virtual void initializeSandbox(const ChildProcessInitializationParameters&, SandboxInitializationParameters&) override;
+ virtual bool shouldTerminate() override;
void platformInitializeProcess(const ChildProcessInitializationParameters&);
- // CoreIPC::Connection::Client
- virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&) OVERRIDE;
- virtual void didClose(CoreIPC::Connection*) OVERRIDE;
- virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference messageReceiverName, CoreIPC::StringReference messageName) OVERRIDE;
+#if USE(APPKIT)
+ virtual void stopRunLoop() override;
+#endif
+
+ // IPC::Connection::Client
+ virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
+ virtual void didClose(IPC::Connection&) override;
+ virtual void didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference messageReceiverName, IPC::StringReference messageName) override;
+ virtual IPC::ProcessType localProcessType() override { return IPC::ProcessType::Plugin; }
+ virtual IPC::ProcessType remoteProcessType() override { return IPC::ProcessType::UI; }
// Message handlers.
- void didReceivePluginProcessMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
- void initializePluginProcess(const PluginProcessCreationParameters&);
+ void didReceivePluginProcessMessage(IPC::Connection&, IPC::MessageDecoder&);
+ void initializePluginProcess(PluginProcessCreationParameters&&);
void createWebProcessConnection();
+
void getSitesWithData(uint64_t callbackID);
- void clearSiteData(const Vector<String>& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID);
+ void deleteWebsiteData(std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID);
+ void deleteWebsiteDataForHostNames(const Vector<String>& hostNames, uint64_t callbackID);
+
+ // AudioHardwareListenerClient
+ virtual void audioHardwareDidBecomeActive() override;
+ virtual void audioHardwareDidBecomeInactive() override;
+ virtual void audioOutputDeviceChanged() override { }
- void platformInitializePluginProcess(const PluginProcessCreationParameters&);
+ void platformInitializePluginProcess(PluginProcessCreationParameters&&);
void setMinimumLifetime(double);
void minimumLifetimeTimerFired();
// Our web process connections.
- Vector<RefPtr<WebProcessConnection> > m_webProcessConnections;
+ Vector<RefPtr<WebProcessConnection>> m_webProcessConnections;
// The plug-in path.
String m_pluginPath;
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
String m_pluginBundleIdentifier;
#endif
@@ -105,18 +127,22 @@ private:
bool m_supportsAsynchronousPluginInitialization;
- WebCore::RunLoop::Timer<PluginProcess> m_minimumLifetimeTimer;
+ RunLoop::Timer<PluginProcess> m_minimumLifetimeTimer;
-#if USE(ACCELERATED_COMPOSITING) && PLATFORM(MAC)
+#if PLATFORM(COCOA)
// The Mach port used for accelerated compositing.
- mach_port_t m_compositingRenderServerPort;
+ WebCore::MachSendRight m_compositingRenderServerPort;
+
+ String m_nsurlCacheDirectory;
#endif
- static void lowMemoryHandler(bool critical);
+ CountedUserActivity m_connectionActivity;
+
+ RefPtr<WebCore::AudioHardwareListener> m_audioHardwareListener;
};
} // namespace WebKit
-#endif // ENABLE(PLUGIN_PROCESS)
+#endif // ENABLE(NETSCAPE_PLUGIN_API)
#endif // PluginProcess_h