xref: /aosp_15_r20/external/cronet/base/process/process_stubs.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2020 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/process/process.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include <limits>
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker #include "base/immediate_crash.h"
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace base {
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker static constexpr ProcessHandle kCurrentProcessHandle =
14*6777b538SAndroid Build Coastguard Worker     std::numeric_limits<ProcessHandle>::max();
15*6777b538SAndroid Build Coastguard Worker 
Process(ProcessHandle handle)16*6777b538SAndroid Build Coastguard Worker Process::Process(ProcessHandle handle) : process_(handle) {
17*6777b538SAndroid Build Coastguard Worker   DCHECK(handle == kNullProcessHandle || handle == kCurrentProcessHandle);
18*6777b538SAndroid Build Coastguard Worker }
19*6777b538SAndroid Build Coastguard Worker 
Process(Process && other)20*6777b538SAndroid Build Coastguard Worker Process::Process(Process&& other) : process_(other.process_) {
21*6777b538SAndroid Build Coastguard Worker   other.Close();
22*6777b538SAndroid Build Coastguard Worker }
23*6777b538SAndroid Build Coastguard Worker 
24*6777b538SAndroid Build Coastguard Worker Process::~Process() = default;
25*6777b538SAndroid Build Coastguard Worker 
operator =(Process && other)26*6777b538SAndroid Build Coastguard Worker Process& Process::operator=(Process&& other) {
27*6777b538SAndroid Build Coastguard Worker   process_ = other.process_;
28*6777b538SAndroid Build Coastguard Worker   other.Close();
29*6777b538SAndroid Build Coastguard Worker   return *this;
30*6777b538SAndroid Build Coastguard Worker }
31*6777b538SAndroid Build Coastguard Worker 
32*6777b538SAndroid Build Coastguard Worker // static
Current()33*6777b538SAndroid Build Coastguard Worker Process Process::Current() {
34*6777b538SAndroid Build Coastguard Worker   return Process(kCurrentProcessHandle);
35*6777b538SAndroid Build Coastguard Worker }
36*6777b538SAndroid Build Coastguard Worker 
37*6777b538SAndroid Build Coastguard Worker // static
Open(ProcessId pid)38*6777b538SAndroid Build Coastguard Worker Process Process::Open(ProcessId pid) {
39*6777b538SAndroid Build Coastguard Worker   if (pid == GetCurrentProcId()) {
40*6777b538SAndroid Build Coastguard Worker     return Current();
41*6777b538SAndroid Build Coastguard Worker   }
42*6777b538SAndroid Build Coastguard Worker   return Process(pid);
43*6777b538SAndroid Build Coastguard Worker }
44*6777b538SAndroid Build Coastguard Worker 
45*6777b538SAndroid Build Coastguard Worker // static
OpenWithExtraPrivileges(ProcessId pid)46*6777b538SAndroid Build Coastguard Worker Process Process::OpenWithExtraPrivileges(ProcessId pid) {
47*6777b538SAndroid Build Coastguard Worker   return Open(pid);
48*6777b538SAndroid Build Coastguard Worker }
49*6777b538SAndroid Build Coastguard Worker 
50*6777b538SAndroid Build Coastguard Worker // static
TerminateCurrentProcessImmediately(int exit_code)51*6777b538SAndroid Build Coastguard Worker void Process::TerminateCurrentProcessImmediately(int exit_code) {
52*6777b538SAndroid Build Coastguard Worker   // This method is marked noreturn, so we crash rather than just provide an
53*6777b538SAndroid Build Coastguard Worker   // empty stub implementation.
54*6777b538SAndroid Build Coastguard Worker   ImmediateCrash();
55*6777b538SAndroid Build Coastguard Worker }
56*6777b538SAndroid Build Coastguard Worker 
Terminate(int exit_code,bool wait) const57*6777b538SAndroid Build Coastguard Worker bool Process::Terminate(int exit_code, bool wait) const {
58*6777b538SAndroid Build Coastguard Worker   return false;
59*6777b538SAndroid Build Coastguard Worker }
60*6777b538SAndroid Build Coastguard Worker 
IsValid() const61*6777b538SAndroid Build Coastguard Worker bool Process::IsValid() const {
62*6777b538SAndroid Build Coastguard Worker   return process_ != kNullProcessHandle;
63*6777b538SAndroid Build Coastguard Worker }
64*6777b538SAndroid Build Coastguard Worker 
Handle() const65*6777b538SAndroid Build Coastguard Worker ProcessHandle Process::Handle() const {
66*6777b538SAndroid Build Coastguard Worker   return process_;
67*6777b538SAndroid Build Coastguard Worker }
68*6777b538SAndroid Build Coastguard Worker 
Duplicate() const69*6777b538SAndroid Build Coastguard Worker Process Process::Duplicate() const {
70*6777b538SAndroid Build Coastguard Worker   return Process(process_);
71*6777b538SAndroid Build Coastguard Worker }
72*6777b538SAndroid Build Coastguard Worker 
Release()73*6777b538SAndroid Build Coastguard Worker ProcessHandle Process::Release() {
74*6777b538SAndroid Build Coastguard Worker   ProcessHandle handle = process_;
75*6777b538SAndroid Build Coastguard Worker   Close();
76*6777b538SAndroid Build Coastguard Worker   return handle;
77*6777b538SAndroid Build Coastguard Worker }
78*6777b538SAndroid Build Coastguard Worker 
Pid() const79*6777b538SAndroid Build Coastguard Worker ProcessId Process::Pid() const {
80*6777b538SAndroid Build Coastguard Worker   return process_;
81*6777b538SAndroid Build Coastguard Worker }
82*6777b538SAndroid Build Coastguard Worker 
CreationTime() const83*6777b538SAndroid Build Coastguard Worker Time Process::CreationTime() const {
84*6777b538SAndroid Build Coastguard Worker   return Time();
85*6777b538SAndroid Build Coastguard Worker }
86*6777b538SAndroid Build Coastguard Worker 
is_current() const87*6777b538SAndroid Build Coastguard Worker bool Process::is_current() const {
88*6777b538SAndroid Build Coastguard Worker   return Handle() == kCurrentProcessHandle;
89*6777b538SAndroid Build Coastguard Worker }
90*6777b538SAndroid Build Coastguard Worker 
Close()91*6777b538SAndroid Build Coastguard Worker void Process::Close() {
92*6777b538SAndroid Build Coastguard Worker   process_ = kNullProcessHandle;
93*6777b538SAndroid Build Coastguard Worker }
94*6777b538SAndroid Build Coastguard Worker 
WaitForExit(int * exit_code) const95*6777b538SAndroid Build Coastguard Worker bool Process::WaitForExit(int* exit_code) const {
96*6777b538SAndroid Build Coastguard Worker   return false;
97*6777b538SAndroid Build Coastguard Worker }
98*6777b538SAndroid Build Coastguard Worker 
WaitForExitWithTimeout(TimeDelta timeout,int * exit_code) const99*6777b538SAndroid Build Coastguard Worker bool Process::WaitForExitWithTimeout(TimeDelta timeout, int* exit_code) const {
100*6777b538SAndroid Build Coastguard Worker   return false;
101*6777b538SAndroid Build Coastguard Worker }
102*6777b538SAndroid Build Coastguard Worker 
Exited(int exit_code) const103*6777b538SAndroid Build Coastguard Worker void Process::Exited(int exit_code) const {}
104*6777b538SAndroid Build Coastguard Worker 
GetPriority() const105*6777b538SAndroid Build Coastguard Worker Process::Priority Process::GetPriority() const {
106*6777b538SAndroid Build Coastguard Worker   return Priority::kUserBlocking;
107*6777b538SAndroid Build Coastguard Worker }
108*6777b538SAndroid Build Coastguard Worker 
SetPriority(Priority priority)109*6777b538SAndroid Build Coastguard Worker bool Process::SetPriority(Priority priority) {
110*6777b538SAndroid Build Coastguard Worker   return false;
111*6777b538SAndroid Build Coastguard Worker }
112*6777b538SAndroid Build Coastguard Worker 
GetOSPriority() const113*6777b538SAndroid Build Coastguard Worker int Process::GetOSPriority() const {
114*6777b538SAndroid Build Coastguard Worker   return -1;
115*6777b538SAndroid Build Coastguard Worker }
116*6777b538SAndroid Build Coastguard Worker 
117*6777b538SAndroid Build Coastguard Worker }  // namespace base
118