blob: 806a4b0aa1d595bceecc42596be275971798f54a [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/utility/utility_service_factory.h"
#include <utility>
#include "base/debug/crash_logging.h"
#include "base/process/current_process.h"
#include "base/trace_event/trace_log.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_features.h"
#include "content/public/utility/content_utility_client.h"
#include "content/public/utility/utility_thread.h"
#include "content/utility/utility_thread_impl.h"
namespace content {
UtilityServiceFactory::UtilityServiceFactory() = default;
UtilityServiceFactory::~UtilityServiceFactory() = default;
void UtilityServiceFactory::RunService(
const std::string& service_name,
mojo::ScopedMessagePipeHandle service_pipe) {
if (base::CurrentProcess::GetInstance().IsProcessNameEmpty()) {
base::CurrentProcess::GetInstance().SetProcessType(
GetCurrentProcessType(service_name));
}
static auto* const service_name_crash_key =
base::debug::AllocateCrashKeyString("service-name",
base::debug::CrashKeySize::Size32);
base::debug::SetCrashKeyString(service_name_crash_key, service_name);
if (GetContentClient()->utility()->HandleServiceRequestDeprecated(
service_name, std::move(service_pipe))) {
return;
}
// Nothing knew how to handle this request. Complain loudly and die.
LOG(ERROR) << "Ignoring request to start unknown service: " << service_name;
UtilityThreadImpl* utility_thread =
static_cast<UtilityThreadImpl*>(UtilityThread::Get());
utility_thread->Shutdown();
utility_thread->ReleaseProcess();
}
} // namespace content