| // Copyright 2025 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "components/persistent_cache/test_utils.h" | |
| #include <utility> | |
| #include "base/containers/span.h" | |
| #include "base/test/gmock_expected_support.h" | |
| #include "components/persistent_cache/persistent_cache.h" | |
| #include "components/persistent_cache/persistent_cache_collection.h" | |
| namespace persistent_cache { | |
| Entry::Entry() = default; | |
| Entry::Entry(EntryMetadata metadata, base::HeapArray<uint8_t> content) | |
| : metadata(std::move(metadata)), content(std::move(content)) {} | |
| Entry::Entry(Entry&& other) = default; | |
| Entry& Entry::operator=(Entry&& other) = default; | |
| Entry::~Entry() = default; | |
| base::expected<std::optional<Entry>, TransactionError> FindEntry( | |
| PersistentCache& cache, | |
| base::span<const uint8_t> key) { | |
| std::optional<Entry> result; | |
| ASSIGN_OR_RETURN( | |
| auto metadata, | |
| cache.Find(key, [&result](size_t content_size) -> base::span<uint8_t> { | |
| result.emplace(EntryMetadata{}, | |
| base::HeapArray<uint8_t>::Uninit(content_size)); | |
| return result->content; | |
| })); | |
| if (metadata.has_value()) { // Cache hit. | |
| result->metadata = *std::move(metadata); | |
| } | |
| return result; | |
| } | |
| base::expected<std::optional<Entry>, TransactionError> FindEntry( | |
| PersistentCacheCollection& collection, | |
| const std::string& cache_id, | |
| base::span<const uint8_t> key) { | |
| std::optional<Entry> result; | |
| ASSIGN_OR_RETURN( | |
| auto metadata, | |
| collection.Find( | |
| cache_id, key, [&result](size_t content_size) -> base::span<uint8_t> { | |
| result.emplace(EntryMetadata{}, | |
| base::HeapArray<uint8_t>::Uninit(content_size)); | |
| return result->content; | |
| })); | |
| if (metadata.has_value()) { // Cache hit. | |
| result->metadata = *std::move(metadata); | |
| } | |
| return result; | |
| } | |
| } // namespace persistent_cache |