// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "oobe_config/rollback_constants.h"

namespace oobe_config {

const base::FilePath kStatefulPartition =
    base::FilePath("/mnt/stateful_partition/");

const base::FilePath kSaveTempPath =
    base::FilePath("/var/lib/oobe_config_save/");
const base::FilePath kRestoreTempPath =
    base::FilePath("/var/lib/oobe_config_restore/");
const base::FilePath kUnencryptedStatefulRollbackDataPath = base::FilePath(
    "/mnt/stateful_partition/unencrypted/preserve/rollback_data");
const base::FilePath kEncryptedStatefulRollbackDataPath =
    base::FilePath("/var/lib/oobe_config_restore/rollback_data");

const base::FilePath kFirstStageCompletedFile =
    base::FilePath("/var/lib/oobe_config_restore/first_stage_completed");
const base::FilePath kSecondStageCompletedFile =
    base::FilePath("/var/lib/oobe_config_restore/second_stage_completed");

const base::FilePath kRollbackSaveMarkerFile =
    base::FilePath("/mnt/stateful_partition/.save_rollback_data");

const base::FilePath kOobeCompletedFile =
    base::FilePath("/home/chronos/.oobe_completed");
const char kOobeCompletedFileName[] = ".oobe_completed";

const base::FilePath kMetricsReportingEnabledFile =
    base::FilePath("/home/chronos/Consent To Send Stats");
const char kMetricsReportingEnabledFileName[] = "Consent To Send Stats";

const base::FilePath kInstallAttributesPath =
    base::FilePath("/home/.shadow/install_attributes.pb");
const char kInstallAttributesFileName[] = "install_attributes.pb";

const base::FilePath kOwnerKeyFilePath =
    base::FilePath("/var/lib/whitelist/owner.key");
const char kOwnerKeyFileName[] = "owner.key";

const base::FilePath kPolicyFileDirectory =
    base::FilePath("/var/lib/whitelist/");
const char kPolicyFileName[] = "policy";
const char kPolicyFileNamePattern[] = "policy*";

const base::FilePath kShillDefaultProfilePath =
    base::FilePath("/var/cache/shill/default.profile");
const char kShillDefaultProfileFileName[] = "default.profile";

const char kPolicyDotOneFileNameForTesting[] = "policy.1";

const char kOobeConfigSaveUsername[] = "oobe_config_save";
const char kRootUsername[] = "root";
const char kPreserveGroupName[] = "preserve";

}  // namespace oobe_config
