// Copyright 2015 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.

#include "chrome/browser/extensions/updater/chromeos_extension_cache_delegate.h"

#include <stddef.h>

#include "base/path_service.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chromeos/constants/chromeos_paths.h"
#include "chromeos/settings/cros_settings_names.h"

namespace extensions {

ChromeOSExtensionCacheDelegate::ChromeOSExtensionCacheDelegate() {
  CHECK(base::PathService::Get(chromeos::DIR_DEVICE_EXTENSION_LOCAL_CACHE,
                               &cache_dir_));
}

ChromeOSExtensionCacheDelegate::ChromeOSExtensionCacheDelegate(
    const base::FilePath& cache_dir)
    : cache_dir_(cache_dir) {
}

const base::FilePath& ChromeOSExtensionCacheDelegate::GetCacheDir() const {
  return cache_dir_;
}

size_t ChromeOSExtensionCacheDelegate::GetMinimumCacheSize() const {
  // Default minimum size of local cache on disk, in bytes.
  static constexpr int kDefaultMinimumCacheSize = 1024 * 1024;
  return kDefaultMinimumCacheSize;
}

size_t ChromeOSExtensionCacheDelegate::GetMaximumCacheSize() const {
  // Default maximum size of local cache on disk, in bytes.
  static constexpr size_t kDefaultCacheSizeLimit = 256 * 1024 * 1024;

  size_t max_size = kDefaultCacheSizeLimit;
  int policy_size = 0;
  if (chromeos::CrosSettings::Get()->GetInteger(chromeos::kExtensionCacheSize,
                                                &policy_size) &&
      policy_size >= static_cast<int>(GetMinimumCacheSize())) {
    max_size = policy_size;
  }
  return max_size;
}

base::TimeDelta ChromeOSExtensionCacheDelegate::GetMaximumCacheAge() const {
  // Maximum age of unused extensions in the cache.
  static constexpr base::TimeDelta kMaxCacheAge = base::TimeDelta::FromDays(30);
  return kMaxCacheAge;
}

}  // namespace extensions
