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 #include "base/fuchsia/default_job.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include <zircon/types.h> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker #include "base/check_op.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker namespace base { 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker namespace { 14*6777b538SAndroid Build Coastguard Worker zx_handle_t g_job = ZX_HANDLE_INVALID; 15*6777b538SAndroid Build Coastguard Worker } 16*6777b538SAndroid Build Coastguard Worker GetDefaultJob()17*6777b538SAndroid Build Coastguard Workerzx::unowned_job GetDefaultJob() { 18*6777b538SAndroid Build Coastguard Worker if (g_job == ZX_HANDLE_INVALID) 19*6777b538SAndroid Build Coastguard Worker return zx::job::default_job(); 20*6777b538SAndroid Build Coastguard Worker return zx::unowned_job(g_job); 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker SetDefaultJob(zx::job job)23*6777b538SAndroid Build Coastguard Workervoid SetDefaultJob(zx::job job) { 24*6777b538SAndroid Build Coastguard Worker DCHECK_EQ(g_job, ZX_HANDLE_INVALID); 25*6777b538SAndroid Build Coastguard Worker g_job = job.release(); 26*6777b538SAndroid Build Coastguard Worker } 27*6777b538SAndroid Build Coastguard Worker ScopedDefaultJobForTest(zx::job new_default_job)28*6777b538SAndroid Build Coastguard WorkerScopedDefaultJobForTest::ScopedDefaultJobForTest(zx::job new_default_job) { 29*6777b538SAndroid Build Coastguard Worker DCHECK(new_default_job.is_valid()); 30*6777b538SAndroid Build Coastguard Worker old_default_job_.reset(g_job); 31*6777b538SAndroid Build Coastguard Worker g_job = new_default_job.release(); 32*6777b538SAndroid Build Coastguard Worker } 33*6777b538SAndroid Build Coastguard Worker ~ScopedDefaultJobForTest()34*6777b538SAndroid Build Coastguard WorkerScopedDefaultJobForTest::~ScopedDefaultJobForTest() { 35*6777b538SAndroid Build Coastguard Worker DCHECK_NE(g_job, ZX_HANDLE_INVALID); 36*6777b538SAndroid Build Coastguard Worker zx::job my_default_job(g_job); 37*6777b538SAndroid Build Coastguard Worker g_job = old_default_job_.release(); 38*6777b538SAndroid Build Coastguard Worker } 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker } // namespace base 41