[Fuchsia] Update base::StartupContext not to crash without service dir
Components V1 may start a component without passing a service directory.
In that case StartupContext was failing a DCHECK in incoming_services().
Updated it to log a warning in this case and create a dymmy
ServiceDirectoryClient.
Bug: 976869
Change-Id: I4c07deb500d4ec59627b0409887cc7941324f63d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1667781
Commit-Queue: Sergey Ulanov <[email protected]>
Reviewed-by: Wez <[email protected]>
Cr-Commit-Position: refs/heads/master@{#670690}
diff --git a/base/fuchsia/startup_context.cc b/base/fuchsia/startup_context.cc
index bf9f5cb..227b42a 100644
--- a/base/fuchsia/startup_context.cc
+++ b/base/fuchsia/startup_context.cc
@@ -64,6 +64,17 @@
fidl::InterfaceHandle<::fuchsia::io::Directory>(
std::move(incoming_directory)));
}
+
+ if (!incoming_services_) {
+ LOG(WARNING) << "Component started without a service directory";
+
+ // Create a dummy ServiceDirectoryClient with a channel that's not
+ // connected on the other end.
+ fidl::InterfaceHandle<::fuchsia::io::Directory> dummy_directory;
+ ignore_result(dummy_directory.NewRequest());
+ incoming_services_ =
+ std::make_unique<ServiceDirectoryClient>(std::move(dummy_directory));
+ }
}
StartupContext::~StartupContext() {