// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_CACHE_H_ #define COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_CACHE_H_ #include <memory> #include <string> #include "base/files/file_path.h" #include "base/functional/callback.h" #include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" #include "base/memory/ref_counted_memory.h" #include "base/threading/thread_checker.h" #include "components/search_provider_logos/logo_common.h" namespace search_provider_logos { // A file-based cache for the search provider's logo. This allows clients to // store and retrieve a logo (of type EncodedLogo) and its associated metadata // (of type LogoMetadata). Metadata can be updated independently from the logo // to handle cases where, e.g. the expiration date changes, but the logo stays // the same. If corruption is detected in the metadata or logo, the cache will // be cleared. // // Note: this class must only be used on a single thread. All methods are // are blocking, so this should not be used on the UI thread. // // The logo and its metadata are stored in files, so they persist even when // Chrome is closed. Once loaded from disk, the metadata is kept in memory to // enable quick retrieval. The logo is not kept around in memory because of its // size. class LogoCache { … }; } // namespace search_provider_logos #endif // COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_CACHE_H_