#ifndef ASH_WALLPAPER_WALLPAPER_FILE_MANAGER_H_
#define ASH_WALLPAPER_WALLPAPER_FILE_MANAGER_H_
#include <string>
#include "ash/ash_export.h"
#include "ash/public/cpp/wallpaper/wallpaper_controller.h"
#include "ash/public/cpp/wallpaper/wallpaper_types.h"
#include "ash/wallpaper/wallpaper_utils/wallpaper_resolution.h"
#include "base/files/file_path.h"
#include "base/functional/callback_forward.h"
#include "base/functional/callback_helpers.h"
#include "base/memory/ref_counted_memory.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "ui/gfx/image/image_skia.h"
#include "url/gurl.h"
namespace base {
class SequencedTaskRunner;
}
namespace ash {
base::FilePath GetOnlineWallpaperFilePath(const base::FilePath& wallpaper_dir,
const GURL& url,
WallpaperResolution resolution);
class ASH_EXPORT WallpaperFileManager {
public:
WallpaperFileManager();
WallpaperFileManager(const WallpaperFileManager&) = delete;
WallpaperFileManager& operator=(const WallpaperFileManager&) = delete;
~WallpaperFileManager();
using LoadWallpaperCallback = base::OnceCallback<void(const gfx::ImageSkia&)>;
void LoadWallpaper(WallpaperType type,
const base::FilePath& wallpaper_dir,
const std::string& location,
LoadWallpaperCallback callback);
using LoadPreviewImageCallback =
base::OnceCallback<void(scoped_refptr<base::RefCountedMemory>)>;
void LoadOnlineWallpaperPreview(const base::FilePath& wallpaper_dir,
const GURL& url,
LoadPreviewImageCallback callback);
using SaveWallpaperCallback = base::OnceCallback<void(const base::FilePath&)>;
void SaveWallpaperToDisk(
WallpaperType type,
const base::FilePath& wallpaper_dir,
const std::string& file_name,
WallpaperLayout layout,
const gfx::ImageSkia& image,
SaveWallpaperCallback callback = base::DoNothing(),
const std::string& wallpaper_files_id = std::string());
private:
void LoadFromDisk(LoadWallpaperCallback callback,
const base::FilePath& file_path);
scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
SEQUENCE_CHECKER(sequence_checker_);
base::WeakPtrFactory<WallpaperFileManager> weak_factory_{this};
};
}
#endif