// 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 COMPONENTS_SERVICES_STORAGE_DOM_STORAGE_SESSION_STORAGE_DATA_MAP_H_ #define COMPONENTS_SERVICES_STORAGE_DOM_STORAGE_SESSION_STORAGE_DATA_MAP_H_ #include <memory> #include <vector> #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "components/services/storage/dom_storage/session_storage_metadata.h" #include "components/services/storage/dom_storage/storage_area_impl.h" namespace storage { class AsyncDomStorageDatabase; // Holds the StorageArea for a session storage data map. Every // namespace-origin area has a data map. To support shallow copying of the data // (copy-on-write), a single data map can be shared between multiple namespaces. // Thus this class is refcounted. This class has a one-to-one relationship with // the SessionStorageMetadata::MapData object, accessible from // |map_data()|. // // Neither this data map nor the inner StorageArea is bound to, as it needs // to be shared between multiple connections if it is shallow-copied. However, // it does allow it's user to keep track of the number of binding using // |binding_count()|, |AddBindingReference()|, and |RemoveBindingReference()|. class SessionStorageDataMap final : public StorageAreaImpl::Delegate, public base::RefCounted<SessionStorageDataMap> { … }; } // namespace storage #endif // COMPONENTS_SERVICES_STORAGE_DOM_STORAGE_SESSION_STORAGE_DATA_MAP_H_