diff options
Diffstat (limited to 'Source/WebKit2/PluginProcess/PluginProcess.h')
-rw-r--r-- | Source/WebKit2/PluginProcess/PluginProcess.h | 80 |
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 |