// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_LACROS_FULL_RESTORE_CLIENT_LACROS_H_
#define CHROME_BROWSER_LACROS_FULL_RESTORE_CLIENT_LACROS_H_
#include "chromeos/crosapi/mojom/full_restore.mojom.h"
#include "components/sessions/core/session_types.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
// This class gathers full restore data for Ash.
class FullRestoreClientLacros : public crosapi::mojom::FullRestoreClient {
public:
FullRestoreClientLacros();
FullRestoreClientLacros(const FullRestoreClientLacros&) = delete;
FullRestoreClientLacros& operator=(const FullRestoreClientLacros&) = delete;
~FullRestoreClientLacros() override;
// crosapi::mojom::FullRestoreClient:
void GetSessionInformation(GetSessionInformationCallback callback) override;
private:
using SessionWindows = std::vector<std::unique_ptr<sessions::SessionWindow>>;
using SessionWindowsPair =
std::pair<SessionWindows, /*lacros_profile_id=*/uint64_t>;
void OnGotSession(base::OnceCallback<void(SessionWindowsPair)> barrier,
uint64_t profile_id,
SessionWindows session_windows,
SessionID active_window_id,
bool read_error);
void OnGotAllSessions(
GetSessionInformationCallback callback,
const std::vector<SessionWindowsPair>& all_session_windows);
mojo::Receiver<crosapi::mojom::FullRestoreClient> receiver_{this};
base::WeakPtrFactory<FullRestoreClientLacros> weak_ptr_factory_{this};
};
#endif // CHROME_BROWSER_LACROS_FULL_RESTORE_CLIENT_LACROS_H_