summaryrefslogtreecommitdiffstats
path: root/chrome/plugin/plugin_thread.h
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-21 08:05:28 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-21 08:05:28 +0000
commit8930d471c128ed74b11beaa78ea1b171c1ac7157 (patch)
tree5a20cb03c8e5019385709bc069e67f03488c41a1 /chrome/plugin/plugin_thread.h
parenta41fae8db8109bfeed047015b77b0d9227118540 (diff)
downloadchromium_src-8930d471c128ed74b11beaa78ea1b171c1ac7157.zip
chromium_src-8930d471c128ed74b11beaa78ea1b171c1ac7157.tar.gz
chromium_src-8930d471c128ed74b11beaa78ea1b171c1ac7157.tar.bz2
Refactor code from RenderThread and PluginThread and move it to ChildThread. ChildProcess now owns the ChildThread, which removes duplicate code and simplifies things.
Clean up ChildProcess, there really was no need for all the templates and statics in it and its subclasses. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=10080 Review URL: http://codereview.chromium.org/21502 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10144 0039d316-1c4b-4281-b951-d872f2087c98
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);
};