From 09ae29be481546e51d08a56c42f284bae20c66f1 Mon Sep 17 00:00:00 2001 From: Tim Detwiler <tjdetwiler@google.com> Date: Tue, 23 Apr 2019 19:08:20 +0000 Subject: [PATCH] [guest] Soft transition from component -> sys. Once all consumers are on sys::ComponentContext we can remove the component::StartupContext code paths. Change-Id: If85c15c339b4591f891085a08ca63a7993856ffe --- garnet/public/lib/guest/BUILD.gn | 1 + .../public/lib/guest/scenic_wayland_dispatcher.cc | 13 +++++++++++-- garnet/public/lib/guest/scenic_wayland_dispatcher.h | 11 ++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/garnet/public/lib/guest/BUILD.gn b/garnet/public/lib/guest/BUILD.gn index 85ea6a3bab1..cd890386c63 100644 --- a/garnet/public/lib/guest/BUILD.gn +++ b/garnet/public/lib/guest/BUILD.gn @@ -15,6 +15,7 @@ source_set("guest") { "//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 9ac6c631bcd..70febf0748d 100644 --- a/garnet/public/lib/guest/scenic_wayland_dispatcher.cc +++ b/garnet/public/lib/guest/scenic_wayland_dispatcher.cc @@ -24,8 +24,7 @@ fuchsia::guest::WaylandDispatcher* ScenicWaylandDispatcher::GetOrStartBridge() { .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 @@ void ScenicWaylandDispatcher::OnNewView( 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 2f97c7d3472..02713b69812 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 @@ class ScenicWaylandDispatcher : public fuchsia::guest::WaylandDispatcher { 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 @@ class ScenicWaylandDispatcher : public fuchsia::guest::WaylandDispatcher { } 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_; -- GitLab