#include "content/child/child_process.h"
#include <string.h>
#include "base/clang_profiling_buildflags.h"
#include "base/functional/bind.h"
#include "base/message_loop/message_pump_type.h"
#include "base/process/process_handle.h"
#include "base/synchronization/waitable_event.h"
#include "base/task/thread_pool/thread_pool_instance.h"
#include "base/threading/hang_watcher.h"
#include "base/threading/thread.h"
#include "build/build_config.h"
#include "build/config/compiler/compiler_buildflags.h"
#include "content/child/child_thread_impl.h"
#include "content/common/process_visibility_tracker.h"
#include "mojo/public/cpp/bindings/interface_endpoint_client.h"
#include "sandbox/policy/sandbox_type.h"
#include "services/tracing/public/cpp/trace_startup.h"
#include "third_party/abseil-cpp/absl/base/attributes.h"
#include "third_party/blink/public/common/features.h"
#if BUILDFLAG(CLANG_PROFILING_INSIDE_SANDBOX)
#include "base/test/clang_profiling.h"
#endif
#if BUILDFLAG(IS_ANDROID)
#include "content/common/android/cpu_time_metrics.h"
#endif
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#include "content/child/sandboxed_process_thread_type_handler.h"
#endif
namespace content {
namespace {
ABSL_CONST_INIT thread_local ChildProcess* child_process = …;
class ChildIOThread : public base::Thread { … };
}
ChildProcess::ChildProcess(base::ThreadType io_thread_type,
std::unique_ptr<base::ThreadPoolInstance::InitParams>
thread_pool_init_params)
: … { … }
ChildProcess::ChildProcess(
scoped_refptr<base::SingleThreadTaskRunner> io_thread_runner)
: … { … }
ChildProcess::~ChildProcess() { … }
ChildThreadImpl* ChildProcess::main_thread() { … }
void ChildProcess::set_main_thread(ChildThreadImpl* thread) { … }
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
void ChildProcess::SetIOThreadType(base::ThreadType thread_type) { … }
#endif
void ChildProcess::AddRefProcess() { … }
void ChildProcess::ReleaseProcess() { … }
ChildProcess* ChildProcess::current() { … }
base::WaitableEvent* ChildProcess::GetShutDownEvent() { … }
}