#ifndef CONTENT_BROWSER_SERVICE_HOST_UTILITY_PROCESS_CLIENT_H_
#define CONTENT_BROWSER_SERVICE_HOST_UTILITY_PROCESS_CLIENT_H_
#include <optional>
#include <string>
#include "base/functional/callback.h"
#include "base/process/process.h"
#include "content/browser/service_host/utility_process_host.h"
#include "content/public/browser/service_process_info.h"
#include "url/gurl.h"
namespace content {
class UtilityProcessClient : public UtilityProcessHost::Client {
public:
UtilityProcessClient(
const std::string& service_interface_name,
const std::optional<GURL>& site,
base::OnceCallback<void(const base::Process&)> process_callback);
UtilityProcessClient(const UtilityProcessClient&) = delete;
UtilityProcessClient& operator=(const UtilityProcessClient&) = delete;
~UtilityProcessClient() override;
void OnProcessLaunched(const base::Process& process) override;
void OnProcessTerminatedNormally() override;
void OnProcessCrashed(CrashType type) override;
private:
const std::string service_interface_name_;
const std::optional<GURL> site_;
base::OnceCallback<void(const base::Process&)> process_callback_;
std::optional<ServiceProcessInfo> process_info_;
};
}
#endif