| // Copyright 2024 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_PERSISTENT_CACHE_BACKEND_PARAMS_H_ |
| #define COMPONENTS_PERSISTENT_CACHE_BACKEND_PARAMS_H_ |
| |
| #include "base/component_export.h" |
| #include "base/containers/flat_map.h" |
| #include "base/files/file.h" |
| |
| namespace persistent_cache { |
| |
| enum class BackendType { |
| kMock = 0, |
| kSqlite = 1, |
| kMaxValue = kSqlite, |
| }; |
| |
| // This struct contains fields necessary to configure a persistent |
| // cache backend. |
| struct COMPONENT_EXPORT(PERSISTENT_CACHE) BackendParams { |
| BackendParams(); |
| BackendParams(BackendParams& other) = delete; |
| BackendParams& operator=(const BackendParams& other) = delete; |
| BackendParams(BackendParams&& other); |
| BackendParams& operator=(BackendParams&& other); |
| ~BackendParams(); |
| |
| BackendParams Copy() const; |
| |
| // TODO(crbug.com/377475540): Currently this class is deeply tied to the |
| // sqlite implementation. Once the conversion to and from mojo types is |
| // implemented this class should become an abstract class specialized for each |
| // backend type. |
| BackendType type; |
| base::File db_file; |
| bool db_file_is_writable = false; |
| base::File journal_file; |
| bool journal_file_is_writable = false; |
| }; |
| |
| } // namespace persistent_cache |
| |
| #endif // COMPONENTS_PERSISTENT_CACHE_BACKEND_PARAMS_H_ |