// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_STORAGE_STORAGE_CONTROLLER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_STORAGE_STORAGE_CONTROLLER_H_ #include "base/functional/callback.h" #include "base/sequence_checker.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/public/common/dom_storage/session_storage_namespace_id.h" #include "third_party/blink/public/mojom/dom_storage/dom_storage.mojom-blink.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/storage/storage_area.h" #include "third_party/blink/renderer/platform/heap/persistent.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" namespace blink { class CachedStorageArea; class InspectorDOMStorageAgent; class LocalDOMWindow; class LocalFrame; class StorageNamespace; // Singleton that manages the creation & accounting for DOMStorage objects. It // does this by holding weak references to all session storage namespaces, and // owning the local storage namespace internally. The total cache size is // exposed with `TotalCacheSize()`, and `ClearAreasIfNeeded()` will - if our // total cache size is larger than `total_cache_limit` - clear away any cache // areas in live namespaces that no longer have references from Blink objects. // // SessionStorage StorageNamespace objects are created with // `CreateSessionStorageNamespace` and live as a supplement on the Page. // // The LocalStorage StorageNamespace object is owned internally, and // StorageController delegates the following methods to that namespace: // GetLocalStorageArea, AddLocalStorageInspectorStorageAgent, // RemoveLocalStorageInspectorStorageAgent class MODULES_EXPORT StorageController : public mojom::blink::DomStorageClient { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_STORAGE_STORAGE_CONTROLLER_H_