diff options
Diffstat (limited to 'chromium/base/fuchsia/process_context.cc')
-rw-r--r-- | chromium/base/fuchsia/process_context.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/chromium/base/fuchsia/process_context.cc b/chromium/base/fuchsia/process_context.cc new file mode 100644 index 00000000000..02dfa43be75 --- /dev/null +++ b/chromium/base/fuchsia/process_context.cc @@ -0,0 +1,41 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/fuchsia/process_context.h" + +#include <lib/sys/cpp/component_context.h> +#include <lib/sys/inspect/cpp/component.h> +#include <utility> + +#include "base/fuchsia/process_context.h" +#include "base/no_destructor.h" + +namespace base { + +namespace { +std::unique_ptr<sys::ComponentContext>* ProcessComponentContextPtr() { + static base::NoDestructor<std::unique_ptr<sys::ComponentContext>> value( + std::make_unique<sys::ComponentContext>( + sys::ServiceDirectory::CreateFromNamespace())); + return value.get(); +} +} // namespace + +sys::ComponentInspector* ComponentInspectorForProcess() { + static base::NoDestructor<sys::ComponentInspector> value( + ComponentContextForProcess()); + return value.get(); +} + +sys::ComponentContext* ComponentContextForProcess() { + return ProcessComponentContextPtr()->get(); +} + +std::unique_ptr<sys::ComponentContext> ReplaceComponentContextForProcessForTest( + std::unique_ptr<sys::ComponentContext> context) { + std::swap(*ProcessComponentContextPtr(), context); + return context; +} + +} // namespace base |