blob: 900ee3329d2b5e92000c2af28fafa26efdedce35 [file] [log] [blame]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_HOST_LINUX_LOGIN_SESSION_SERVER_H_
#define REMOTING_HOST_LINUX_LOGIN_SESSION_SERVER_H_
#include <string>
#include "base/memory/raw_ptr.h"
#include "components/named_mojo_ipc_server/named_mojo_ipc_server.h"
#include "remoting/host/mojom/login_session.mojom.h"
namespace remoting {
// Class to run a mojo server on a named platform channel for the session
// info process to query information about its session.
class LoginSessionServer : public mojom::LoginSessionService {
public:
class Delegate {
public:
virtual ~Delegate() = default;
// Returns whether the given `session_id` is a session that is managed by
// Chrome Remote Desktop.
virtual bool IsRunningInCrdSession(const std::string& session_id) = 0;
};
explicit LoginSessionServer(Delegate* delegate);
~LoginSessionServer() override;
LoginSessionServer(const LoginSessionServer&) = delete;
LoginSessionServer& operator=(const LoginSessionServer&) = delete;
void StartServer();
void StopServer();
private:
// mojom::LoginSessionService implementation.
void IsRunningInCrdSession(IsRunningInCrdSessionCallback callback) override;
raw_ptr<Delegate> delegate_;
named_mojo_ipc_server::NamedMojoIpcServer<mojom::LoginSessionService>
ipc_server_;
};
} // namespace remoting
#endif // REMOTING_HOST_LINUX_LOGIN_SESSION_SERVER_H_