diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-23 17:33:22 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-23 17:33:22 +0000 |
commit | 9291ed107d2031cea55f324431ffee8d7bae1416 (patch) | |
tree | 5c1d8e6d992aa324f099062b0f85e3945fdfe761 /chrome/common/child_thread.h | |
parent | fefa8b29191ffd7730f7d3428697408bf979e6ee (diff) | |
download | chromium_src-9291ed107d2031cea55f324431ffee8d7bae1416.zip chromium_src-9291ed107d2031cea55f324431ffee8d7bae1416.tar.gz chromium_src-9291ed107d2031cea55f324431ffee8d7bae1416.tar.bz2 |
Revert 21355 because it might be causing all the new
crashes on reliability. It also seems to be causing
valgrind error.
Original change:
Switch the first thread in a child process to be the main thread, and make theIO thread be the second thread. The change is needed for plugins on mac.
Review URL: http://codereview.chromium.org/159274
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21398 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/child_thread.h')
-rw-r--r-- | chrome/common/child_thread.h | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/chrome/common/child_thread.h b/chrome/common/child_thread.h index 91ea9b7..1affe25 100644 --- a/chrome/common/child_thread.h +++ b/chrome/common/child_thread.h @@ -7,20 +7,18 @@ #include "base/basictypes.h" #include "base/scoped_ptr.h" +#include "base/thread.h" #include "chrome/common/message_router.h" #include "chrome/common/resource_dispatcher.h" #include "ipc/ipc_sync_channel.h" -class NotificationService; - -// The main thread of a child process derives from this class. +// Child processes's background thread should derive from this class. class ChildThread : public IPC::Channel::Listener, - public IPC::Message::Sender { + public IPC::Message::Sender, + public base::Thread { public: // Creates the thread. - ChildThread(); - // Used for single-process mode. - ChildThread(const std::string channel_name); + ChildThread(Thread::Options options); virtual ~ChildThread(); // IPC::Message::Sender implementation: @@ -30,39 +28,58 @@ class ChildThread : public IPC::Channel::Listener, void AddRoute(int32 routing_id, IPC::Channel::Listener* listener); void RemoveRoute(int32 routing_id); + MessageLoop* owner_loop() { return owner_loop_; } + ResourceDispatcher* resource_dispatcher() { return resource_dispatcher_.get(); } - MessageLoop* message_loop() { return message_loop_; } - // Returns the one child thread. static ChildThread* current(); protected: friend class ChildProcess; + // Starts the thread. + bool Run(); + + // Overrides the channel name. Used for --single-process mode. + void SetChannelName(const std::string& name) { channel_name_ = name; } + // Called when the process refcount is 0. void OnProcessFinalRelease(); + protected: + // The required stack size if V8 runs on a thread. + static const size_t kV8StackSize; + virtual void OnControlMessageReceived(const IPC::Message& msg) { } IPC::SyncChannel* channel() { return channel_.get(); } - private: - void Init(); + // Thread implementation. + virtual void Init(); + virtual void CleanUp(); + private: // IPC::Channel::Listener implementation: virtual void OnMessageReceived(const IPC::Message& msg); virtual void OnChannelError(); + // The message loop used to run tasks on the thread that started this thread. + MessageLoop* owner_loop_; + std::string channel_name_; scoped_ptr<IPC::SyncChannel> channel_; - // Implements message routing functionality to the consumers of ChildThread. + // Used only on the background render thread to implement message routing + // functionality to the consumers of the ChildThread. MessageRouter router_; + Thread::Options options_; + // Handles resource loads for this process. + // NOTE: this object lives on the owner thread. scoped_ptr<ResourceDispatcher> resource_dispatcher_; // If true, checks with the browser process before shutdown. This avoids race @@ -70,10 +87,6 @@ class ChildThread : public IPC::Channel::Listener, // that would addref it. bool check_with_browser_before_shutdown_; - MessageLoop* message_loop_; - - scoped_ptr<NotificationService> notification_service_; - DISALLOW_COPY_AND_ASSIGN(ChildThread); }; |