summaryrefslogtreecommitdiffstats
path: root/chrome/plugin/plugin_thread.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/plugin/plugin_thread.h')
-rw-r--r--chrome/plugin/plugin_thread.h48
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);
};