// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/browser/migration/migration_utils.h"
#include "base/check.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/logging.h"
#include "base/path_service.h"
#include "chromecast/base/cast_paths.h"
namespace chromecast {
namespace cast_browser_migration {
namespace {
constexpr char kLargeConfigExtension[] = ".large";
bool CopyConfigFileIfMissing(bool is_large) {
base::FilePath new_config_path;
CHECK(base::PathService::Get(FILE_CAST_BROWSER_CONFIG, &new_config_path));
if (is_large) {
new_config_path = new_config_path.AddExtension(kLargeConfigExtension);
}
if (base::PathExists(new_config_path)) {
return true;
}
base::FilePath old_config_path;
CHECK(base::PathService::Get(FILE_CAST_CONFIG, &old_config_path));
if (is_large) {
old_config_path = old_config_path.AddExtension(kLargeConfigExtension);
}
bool success = base::CopyFile(old_config_path, new_config_path);
if (!success) {
LOG(ERROR) << "Failed to copy pref config: " << old_config_path.value();
base::DeleteFile(new_config_path);
}
return success;
}
} // namespace
bool CopyPrefConfigsIfMissing() {
return CopyConfigFileIfMissing(/*is_large=*/false) &&
CopyConfigFileIfMissing(/*is_large=*/true);
}
} // namespace cast_browser_migration
} // namespace chromecast