1 // Copyright 2017 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/fuchsia/default_job.h" 6 7 #include <zircon/types.h> 8 9 #include "base/check_op.h" 10 11 namespace base { 12 13 namespace { 14 zx_handle_t g_job = ZX_HANDLE_INVALID; 15 } 16 GetDefaultJob()17zx::unowned_job GetDefaultJob() { 18 if (g_job == ZX_HANDLE_INVALID) 19 return zx::job::default_job(); 20 return zx::unowned_job(g_job); 21 } 22 SetDefaultJob(zx::job job)23void SetDefaultJob(zx::job job) { 24 DCHECK_EQ(g_job, ZX_HANDLE_INVALID); 25 g_job = job.release(); 26 } 27 ScopedDefaultJobForTest(zx::job new_default_job)28ScopedDefaultJobForTest::ScopedDefaultJobForTest(zx::job new_default_job) { 29 DCHECK(new_default_job.is_valid()); 30 old_default_job_.reset(g_job); 31 g_job = new_default_job.release(); 32 } 33 ~ScopedDefaultJobForTest()34ScopedDefaultJobForTest::~ScopedDefaultJobForTest() { 35 DCHECK_NE(g_job, ZX_HANDLE_INVALID); 36 zx::job my_default_job(g_job); 37 g_job = old_default_job_.release(); 38 } 39 40 } // namespace base 41