// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_CHILD_CHILD_PROCESS_H_ #define CONTENT_CHILD_CHILD_PROCESS_H_ #include <memory> #include <vector> #include "base/auto_reset.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" #include "base/task/thread_pool/thread_pool_instance.h" #include "base/threading/platform_thread.h" #include "base/threading/thread.h" #include "content/common/content_export.h" namespace content { class ChildThreadImpl; // Base class for child processes of the browser process (i.e. renderer and // plugin host). This is a singleton object for each child process. // // The constructor will call ThreadPoolInstance::Start() unless a ThreadPool is // already running, which can happen when the ChildProcess object is // instantiated in the browser process or in tests. // // During process shutdown the following sequence of actions happens in // order. // // 1. ChildProcess::~ChildProcess() is called. // 2. Shutdown event is fired. Background threads should stop. // 3. ChildThreadImpl::Shutdown() is called. ChildThread is also deleted. // 4. IO thread is stopped. // 5. ThreadPoolInstance::Shutdown() is called if the constructor called // ThreadPoolInstance::Start(). // 6. Main message loop exits. // 7. Child process is now fully stopped. // // Note: IO thread outlives the ChildThreadImpl object. class CONTENT_EXPORT ChildProcess { … }; } // namespace content #endif // CONTENT_CHILD_CHILD_PROCESS_H_