diff options
Diffstat (limited to 'chrome/plugin/plugin_thread.h')
-rw-r--r-- | chrome/plugin/plugin_thread.h | 48 |
1 files changed, 14 insertions, 34 deletions
diff --git a/chrome/plugin/plugin_thread.h b/chrome/plugin/plugin_thread.h index 46da0e4..38b989e 100644 --- a/chrome/plugin/plugin_thread.h +++ b/chrome/plugin/plugin_thread.h @@ -5,59 +5,39 @@ #ifndef CHROME_PLUGIN_PLUGIN_THREAD_H_ #define CHROME_PLUGIN_PLUGIN_THREAD_H_ -#include "base/thread.h" -#include "chrome/common/ipc_sync_channel.h" -#include "chrome/common/message_router.h" +#include "base/file_path.h" +#include "chrome/common/child_thread.h" #include "chrome/common/resource_dispatcher.h" #include "chrome/plugin/plugin_channel.h" -class PluginProcess; class NotificationService; // The PluginThread class represents a background thread where plugin instances // live. Communication occurs between WebPluginDelegateProxy in the renderer // process and WebPluginDelegateStub in this thread through IPC messages. -class PluginThread : public IPC::Channel::Listener, - public IPC::Message::Sender, - public base::Thread { +class PluginThread : public ChildThread { public: - PluginThread(PluginProcess *process, const std::wstring& channel_name); + PluginThread(); ~PluginThread(); - // IPC::Channel::Listener implementation: - virtual void OnMessageReceived(const IPC::Message& msg); - virtual void OnChannelError(); - - // IPC::Message::Sender implementation: - virtual bool Send(IPC::Message* msg); - // Returns the one plugin thread. - static PluginThread* GetPluginThread() { return plugin_thread_; } + static PluginThread* current(); // Returns the one true dispatcher. - ResourceDispatcher* resource_dispatcher() { - return resource_dispatcher_.get(); - } + ResourceDispatcher* resource_dispatcher() { return resource_dispatcher_.get(); } private: - // Thread implementation: - void Init(); - void CleanUp(); + virtual void OnControlMessageReceived(const IPC::Message& msg); + + // Thread implementation: + virtual void Init(); + virtual void CleanUp(); - void OnCreateChannel(int process_id, HANDLE renderer_handle); + void OnCreateChannel(int process_id, HANDLE renderer); void OnShutdownResponse(bool ok_to_shutdown); void OnPluginMessage(const std::vector<uint8> &data); void OnBrowserShutdown(); - // The process that has created this thread - PluginProcess *plugin_process_; - - // The message loop used to run tasks on the thread that started this thread. - MessageLoop* owner_loop_; - - std::wstring channel_name_; - scoped_ptr<IPC::SyncChannel> channel_; - scoped_ptr<NotificationService> notification_service_; // Handles resource loads for this view. @@ -67,8 +47,8 @@ class PluginThread : public IPC::Channel::Listener, // The plugin module which is preloaded in Init HMODULE preloaded_plugin_module_; - // Points to the one PluginThread object in the process. - static PluginThread* plugin_thread_; + // Points to the plugin file that this process hosts. + FilePath plugin_path_; DISALLOW_EVIL_CONSTRUCTORS(PluginThread); }; |