#ifndef COMPONENTS_APP_RESTORE_APP_RESTORE_DATA_H_
#define COMPONENTS_APP_RESTORE_APP_RESTORE_DATA_H_
#include <memory>
#include <optional>
#include <vector>
#include "base/component_export.h"
#include "base/values.h"
#include "components/app_restore/window_info.h"
#include "components/services/app_service/public/cpp/app_launch_util.h"
#include "components/services/app_service/public/cpp/intent.h"
namespace app_restore {
struct AppLaunchInfo;
struct COMPONENT_EXPORT(APP_RESTORE) AppRestoreData {
AppRestoreData();
explicit AppRestoreData(base::Value::Dict&& value);
explicit AppRestoreData(std::unique_ptr<AppLaunchInfo> app_launch_info);
AppRestoreData(const AppRestoreData&) = delete;
AppRestoreData& operator=(const AppRestoreData&) = delete;
~AppRestoreData();
std::unique_ptr<AppRestoreData> Clone() const;
base::Value ConvertToValue() const;
void ModifyWindowInfo(const WindowInfo& info);
void ModifyThemeColor(uint32_t window_primary_color,
uint32_t window_status_bar_color);
void ClearWindowInfo();
std::unique_ptr<AppLaunchInfo> GetAppLaunchInfo(const std::string& app_id,
int window_id) const;
std::unique_ptr<WindowInfo> GetWindowInfo() const;
apps::WindowInfoPtr GetAppWindowInfo() const;
std::string ToString() const;
bool operator==(const AppRestoreData& other) const;
std::optional<int32_t> event_flag;
std::optional<int32_t> container;
std::optional<int32_t> disposition;
std::optional<GURL> override_url;
std::optional<int64_t> display_id;
std::optional<std::string> handler_id;
std::vector<base::FilePath> file_paths;
apps::IntentPtr intent = nullptr;
BrowserExtraInfo browser_extra_info;
WindowInfo window_info;
std::optional<uint32_t> primary_color;
std::optional<uint32_t> status_bar_color;
};
}
#endif