visitedlink_reader.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright (c) 2011 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_VISITEDLINK_RENDERER_VISITEDLINK_READER_H_
  5. #define COMPONENTS_VISITEDLINK_RENDERER_VISITEDLINK_READER_H_
  6. #include "base/compiler_specific.h"
  7. #include "base/memory/read_only_shared_memory_region.h"
  8. #include "base/memory/shared_memory_mapping.h"
  9. #include "base/memory/weak_ptr.h"
  10. #include "components/visitedlink/common/visitedlink.mojom.h"
  11. #include "components/visitedlink/common/visitedlink_common.h"
  12. #include "mojo/public/cpp/bindings/pending_receiver.h"
  13. #include "mojo/public/cpp/bindings/receiver.h"
  14. namespace visitedlink {
  15. // Reads the link coloring database provided by the writer. There can be any
  16. // number of readers reading the same database.
  17. class VisitedLinkReader : public VisitedLinkCommon,
  18. public mojom::VisitedLinkNotificationSink {
  19. public:
  20. VisitedLinkReader();
  21. VisitedLinkReader(const VisitedLinkReader&) = delete;
  22. VisitedLinkReader& operator=(const VisitedLinkReader&) = delete;
  23. ~VisitedLinkReader() override;
  24. base::RepeatingCallback<
  25. void(mojo::PendingReceiver<mojom::VisitedLinkNotificationSink>)>
  26. GetBindCallback();
  27. // mojom::VisitedLinkNotificationSink overrides.
  28. void UpdateVisitedLinks(
  29. base::ReadOnlySharedMemoryRegion table_region) override;
  30. void AddVisitedLinks(
  31. const std::vector<VisitedLinkReader::Fingerprint>& fingerprints) override;
  32. void ResetVisitedLinks(bool invalidate_hashes) override;
  33. private:
  34. void FreeTable();
  35. void Bind(mojo::PendingReceiver<mojom::VisitedLinkNotificationSink> receiver);
  36. base::ReadOnlySharedMemoryMapping table_mapping_;
  37. mojo::Receiver<mojom::VisitedLinkNotificationSink> receiver_{this};
  38. base::WeakPtrFactory<VisitedLinkReader> weak_factory_{this};
  39. };
  40. } // namespace visitedlink
  41. #endif // COMPONENTS_VISITEDLINK_RENDERER_VISITEDLINK_READER_H_