// 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_VISITEDLINK_BROWSER_PARTITIONED_VISITEDLINK_WRITER_H_ #define COMPONENTS_VISITEDLINK_BROWSER_PARTITIONED_VISITEDLINK_WRITER_H_ #include <map> #include <set> #include "base/memory/read_only_shared_memory_region.h" #include "components/visitedlink/common/visitedlink_common.h" #include "components/visitedlink/core/visited_link.h" #include "content/public/browser/browser_context.h" namespace base { class WritableSharedMemoryMapping; } namespace url { class Origin; } namespace visitedlink { class VisitedLinkDelegate; // PartitionedVisitedLinkWriter constructs and writes to the partitioned // :visited links hashtable. There should only be one instance of // PartitionedVisitedLinkWriter, and it must be initialized before use. // // Much of this code is similar to or identical to the (unpartitioned) // VisitedLinkWriter class. PartitionedVisitedLinkWriter does not persist to // disk, the code has been "forked" into a separate class that relies on the // HistoryService's VisitedLinkDatabase to persist partitioned :visited link // browsing history across sessions. Once constructed from the // VisitedLinkDatabase, the partitioned hashtable is stored in a shared memory // instance. class PartitionedVisitedLinkWriter : public VisitedLinkCommon { … }; // NOTE: These methods are defined inline here, so we can share the compilation // of partitioned_visitedlink_writer.cc between the browser and the unit/perf // tests. #if defined(UNIT_TEST) || defined(PERF_TEST) || !defined(NDEBUG) inline void PartitionedVisitedLinkWriter::DebugValidate() { … } #endif } // namespace visitedlink #endif // COMPONENTS_VISITEDLINK_BROWSER_PARTITIONED_VISITEDLINK_WRITER_H_