diff options
Diffstat (limited to 'chrome/common/child_process.cc')
-rw-r--r-- | chrome/common/child_process.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/chrome/common/child_process.cc b/chrome/common/child_process.cc index b777ff2..f32708c 100644 --- a/chrome/common/child_process.cc +++ b/chrome/common/child_process.cc @@ -9,14 +9,14 @@ ChildProcess* ChildProcess::child_process_; -ChildProcess::ChildProcess() - : ref_count_(0), - shutdown_event_(true, false), - io_thread_("Chrome_ChildIOThread") { +ChildProcess::ChildProcess(ChildThread* child_thread) + : child_thread_(child_thread), + ref_count_(0), + shutdown_event_(true, false) { DCHECK(!child_process_); child_process_ = this; - - io_thread_.StartWithOptions(base::Thread::Options(MessageLoop::TYPE_IO, 0)); + if (child_thread_.get()) // null in unittests. + child_thread_->Run(); } ChildProcess::~ChildProcess() { @@ -28,25 +28,28 @@ ChildProcess::~ChildProcess() { // notice shutdown before the render process begins waiting for them to exit. shutdown_event_.Signal(); + if (child_thread_.get()) + child_thread_->Stop(); + child_process_ = NULL; } void ChildProcess::AddRefProcess() { - DCHECK(!main_thread_.get() || // null in unittests. - MessageLoop::current() == main_thread_->message_loop()); + DCHECK(!child_thread_.get() || // null in unittests. + MessageLoop::current() == child_thread_->message_loop()); ref_count_++; } void ChildProcess::ReleaseProcess() { - DCHECK(!main_thread_.get() || // null in unittests. - MessageLoop::current() == main_thread_->message_loop()); + DCHECK(!child_thread_.get() || // null in unittests. + MessageLoop::current() == child_thread_->message_loop()); DCHECK(ref_count_); DCHECK(child_process_); if (--ref_count_) return; - if (main_thread_.get()) // null in unittests. - main_thread_->OnProcessFinalRelease(); + if (child_thread_.get()) // null in unittests. + child_thread_->OnProcessFinalRelease(); } base::WaitableEvent* ChildProcess::GetShutDownEvent() { |