/* static */
FunctionBrokerChild* FunctionBrokerChild::GetInstance() {
  MOZ_RELEASE_ASSERT(
      XRE_IsPluginProcess(),
      "FunctionBrokerChild can only be used in plugin processes");

  MOZ_ASSERT(sInstance, "Must initialize FunctionBrokerChild before using it");
  return sInstance;
}
/* static */ bool
FunctionBrokerChild::Initialize(Endpoint<PFunctionBrokerChild>&& aBrokerEndpoint)
{
  MOZ_RELEASE_ASSERT(XRE_IsPluginProcess(),
                     "FunctionBrokerChild can only be used in plugin processes");

  MOZ_ASSERT(!sInstance);
  FunctionBrokerThread* thread = FunctionBrokerThread::Create();
  if (!thread) {
    return false;
  }
  sInstance = new FunctionBrokerChild(thread, std::move(aBrokerEndpoint));
  return true;
}