1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 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 #ifndef BASE_FUCHSIA_DEFAULT_JOB_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_FUCHSIA_DEFAULT_JOB_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <lib/zx/job.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include "base/base_export.h" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace base { 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker // Gets and sets the job object used for creating new child processes, 15*6777b538SAndroid Build Coastguard Worker // and looking them up by their process IDs. 16*6777b538SAndroid Build Coastguard Worker // zx::job::default_job() will be returned if no job is explicitly set here. 17*6777b538SAndroid Build Coastguard Worker // Only valid handles may be passed to SetDefaultJob(). 18*6777b538SAndroid Build Coastguard Worker BASE_EXPORT zx::unowned_job GetDefaultJob(); 19*6777b538SAndroid Build Coastguard Worker BASE_EXPORT void SetDefaultJob(zx::job job); 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker // Replaces the current default job (if any) with the specified zx::job, and 22*6777b538SAndroid Build Coastguard Worker // restores the original default job when going out-of-scope. 23*6777b538SAndroid Build Coastguard Worker // Note that replacing the default job is not thread-safe! 24*6777b538SAndroid Build Coastguard Worker class BASE_EXPORT ScopedDefaultJobForTest { 25*6777b538SAndroid Build Coastguard Worker public: 26*6777b538SAndroid Build Coastguard Worker ScopedDefaultJobForTest(zx::job new_default_job); 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker ScopedDefaultJobForTest(const ScopedDefaultJobForTest&) = delete; 29*6777b538SAndroid Build Coastguard Worker ScopedDefaultJobForTest& operator=(const ScopedDefaultJobForTest&) = delete; 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker ~ScopedDefaultJobForTest(); 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker private: 34*6777b538SAndroid Build Coastguard Worker zx::job old_default_job_; 35*6777b538SAndroid Build Coastguard Worker }; 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker } // namespace base 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker #endif // BASE_FUCHSIA_DEFAULT_JOB_H_ 40