// Copyright 2013 The Flutter 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 "flutter/shell/common/resource_cache_limit_calculator.h"

namespace flutter {

size_t ResourceCacheLimitCalculator::GetResourceCacheMaxBytes() {
  size_t max_bytes = 0;
  size_t max_bytes_threshold = max_bytes_threshold_ > 0
                                   ? max_bytes_threshold_
                                   : std::numeric_limits<size_t>::max();
  std::vector<fml::WeakPtr<ResourceCacheLimitItem>> live_items;
  for (auto item : items_) {
    if (item) {
      live_items.push_back(item);
      max_bytes += item->GetResourceCacheLimit();
    }
  }
  items_ = std::move(live_items);
  return std::min(max_bytes, max_bytes_threshold);
}

}  // namespace flutter
