[modular][inspect] add the initial plumbing for the Inspect API
Root is added to sessionmgr and plumbed through to session storage.
running `fx shell iquery --find . --recursive` now shows:
./hub/c/sessionmgr.cmx/180847/out/objects/root.inspect
./hub/c/sessionmgr.cmx/180847/system_objects
Change-Id: I62a584ec2ba24ec0119326adb42e065dd5fba1e3
diff --git a/peridot/bin/sessionmgr/BUILD.gn b/peridot/bin/sessionmgr/BUILD.gn
index 0097f9e..b3657da 100644
--- a/peridot/bin/sessionmgr/BUILD.gn
+++ b/peridot/bin/sessionmgr/BUILD.gn
@@ -25,6 +25,7 @@
"//peridot/public/lib/app_driver/cpp:app_driver",
"//sdk/fidl/fuchsia.modular.internal",
"//sdk/lib/fidl/cpp",
+ "//sdk/lib/sys/inspect/cpp",
"//zircon/public/lib/async-loop-cpp",
"//zircon/public/lib/trace-provider-with-fdio",
]
@@ -94,6 +95,7 @@
"//peridot/public/lib/async/cpp:operation",
"//sdk/lib/fidl/cpp",
"//sdk/lib/sys/cpp",
+ "//sdk/lib/sys/inspect/cpp",
"//sdk/lib/ui/scenic/cpp",
"//src/ledger/bin/fidl",
"//src/lib/fxl",
@@ -276,6 +278,7 @@
"//peridot/lib/ledger_client:constants",
"//sdk/lib/sys/cpp",
"//sdk/lib/sys/cpp/testing:unit",
+ "//sdk/lib/sys/inspect/cpp",
"//sdk/lib/ui/scenic/cpp",
"//src/lib/fxl/test:gtest_main",
"//third_party/googletest:gmock",
diff --git a/peridot/bin/sessionmgr/puppet_master/dispatch_story_command_executor_unittest.cc b/peridot/bin/sessionmgr/puppet_master/dispatch_story_command_executor_unittest.cc
index ff95079..86adaec 100644
--- a/peridot/bin/sessionmgr/puppet_master/dispatch_story_command_executor_unittest.cc
+++ b/peridot/bin/sessionmgr/puppet_master/dispatch_story_command_executor_unittest.cc
@@ -54,7 +54,8 @@
protected:
void SetUp() override {
TestWithLedger::SetUp();
- session_storage_ = std::make_unique<SessionStorage>(ledger_client(), LedgerPageId());
+ session_storage_ =
+ std::make_unique<SessionStorage>(ledger_client(), LedgerPageId());
}
void Reset() {
diff --git a/peridot/bin/sessionmgr/sessionmgr.cc b/peridot/bin/sessionmgr/sessionmgr.cc
index c13f49c..556e49a 100644
--- a/peridot/bin/sessionmgr/sessionmgr.cc
+++ b/peridot/bin/sessionmgr/sessionmgr.cc
@@ -8,13 +8,15 @@
#include <lib/fit/defer.h>
#include <lib/fit/function.h>
#include <lib/sys/cpp/component_context.h>
+#include <lib/sys/inspect/cpp/component.h>
+
+#include <memory>
+
#include <src/lib/fxl/command_line.h>
#include <src/lib/fxl/macros.h>
#include <src/lib/fxl/strings/split_string.h>
#include <trace-provider/provider.h>
-#include <memory>
-
#include "peridot/bin/basemgr/cobalt/cobalt.h"
#include "peridot/bin/sessionmgr/sessionmgr_impl.h"
#include "peridot/lib/modular_config/modular_config.h"
@@ -90,15 +92,19 @@
async::Loop loop(&kAsyncLoopConfigAttachToThread);
+ auto component_context = sys::ComponentContext::Create();
+ auto inspector = sys::ComponentInspector::Initialize(component_context.get());
+ inspect::Node& inspect_root = inspector->root();
+
trace::TraceProviderWithFdio trace_provider(loop.dispatcher());
- std::unique_ptr<sys::ComponentContext> component_context(sys::ComponentContext::Create());
auto cobalt_cleanup =
SetupCobalt((config.enable_cobalt()), std::move(loop.dispatcher()), component_context.get());
modular::AppDriver<modular::SessionmgrImpl> driver(
component_context->outgoing(),
- std::make_unique<modular::SessionmgrImpl>(component_context.get(), std::move(config)),
+ std::make_unique<modular::SessionmgrImpl>(component_context.get(), std::move(config),
+ std::move(inspect_root)),
[&loop, &cobalt_cleanup] {
cobalt_cleanup.call();
loop.Quit();
diff --git a/peridot/bin/sessionmgr/sessionmgr_impl.cc b/peridot/bin/sessionmgr/sessionmgr_impl.cc
index 3827c1f..6673f21 100644
--- a/peridot/bin/sessionmgr/sessionmgr_impl.cc
+++ b/peridot/bin/sessionmgr/sessionmgr_impl.cc
@@ -175,9 +175,11 @@
};
SessionmgrImpl::SessionmgrImpl(sys::ComponentContext* const component_context,
- fuchsia::modular::session::SessionmgrConfig config)
+ fuchsia::modular::session::SessionmgrConfig config,
+ inspect::Node node_object)
: component_context_(component_context),
config_(std::move(config)),
+ node_(std::move(node_object)),
story_provider_impl_("StoryProviderImpl"),
agent_runner_("AgentRunner"),
weak_ptr_factory_(this) {
@@ -606,8 +608,9 @@
// all modules to be terminated before agents are terminated. Agents must
// outlive the stories which contain modules that are connected to those
// agents.
- session_storage_ =
- std::make_unique<SessionStorage>(ledger_client_.get(), fuchsia::ledger::PageId());
+
+ session_storage_ = std::make_unique<SessionStorage>(
+ ledger_client_.get(), fuchsia::ledger::PageId());
module_facet_reader_.reset(
new ModuleFacetReaderImpl(component_context_->svc()->Connect<fuchsia::sys::Loader>()));
diff --git a/peridot/bin/sessionmgr/sessionmgr_impl.h b/peridot/bin/sessionmgr/sessionmgr_impl.h
index 7c4037e..0c09161 100644
--- a/peridot/bin/sessionmgr/sessionmgr_impl.h
+++ b/peridot/bin/sessionmgr/sessionmgr_impl.h
@@ -20,6 +20,7 @@
#include <lib/fidl/cpp/binding.h>
#include <lib/fidl/cpp/interface_ptr.h>
#include <lib/fit/function.h>
+#include <lib/sys/inspect/cpp/component.h>
#include <memory>
#include <string>
@@ -63,7 +64,7 @@
EntityProviderLauncher {
public:
SessionmgrImpl(sys::ComponentContext* component_context,
- fuchsia::modular::session::SessionmgrConfig config);
+ fuchsia::modular::session::SessionmgrConfig config, inspect::Node object);
~SessionmgrImpl() override;
// |AppDriver| calls this.
@@ -184,6 +185,9 @@
sys::ComponentContext* const component_context_;
fuchsia::modular::session::SessionmgrConfig config_;
+
+ inspect::Node node_;
+
std::unique_ptr<scoped_tmpfs::ScopedTmpFS> memfs_for_ledger_;
fidl::BindingSet<fuchsia::modular::internal::Sessionmgr> bindings_;
diff --git a/peridot/bin/sessionmgr/sessionmgr_impl_unittest.cc b/peridot/bin/sessionmgr/sessionmgr_impl_unittest.cc
index 23c33b1..8b15402 100644
--- a/peridot/bin/sessionmgr/sessionmgr_impl_unittest.cc
+++ b/peridot/bin/sessionmgr/sessionmgr_impl_unittest.cc
@@ -277,8 +277,10 @@
component_context_provider.service_directory_provider()->AddService(fake_launcher.GetHandler());
+ inspect::Node root_node;
fuchsia::modular::internal::SessionmgrPtr sessionmgr;
- SessionmgrImpl sessionmgr_impl(component_context_provider.context(), std::move(config));
+ SessionmgrImpl sessionmgr_impl(component_context_provider.context(), std::move(config),
+ std::move(root_node));
component_context_provider.ConnectToPublicService(sessionmgr.NewRequest());
sessionmgr.set_error_handler([](zx_status_t status) {
diff --git a/peridot/bin/sessionmgr/story_runner/BUILD.gn b/peridot/bin/sessionmgr/story_runner/BUILD.gn
index 717e5d8..80526bb 100644
--- a/peridot/bin/sessionmgr/story_runner/BUILD.gn
+++ b/peridot/bin/sessionmgr/story_runner/BUILD.gn
@@ -77,6 +77,7 @@
"//sdk/fidl/fuchsia.ui.views",
"//sdk/lib/fidl/cpp",
"//sdk/lib/sys/cpp",
+ "//sdk/lib/sys/inspect/cpp",
"//src/ledger/bin/fidl",
"//src/lib/fxl",
]