blob: f324b9f396843766a0f372ebf4a970c4774f012f [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_APP_RESTORE_FULL_RESTORE_UTILS_H_
#define COMPONENTS_APP_RESTORE_FULL_RESTORE_UTILS_H_
#include <memory>
#include "base/component_export.h"
#include "ui/base/class_property.h"
#include "ui/views/widget/widget.h"
namespace app_restore {
struct AppLaunchInfo;
struct WindowInfo;
} // namespace app_restore
namespace aura {
class Window;
}
namespace base {
class FilePath;
}
namespace full_restore {
// Saves the app launch parameters to the full restore file.
COMPONENT_EXPORT(APP_RESTORE)
void SaveAppLaunchInfo(
const base::FilePath& profile_path,
std::unique_ptr<app_restore::AppLaunchInfo> app_launch_info);
// Saves the window information to the full restore file.
COMPONENT_EXPORT(APP_RESTORE)
void SaveWindowInfo(const app_restore::WindowInfo& window_info);
// Sets the current active profile path.
COMPONENT_EXPORT(APP_RESTORE)
void SetActiveProfilePath(const base::FilePath& profile_path);
// Sets the primary user profile path.
COMPONENT_EXPORT(APP_RESTORE)
void SetPrimaryProfilePath(const base::FilePath& profile_path);
// Returns true if there are app type browsers from the full restore file.
// Otherwise, returns false.
COMPONENT_EXPORT(APP_RESTORE)
bool HasAppTypeBrowser(const base::FilePath& profile_path);
// Returns true if there are normal browsers from the full restore file.
// Otherwise, returns false.
COMPONENT_EXPORT(APP_RESTORE)
bool HasBrowser(const base::FilePath& profile_path);
// Returns true if there is a window info for |restore_window_id| from the full
// restore file. Otherwise, returns false. This interface can't be used for Arc
// app windows.
COMPONENT_EXPORT(APP_RESTORE)
bool HasWindowInfo(int32_t restore_window_id);
COMPONENT_EXPORT(APP_RESTORE)
void AddChromeBrowserLaunchInfoForTesting(const base::FilePath& profile_path);
// Returns the full restore app id that's associated with |window|. Note this
// might be different with the window's kAppIdKey property value. kAppIdKey
// is only non-empty for Chrome apps and ARC apps, but empty for other apps (for
// example, browsers, PWAs, SWAs). This function however guarantees to return a
// valid app id value for a window that can be restored by full restore.
COMPONENT_EXPORT(APP_RESTORE)
std::string GetAppId(aura::Window* window);
// Invoked when an Chrome app Lacros window is created. `app_id` is the
// AppService id, and `window_id` is the wayland app_id property for the window.
COMPONENT_EXPORT(APP_RESTORE)
void OnLacrosChromeAppWindowAdded(const std::string& app_id,
const std::string& window_id);
// Invoked when an Chrome app Lacros window is removed. `app_id` is the
// AppService id, and `window_id` is the wayland app_id property for the window.
COMPONENT_EXPORT(APP_RESTORE)
void OnLacrosChromeAppWindowRemoved(const std::string& app_id,
const std::string& window_id);
} // namespace full_restore
#endif // COMPONENTS_APP_RESTORE_FULL_RESTORE_UTILS_H_