blob: a311e67db8d467f060b47bcabc7dbcbab3119e16 [file] [log] [blame]
// Copyright 2017 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_PUBLIC_TEST_TEST_STORAGE_PARTITION_H_
#define CONTENT_PUBLIC_TEST_TEST_STORAGE_PARTITION_H_
#include "base/files/file_path.h"
#include "base/functional/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "components/services/storage/privileged/mojom/indexed_db_control.mojom.h"
#include "components/services/storage/public/cpp/constants.h"
#include "components/services/storage/public/mojom/cache_storage_control.mojom.h"
#include "components/services/storage/public/mojom/local_storage_control.mojom.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/storage_partition_config.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/mojom/cert_verifier_service_updater.mojom.h"
#include "services/network/public/mojom/network_context.mojom.h"
namespace blink {
class StorageKey;
} // namespace blink
namespace leveldb_proto {
class ProtoDatabaseProvider;
} // namespace leveldb_proto
namespace network {
class TestURLLoaderFactory;
namespace mojom {
class NetworkContext;
} // namespace mojom
} // namespace network
namespace content {
class BackgroundSyncContext;
class DevToolsBackgroundServicesContext;
class DOMStorageContext;
class FileSystemAccessEntryFactory;
class HostZoomLevelContext;
class HostZoomMap;
class PlatformNotificationContext;
class ServiceWorkerContext;
class ZoomLevelDelegate;
// Fake implementation of StoragePartition.
class TestStoragePartition : public StoragePartition {
public:
TestStoragePartition();
TestStoragePartition(const TestStoragePartition&) = delete;
TestStoragePartition& operator=(const TestStoragePartition&) = delete;
~TestStoragePartition() override;
void set_config(StoragePartitionConfig config) { config_ = config; }
const StoragePartitionConfig& GetConfig() const override;
void set_path(base::FilePath file_path) { file_path_ = file_path; }
const base::FilePath& GetPath() const override;
void set_network_context(network::mojom::NetworkContext* context) {
network_context_ = context;
}
network::mojom::NetworkContext* GetNetworkContext() override;
cert_verifier::mojom::CertVerifierServiceUpdater*
GetCertVerifierServiceUpdater() override;
storage::SharedStorageManager* GetSharedStorageManager() override;
void set_url_loader_factory_for_browser_process(
network::TestURLLoaderFactory* factory) {
test_url_loader_factory_ = factory;
}
scoped_refptr<network::SharedURLLoaderFactory>
GetURLLoaderFactoryForBrowserProcess() override;
std::unique_ptr<network::PendingSharedURLLoaderFactory>
GetURLLoaderFactoryForBrowserProcessIOThread() override;
void set_cookie_manager_for_browser_process(
network::mojom::CookieManager* cookie_manager_for_browser_process) {
cookie_manager_for_browser_process_ = cookie_manager_for_browser_process;
}
network::mojom::CookieManager* GetCookieManagerForBrowserProcess() override;
void CreateTrustTokenQueryAnswerer(
mojo::PendingReceiver<network::mojom::TrustTokenQueryAnswerer> receiver,
const url::Origin& top_frame_origin) override;
mojo::PendingRemote<network::mojom::URLLoaderNetworkServiceObserver>
CreateURLLoaderNetworkObserverForFrame(int process_id,
int routing_id) override;
mojo::PendingRemote<network::mojom::URLLoaderNetworkServiceObserver>
CreateURLLoaderNetworkObserverForNavigationRequest(
NavigationRequest& navigation_request) override;
void set_quota_manager(storage::QuotaManager* manager) {
quota_manager_ = manager;
}
storage::QuotaManager* GetQuotaManager() override;
void set_file_system_context(storage::FileSystemContext* context) {
file_system_context_ = context;
}
storage::FileSystemContext* GetFileSystemContext() override;
void set_background_sync_context(BackgroundSyncContext* context) {
background_sync_context_ = context;
}
BackgroundSyncContext* GetBackgroundSyncContext() override;
void set_dom_storage_context(DOMStorageContext* context) {
dom_storage_context_ = context;
}
DOMStorageContext* GetDOMStorageContext() override;
storage::mojom::LocalStorageControl* GetLocalStorageControl() override;
storage::mojom::IndexedDBControl& GetIndexedDBControl() override;
FileSystemAccessEntryFactory* GetFileSystemAccessEntryFactory() override;
void set_service_worker_context(ServiceWorkerContext* context) {
service_worker_context_ = context;
}
ServiceWorkerContext* GetServiceWorkerContext() override;
DedicatedWorkerService* GetDedicatedWorkerService() override;
void set_shared_worker_service(SharedWorkerService* service) {
shared_worker_service_ = service;
}
SharedWorkerService* GetSharedWorkerService() override;
storage::mojom::CacheStorageControl* GetCacheStorageControl() override;
void set_generated_code_cache_context(GeneratedCodeCacheContext* context) {
generated_code_cache_context_ = context;
}
GeneratedCodeCacheContext* GetGeneratedCodeCacheContext() override;
void set_platform_notification_context(PlatformNotificationContext* context) {
platform_notification_context_ = context;
}
PlatformNotificationContext* GetPlatformNotificationContext() override;
InterestGroupManager* GetInterestGroupManager() override;
AttributionDataModel* GetAttributionDataModel() override;
PrivateAggregationDataModel* GetPrivateAggregationDataModel() override;
CookieDeprecationLabelManager* GetCookieDeprecationLabelManager() override;
#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
CdmStorageDataModel* GetCdmStorageDataModel() override;
#endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
network::mojom::DeviceBoundSessionManager* GetDeviceBoundSessionManager()
override;
void set_device_bound_session_manager(
network::mojom::DeviceBoundSessionManager* device_bound_session_manager) {
device_bound_session_manager_ = device_bound_session_manager;
}
void DeleteStaleSessionData() override {}
void set_browsing_topics_site_data_manager(
BrowsingTopicsSiteDataManager* manager) {
browsing_topics_site_data_manager_ = manager;
}
BrowsingTopicsSiteDataManager* GetBrowsingTopicsSiteDataManager() override;
void set_devtools_background_services_context(
DevToolsBackgroundServicesContext* context) {
devtools_background_services_context_ = context;
}
DevToolsBackgroundServicesContext* GetDevToolsBackgroundServicesContext()
override;
leveldb_proto::ProtoDatabaseProvider* GetProtoDatabaseProvider() override;
void SetProtoDatabaseProvider(
std::unique_ptr<leveldb_proto::ProtoDatabaseProvider> proto_db_provider)
override;
leveldb_proto::ProtoDatabaseProvider* GetProtoDatabaseProviderForTesting()
override;
void set_content_index_context(ContentIndexContext* context) {
content_index_context_ = context;
}
ContentIndexContext* GetContentIndexContext() override;
void set_host_zoom_map(HostZoomMap* map) { host_zoom_map_ = map; }
HostZoomMap* GetHostZoomMap() override;
void set_host_zoom_level_context(HostZoomLevelContext* context) {
host_zoom_level_context_ = context;
}
HostZoomLevelContext* GetHostZoomLevelContext() override;
void set_zoom_level_delegate(ZoomLevelDelegate* delegate) {
zoom_level_delegate_ = delegate;
}
ZoomLevelDelegate* GetZoomLevelDelegate() override;
void ClearDataForOrigin(uint32_t remove_mask,
uint32_t quota_storage_remove_mask,
const GURL& storage_origin,
base::OnceClosure callback) override;
void ClearDataForBuckets(const blink::StorageKey& storage_key,
const std::set<std::string>& buckets,
base::OnceClosure callback) override;
void ClearData(uint32_t remove_mask,
uint32_t quota_storage_remove_mask,
const blink::StorageKey& storage_key,
const base::Time begin,
const base::Time end,
base::OnceClosure callback) override;
void ClearData(uint32_t remove_mask,
uint32_t quota_storage_remove_mask,
BrowsingDataFilterBuilder* filter_builder,
StorageKeyPolicyMatcherFunction storage_key_policy_matcher,
network::mojom::CookieDeletionFilterPtr cookie_deletion_filter,
bool perform_storage_cleanup,
const base::Time begin,
const base::Time end,
base::OnceClosure callback) override;
void ClearCodeCaches(
const base::Time begin,
const base::Time end,
const base::RepeatingCallback<bool(const GURL&)>& url_matcher,
base::OnceClosure callback) override;
void Flush() override;
void ResetURLLoaderFactories() override;
void AddObserver(DataRemovalObserver* observer) override;
void RemoveObserver(DataRemovalObserver* observer) override;
int GetDataRemovalObserverCount();
void ClearBluetoothAllowedDevicesMapForTesting() override;
void FlushNetworkInterfaceForTesting() override;
void FlushCertVerifierInterfaceForTesting() override;
void WaitForDeletionTasksForTesting() override;
void SetNetworkContextForTesting(
mojo::PendingRemote<network::mojom::NetworkContext>
network_context_remote) override;
void OverrideDeleteStaleSessionOnlyCookiesDelayForTesting(
const base::TimeDelta& delay) override {}
base::WeakPtr<StoragePartition> GetWeakPtr();
void InvalidateWeakPtrs();
private:
StoragePartitionConfig config_;
base::FilePath file_path_;
mojo::Remote<network::mojom::NetworkContext> network_context_remote_;
raw_ptr<network::mojom::NetworkContext, DanglingUntriaged> network_context_ =
nullptr;
raw_ptr<network::TestURLLoaderFactory> test_url_loader_factory_ = nullptr;
raw_ptr<network::mojom::CookieManager> cookie_manager_for_browser_process_ =
nullptr;
raw_ptr<storage::QuotaManager> quota_manager_ = nullptr;
raw_ptr<BackgroundSyncContext> background_sync_context_ = nullptr;
raw_ptr<storage::FileSystemContext> file_system_context_ = nullptr;
raw_ptr<DOMStorageContext> dom_storage_context_ = nullptr;
mojo::Remote<storage::mojom::LocalStorageControl> local_storage_control_;
mojo::Remote<storage::mojom::IndexedDBControl> indexed_db_control_;
raw_ptr<ServiceWorkerContext> service_worker_context_ = nullptr;
raw_ptr<DedicatedWorkerService> dedicated_worker_service_ = nullptr;
raw_ptr<SharedWorkerService> shared_worker_service_ = nullptr;
mojo::Remote<storage::mojom::CacheStorageControl> cache_storage_control_;
raw_ptr<GeneratedCodeCacheContext> generated_code_cache_context_ = nullptr;
raw_ptr<network::mojom::DeviceBoundSessionManager>
device_bound_session_manager_ = nullptr;
raw_ptr<BrowsingTopicsSiteDataManager> browsing_topics_site_data_manager_ =
nullptr;
raw_ptr<PlatformNotificationContext> platform_notification_context_ = nullptr;
raw_ptr<DevToolsBackgroundServicesContext>
devtools_background_services_context_ = nullptr;
raw_ptr<ContentIndexContext> content_index_context_ = nullptr;
raw_ptr<HostZoomMap> host_zoom_map_ = nullptr;
raw_ptr<HostZoomLevelContext> host_zoom_level_context_ = nullptr;
raw_ptr<ZoomLevelDelegate> zoom_level_delegate_ = nullptr;
int data_removal_observer_count_ = 0;
// This member must be the last member.
base::WeakPtrFactory<TestStoragePartition> weak_factory_{this};
};
} // namespace content
#endif // CONTENT_PUBLIC_TEST_TEST_STORAGE_PARTITION_H_