[guest] Soft transition from component -> sys.
Once all consumers are on sys::ComponentContext we can remove the
component::StartupContext code paths.
Change-Id: If85c15c339b4591f891085a08ca63a7993856ffe
diff --git a/garnet/public/lib/guest/BUILD.gn b/garnet/public/lib/guest/BUILD.gn
index 85ea6a3..cd89038 100644
--- a/garnet/public/lib/guest/BUILD.gn
+++ b/garnet/public/lib/guest/BUILD.gn
@@ -15,6 +15,7 @@
"//sdk/fidl/fuchsia.sys",
"//sdk/fidl/fuchsia.ui.app",
"//sdk/fidl/fuchsia.wayland",
+ "//sdk/lib/sys/cpp",
"//src/lib/fxl",
]
}
diff --git a/garnet/public/lib/guest/scenic_wayland_dispatcher.cc b/garnet/public/lib/guest/scenic_wayland_dispatcher.cc
index 9ac6c63..70febf0 100644
--- a/garnet/public/lib/guest/scenic_wayland_dispatcher.cc
+++ b/garnet/public/lib/guest/scenic_wayland_dispatcher.cc
@@ -24,8 +24,7 @@
.url = kWaylandDispatcherPackage,
.directory_request = services.NewRequest(),
};
- context_->launcher()->CreateComponent(std::move(launch_info),
- bridge_.NewRequest());
+ ConnectToLauncher()->CreateComponent(std::move(launch_info), bridge_.NewRequest());
// If we hit an error just close the bridge. It will get relaunched in
// response to the next new connection.
bridge_.set_error_handler(
@@ -59,4 +58,14 @@
listener_(std::move(view));
}
+fuchsia::sys::LauncherPtr ScenicWaylandDispatcher::ConnectToLauncher() const {
+ fuchsia::sys::LauncherPtr launcher;
+ if (deprecated_context_) {
+ deprecated_context_->ConnectToEnvironmentService(launcher.NewRequest());
+ } else {
+ context_->svc()->Connect(launcher.NewRequest());
+ }
+ return launcher;
+}
+
}; // namespace guest
diff --git a/garnet/public/lib/guest/scenic_wayland_dispatcher.h b/garnet/public/lib/guest/scenic_wayland_dispatcher.h
index 2f97c7d..02713b6 100644
--- a/garnet/public/lib/guest/scenic_wayland_dispatcher.h
+++ b/garnet/public/lib/guest/scenic_wayland_dispatcher.h
@@ -9,6 +9,7 @@
#include <fuchsia/wayland/cpp/fidl.h>
#include <lib/component/cpp/startup_context.h>
#include <lib/fidl/cpp/binding.h>
+#include <lib/sys/cpp/component_context.h>
#include <lib/zx/channel.h>
namespace guest {
@@ -24,6 +25,10 @@
ScenicWaylandDispatcher(component::StartupContext* context,
ViewListener listener = nullptr)
+ : deprecated_context_(context), listener_(std::move(listener)){};
+
+ ScenicWaylandDispatcher(sys::ComponentContext* context,
+ ViewListener listener = nullptr)
: context_(context), listener_(std::move(listener)){};
// |fuchsia::guest::WaylandDispatcher|
@@ -34,12 +39,16 @@
}
private:
+ fuchsia::sys::LauncherPtr ConnectToLauncher() const;
+
void OnNewView(fidl::InterfaceHandle<fuchsia::ui::app::ViewProvider> view);
void Reset(zx_status_t status);
fuchsia::guest::WaylandDispatcher* GetOrStartBridge();
- component::StartupContext* context_;
+ component::StartupContext* deprecated_context_;
+ sys::ComponentContext* context_;
+
ViewListener listener_;
fidl::Binding<fuchsia::guest::WaylandDispatcher> bindings_{this};
fuchsia::sys::ComponentControllerPtr bridge_;