chromium/chrome/browser/ash/policy/skyvault/policy_utils.h

// 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_ASH_POLICY_SKYVAULT_POLICY_UTILS_H_
#define CHROME_BROWSER_ASH_POLICY_SKYVAULT_POLICY_UTILS_H_

#include "base/files/file_path.h"

class Profile;

namespace policy::local_user_files {

extern const char kGoogleDrivePolicyVariableName[],
    kOneDrivePolicyVariableName[];

// Enum describing where the admin configured the files to be saved.
enum class FileSaveDestination {};

// Supported cloud providers.
enum class CloudProvider {};

// Categories of errors that can occur during the file upload process.
enum class MigrationUploadError {};

// Returns whether local user files are enabled on the device by the flag and
// policy.
bool LocalUserFilesAllowed();

// If SkyVault migration is enabled, returns the `CloudProvider` to which local
// files should be uploaded, and `kNotSpecified` otherwise.
CloudProvider GetMigrationDestination();

// Get the destination where downloads are saved.
FileSaveDestination GetDownloadsDestination(Profile* profile);

// Get the destination where screen captures are saved.
FileSaveDestination GetScreenCaptureDestination(Profile* profile);

// Returns whether `download` should be saved to tmp/ directory.
bool DownloadToTemp(Profile* profile);

// Returns the path of MyFiles folder for `profile`.
base::FilePath GetMyFilesPath(Profile* profile);

}  // namespace policy::local_user_files

#endif  // CHROME_BROWSER_ASH_POLICY_SKYVAULT_POLICY_UTILS_H_