[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() {