// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_TRANSITIONS_NAVIGATION_ENTRY_SCREENSHOT_CACHE_H_ #define CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_TRANSITIONS_NAVIGATION_ENTRY_SCREENSHOT_CACHE_H_ #include "base/containers/flat_set.h" #include "base/functional/callback_forward.h" #include "base/memory/safe_ref.h" #include "content/browser/renderer_host/navigation_controller_impl.h" #include "content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_manager.h" #include "content/common/content_export.h" namespace content { class NavigationEntry; class NavigationEntryScreenshot; class NavigationEntryScreenshotManager; // This interface limits the access of the `NavigationEntryScreenshotManager` to // the `NavigationEntryScreenshotCache`: we do not want the manager to // accidentally perform any "Set" or "Take" operations on the cache. This is // because the manager is owned by the `BrowserContext` who has access across // the tabs, and we do not want any tab specific pixel data leaked across tabs. class NavigationEntryScreenshotCacheEvictor { … }; // `NavigationEntryScreenshotCache` tracks `NavigationEntryScreenshot`s per // `FrameTree`. It is owned by the `NavigationController` of the primary // `FrameTree` of a `WebContents`. class CONTENT_EXPORT NavigationEntryScreenshotCache : public NavigationEntryScreenshotCacheEvictor { … }; } // namespace content #endif // CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_TRANSITIONS_NAVIGATION_ENTRY_SCREENSHOT_CACHE_H_