blob: b14d3817951695a3d0d53def1541901d76b80e8a [file] [log] [blame]
// Copyright 2018 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.
#ifndef COMPONENTS_IMAGE_FETCHER_CORE_CACHE_IMAGE_METADATA_STORE_H_
#define COMPONENTS_IMAGE_FETCHER_CORE_CACHE_IMAGE_METADATA_STORE_H_
#include <string>
#include "base/time/time.h"
#include "components/image_fetcher/core/cache/image_store_types.h"
namespace image_fetcher {
// Interface for an object capable of saving/loading image metadata.
class ImageMetadataStore {
public:
virtual ~ImageMetadataStore() = default;
// Initialize this store. If calls are made to the class before the
// initialization has completed, they are ignored. Ignored requests won't do
// any meaningful work. It's the responsibility of the caller to check for
// initialization before calling.
virtual void Initialize(base::OnceClosure callback) = 0;
// Returns true if initialization has finished successfully, else false.
// While this is false, initialization may have already started.
virtual bool IsInitialized() = 0;
// Adds or updates the image metadata for the |key|.
virtual void SaveImageMetadata(const std::string& key,
const size_t data_size) = 0;
// Deletes the image metadata for the |key|.
virtual void DeleteImageMetadata(const std::string& key) = 0;
// Updates |last_used_time| for the given |key| if it exists.
virtual void UpdateImageMetadata(const std::string& key) = 0;
// Returns all the keys this store has.
virtual void GetAllKeys(KeysCallback callback) = 0;
// Returns the total size of what's in metadata, possibly incorrect.
virtual int GetEstimatedSize() = 0;
// Deletes all metadata that's been cached before the boundary given as
// |expiration_time|.
void EvictImageMetadata(base::Time expiration_time, KeysCallback callback) {
EvictImageMetadata(expiration_time, /* Max size_t */ -1,
std::move(callback));
}
// Deletes all metadata that's been cached before the boundary given as
// |expiration_time|. Evicts other metadata until there are |bytes_left|
// in storage.
virtual void EvictImageMetadata(base::Time expiration_time,
const size_t bytes_left,
KeysCallback callback) = 0;
};
} // namespace image_fetcher
#endif // COMPONENTS_IMAGE_FETCHER_CORE_CACHE_IMAGE_METADATA_STORE_H_